a4a2ac8f6333162204de6ad4a6f13a2de03ff5eb
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Fri Jan 28 08:37:22 EET 2000 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.com)
25
26 cat >/tmp/c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >/tmp/c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 p_=\;
69         fi
70 fi
71
72 : Proper PATH setting
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
81
82 for p in $paths
83 do
84         case "$p_$PATH$p_" in
85         *$p_$p$p_*) ;;
86         *) test -d $p && PATH=$PATH$p_$p ;;
87         esac
88 done
89
90 PATH=.$p_$PATH
91 export PATH
92
93 : shall we be using ksh?
94 inksh=''
95 needksh=''
96 avoidksh=''
97 newsh=/bin/ksh
98 changesh=''
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
100                 inksh=true
101 fi
102 if test -f /hp-ux -a -f /bin/ksh; then
103         needksh='to avoid sh bug in "here document" expansion'
104 fi
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106         if test X`/usr/bin/uname -v` = X4; then
107                 avoidksh="to avoid AIX 4's /bin/sh"
108                 newsh=/usr/bin/bsh
109         fi
110 fi
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112         if test X`/usr/bin/uname -s` = XOSF1; then
113                 avoidksh="to avoid Digital UNIX' ksh"
114                 newsh=/bin/sh
115                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116         fi
117 fi
118 case "$inksh/$needksh" in
119 /[a-z]*)
120                 ENV=''
121                 changesh=true
122                 reason="$needksh"
123         ;;
124 esac
125 case "$inksh/$avoidksh" in
126 true/[a-z]*)
127         changesh=true
128         reason="$avoidksh"
129         ;;
130 esac
131 case "$inksh/$needksh-$avoidksh-" in
132 true/--)
133                 cat <<EOM
134 (I see you are using the Korn shell.  Some ksh's blow up on $me,
135 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
136 EOM
137         ;;
138 esac
139 case "$changesh" in
140 true)
141         echo "(Feeding myself to $newsh $reason.)"
142         case "$0" in
143         Configure|*/Configure) exec $newsh $0 "$@";;
144         *) exec $newsh Configure "$@";;
145         esac
146         ;;
147 esac
148
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
151 case "$CDPATH" in
152 '')     ;;
153 *)      case "$SHELL" in
154         *bash*) CDPATH='.' ;;
155         *)              CDPATH='' ;;
156         esac
157         ;;
158 esac
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
161 cd UU && rm -f ./*
162
163 ccsymbols=''
164 cppccsymbols=''
165 cppsymbols=''
166 dynamic_ext=''
167 extensions=''
168 known_extensions=''
169 nonxs_ext=''
170 static_ext=''
171 useopcode=''
172 useposix=''
173 d_bsd=''
174 d_eunice=''
175 d_xenix=''
176 eunicefix=''
177 Mcc=''
178 ar=''
179 awk=''
180 bash=''
181 bison=''
182 byacc=''
183 cat=''
184 chgrp=''
185 chmod=''
186 chown=''
187 comm=''
188 compress=''
189 cp=''
190 cpio=''
191 cpp=''
192 csh=''
193 date=''
194 echo=''
195 egrep=''
196 emacs=''
197 expr=''
198 find=''
199 flex=''
200 grep=''
201 gzip=''
202 inews=''
203 ksh=''
204 less=''
205 line=''
206 lint=''
207 ln=''
208 lp=''
209 lpr=''
210 ls=''
211 mail=''
212 mailx=''
213 make=''
214 mkdir=''
215 more=''
216 mv=''
217 nm=''
218 nroff=''
219 perl=''
220 pg=''
221 pmake=''
222 pr=''
223 rm=''
224 rmail=''
225 sed=''
226 sendmail=''
227 shar=''
228 sleep=''
229 smail=''
230 sort=''
231 submit=''
232 tail=''
233 tar=''
234 tbl=''
235 tee=''
236 test=''
237 touch=''
238 tr=''
239 troff=''
240 uname=''
241 uniq=''
242 uuname=''
243 vi=''
244 zcat=''
245 zip=''
246 full_ar=''
247 full_sed=''
248 libswanted=''
249 hint=''
250 myuname=''
251 osname=''
252 osvers=''
253 Author=''
254 Date=''
255 Header=''
256 Id=''
257 Locker=''
258 Log=''
259 RCSfile=''
260 Revision=''
261 Source=''
262 State=''
263 _a=''
264 _exe=''
265 _o=''
266 archobjs=''
267 exe_ext=''
268 firstmakefile=''
269 lib_ext=''
270 obj_ext=''
271 path_sep=''
272 afs=''
273 alignbytes=''
274 ansi2knr=''
275 archlib=''
276 archlibexp=''
277 d_archlib=''
278 installarchlib=''
279 archname=''
280 myarchname=''
281 d_atolf=''
282 d_atoll=''
283 baserev=''
284 bin=''
285 binexp=''
286 installbin=''
287 bincompat5005=''
288 d_bincompat5005=''
289 byteorder=''
290 cc=''
291 gccversion=''
292 ccflags=''
293 cppflags=''
294 ldflags=''
295 lkflags=''
296 locincpth=''
297 optimize=''
298 cf_email=''
299 cf_by=''
300 cf_time=''
301 charsize=''
302 contains=''
303 cpp_stuff=''
304 cpplast=''
305 cppminus=''
306 cpprun=''
307 cppstdin=''
308 crosscompile=''
309 d_access=''
310 d_accessx=''
311 d_alarm=''
312 d_attribut=''
313 d_bcmp=''
314 d_bcopy=''
315 d_bzero=''
316 d_casti32=''
317 castflags=''
318 d_castneg=''
319 d_chown=''
320 d_chroot=''
321 d_chsize=''
322 d_closedir=''
323 d_void_closedir=''
324 d_const=''
325 cryptlib=''
326 d_crypt=''
327 d_csh=''
328 full_csh=''
329 d_cuserid=''
330 d_dbl_dig=''
331 d_difftime=''
332 d_dlerror=''
333 d_dlopen=''
334 d_dlsymun=''
335 d_dosuid=''
336 d_suidsafe=''
337 d_drand48proto=''
338 d_dup2=''
339 d_eaccess=''
340 d_endgrent=''
341 d_endhent=''
342 d_endnent=''
343 d_endpent=''
344 d_endpwent=''
345 d_endsent=''
346 d_endspent=''
347 d_fchmod=''
348 d_fchown=''
349 d_fcntl=''
350 d_fd_macros=''
351 d_fd_set=''
352 d_fds_bits=''
353 d_fgetpos=''
354 d_flexfnam=''
355 d_flock=''
356 d_fork=''
357 d_fs_data_s=''
358 d_fseeko=''
359 d_fsetpos=''
360 d_fstatfs=''
361 d_ftello=''
362 d_ftime=''
363 d_gettimeod=''
364 d_Gconvert=''
365 d_getgrent=''
366 d_getgrps=''
367 d_gethbyaddr=''
368 d_gethbyname=''
369 d_gethent=''
370 aphostname=''
371 d_gethname=''
372 d_phostname=''
373 d_uname=''
374 d_gethostprotos=''
375 d_getlogin=''
376 d_getmnt=''
377 d_getmntent=''
378 d_getnbyaddr=''
379 d_getnbyname=''
380 d_getnent=''
381 d_getnetprotos=''
382 d_getpent=''
383 d_getpgid=''
384 d_getpgrp2=''
385 d_bsdgetpgrp=''
386 d_getpgrp=''
387 d_getppid=''
388 d_getprior=''
389 d_getpbyname=''
390 d_getpbynumber=''
391 d_getprotoprotos=''
392 d_getpwent=''
393 d_getsent=''
394 d_getservprotos=''
395 d_getspent=''
396 d_getspnam=''
397 d_getsbyname=''
398 d_getsbyport=''
399 d_gnulibc=''
400 d_hasmntopt=''
401 d_htonl=''
402 d_inetaton=''
403 d_int64t=''
404 d_isascii=''
405 d_killpg=''
406 d_lchown=''
407 d_ldbl_dig=''
408 d_link=''
409 d_locconv=''
410 d_lockf=''
411 d_longdbl=''
412 longdblsize=''
413 d_longlong=''
414 longlongsize=''
415 d_lstat=''
416 d_mblen=''
417 d_mbstowcs=''
418 d_mbtowc=''
419 d_memchr=''
420 d_memcmp=''
421 d_memcpy=''
422 d_memmove=''
423 d_memset=''
424 d_mkdir=''
425 d_mkfifo=''
426 d_mktime=''
427 d_msg=''
428 d_msgctl=''
429 d_msgget=''
430 d_msgrcv=''
431 d_msgsnd=''
432 d_nice=''
433 d_open3=''
434 d_fpathconf=''
435 d_pathconf=''
436 d_pause=''
437 d_pipe=''
438 d_poll=''
439 d_portable=''
440 d_old_pthread_create_joinable=''
441 old_pthread_create_joinable=''
442 d_pthread_yield=''
443 d_sched_yield=''
444 sched_yield=''
445 d_readdir=''
446 d_rewinddir=''
447 d_seekdir=''
448 d_telldir=''
449 d_readlink=''
450 d_rename=''
451 d_rmdir=''
452 d_safebcpy=''
453 d_safemcpy=''
454 d_sanemcmp=''
455 d_select=''
456 d_sem=''
457 d_semctl=''
458 d_semget=''
459 d_semop=''
460 d_setegid=''
461 d_seteuid=''
462 d_setgrent=''
463 d_setgrps=''
464 d_sethent=''
465 d_setlinebuf=''
466 d_setlocale=''
467 d_setnent=''
468 d_setpent=''
469 d_setpgid=''
470 d_setpgrp2=''
471 d_bsdsetpgrp=''
472 d_setpgrp=''
473 d_setprior=''
474 d_setpwent=''
475 d_setregid=''
476 d_setresgid=''
477 d_setresuid=''
478 d_setreuid=''
479 d_setrgid=''
480 d_setruid=''
481 d_setsent=''
482 d_setsid=''
483 d_setspent=''
484 d_setvbuf=''
485 d_sfio=''
486 usesfio=''
487 d_shm=''
488 d_shmat=''
489 d_shmatprototype=''
490 shmattype=''
491 d_shmctl=''
492 d_shmdt=''
493 d_shmget=''
494 d_sigaction=''
495 d_sigsetjmp=''
496 d_msg_ctrunc=''
497 d_msg_dontroute=''
498 d_msg_oob=''
499 d_msg_peek=''
500 d_msg_proxy=''
501 d_oldsock=''
502 d_scm_rights=''
503 d_socket=''
504 d_sockpair=''
505 sockethdr=''
506 socketlib=''
507 d_sqrtl=''
508 d_statblks=''
509 d_statfs_f_flags=''
510 d_statfs_s=''
511 d_fstatvfs=''
512 d_statvfs=''
513 d_stdio_cnt_lval=''
514 d_stdio_ptr_lval=''
515 d_stdiobase=''
516 d_stdstdio=''
517 stdio_base=''
518 stdio_bufsiz=''
519 stdio_cnt=''
520 stdio_filbuf=''
521 stdio_ptr=''
522 d_index=''
523 d_strchr=''
524 d_strcoll=''
525 d_strctcpy=''
526 d_strerrm=''
527 d_strerror=''
528 d_sysernlst=''
529 d_syserrlst=''
530 d_strtod=''
531 d_strtol=''
532 d_strtold=''
533 d_strtoll=''
534 d_strtoul=''
535 d_strtoull=''
536 d_strtouq=''
537 d_strxfrm=''
538 d_symlink=''
539 d_syscall=''
540 d_sysconf=''
541 d_system=''
542 d_tcgetpgrp=''
543 d_tcsetpgrp=''
544 d_telldirproto=''
545 d_time=''
546 timetype=''
547 clocktype=''
548 d_times=''
549 d_truncate=''
550 d_tzname=''
551 d_umask=''
552 d_semctl_semid_ds=''
553 d_semctl_semun=''
554 d_union_semun=''
555 d_ustat=''
556 d_vfork=''
557 usevfork=''
558 d_voidsig=''
559 signal_t=''
560 d_volatile=''
561 d_charvspr=''
562 d_vprintf=''
563 d_wait4=''
564 d_waitpid=''
565 d_wcstombs=''
566 d_wctomb=''
567 dlext=''
568 cccdlflags=''
569 ccdlflags=''
570 dlsrc=''
571 ld=''
572 lddlflags=''
573 usedl=''
574 doublesize=''
575 ebcdic=''
576 fflushNULL=''
577 fflushall=''
578 fpossize=''
579 fpostype=''
580 gidformat=''
581 gidsign=''
582 gidsize=''
583 gidtype=''
584 groupstype=''
585 h_fcntl=''
586 h_sysfile=''
587 i_arpainet=''
588 db_hashtype=''
589 db_prefixtype=''
590 i_db=''
591 i_dbm=''
592 i_rpcsvcdbm=''
593 d_dirnamlen=''
594 direntrytype=''
595 i_dirent=''
596 i_dld=''
597 i_dlfcn=''
598 i_fcntl=''
599 i_float=''
600 i_gdbm=''
601 d_grpasswd=''
602 i_grp=''
603 i_inttypes=''
604 i_limits=''
605 i_locale=''
606 i_machcthr=''
607 i_malloc=''
608 i_math=''
609 i_memory=''
610 i_mntent=''
611 i_ndbm=''
612 i_netdb=''
613 i_neterrno=''
614 i_netinettcp=''
615 i_niin=''
616 i_sysin=''
617 i_poll=''
618 i_pthread=''
619 d_pwage=''
620 d_pwchange=''
621 d_pwclass=''
622 d_pwcomment=''
623 d_pwexpire=''
624 d_pwgecos=''
625 d_pwpasswd=''
626 d_pwquota=''
627 i_pwd=''
628 i_sfio=''
629 i_shadow=''
630 i_socks=''
631 i_stddef=''
632 i_stdlib=''
633 i_string=''
634 strings=''
635 i_sysaccess=''
636 i_sysdir=''
637 i_sysfile=''
638 d_voidtty=''
639 i_bsdioctl=''
640 i_sysfilio=''
641 i_sysioctl=''
642 i_syssockio=''
643 i_sysmount=''
644 i_sysndir=''
645 i_sysparam=''
646 i_sysresrc=''
647 i_syssecrt=''
648 i_sysselct=''
649 i_sysstat=''
650 i_sysstatfs=''
651 i_sysstatvfs=''
652 i_systimes=''
653 i_systypes=''
654 i_sysuio=''
655 i_sysun=''
656 i_sysvfs=''
657 i_syswait=''
658 i_sgtty=''
659 i_termio=''
660 i_termios=''
661 i_systime=''
662 i_systimek=''
663 i_time=''
664 timeincl=''
665 i_unistd=''
666 i_ustat=''
667 i_utime=''
668 i_values=''
669 i_stdarg=''
670 i_varargs=''
671 i_varhdr=''
672 i_vfork=''
673 inc_version_list=''
674 inc_version_list_init=''
675 installprefix=''
676 installprefixexp=''
677 installstyle=''
678 installusrbinperl=''
679 intsize=''
680 longsize=''
681 shortsize=''
682 d_fpos64_t=''
683 d_off64_t=''
684 libc=''
685 ldlibpthname=''
686 libperl=''
687 shrpenv=''
688 useshrplib=''
689 glibpth=''
690 libpth=''
691 loclibpth=''
692 plibpth=''
693 xlibpth=''
694 ignore_versioned_solibs=''
695 libs=''
696 lns=''
697 d_PRIEldbl=''
698 d_PRIFldbl=''
699 d_PRIGldbl=''
700 d_PRIeldbl=''
701 d_PRIfldbl=''
702 d_PRIgldbl=''
703 sPRIEldbl=''
704 sPRIFldbl=''
705 sPRIGldbl=''
706 sPRIeldbl=''
707 sPRIfldbl=''
708 sPRIgldbl=''
709 lseeksize=''
710 lseektype=''
711 make_set_make=''
712 d_mymalloc=''
713 freetype=''
714 mallocobj=''
715 mallocsrc=''
716 malloctype=''
717 usemymalloc=''
718 installman1dir=''
719 man1dir=''
720 man1direxp=''
721 man1ext=''
722 installman3dir=''
723 man3dir=''
724 man3direxp=''
725 man3ext=''
726 huge=''
727 large=''
728 medium=''
729 models=''
730 small=''
731 split=''
732 modetype=''
733 multiarch=''
734 mydomain=''
735 myhostname=''
736 phostname=''
737 c=''
738 n=''
739 d_eofnblk=''
740 eagain=''
741 o_nonblock=''
742 rd_nodata=''
743 netdb_hlen_type=''
744 netdb_host_type=''
745 netdb_name_type=''
746 netdb_net_type=''
747 groupcat=''
748 hostcat=''
749 passcat=''
750 orderlib=''
751 ranlib=''
752 package=''
753 spackage=''
754 pager=''
755 api_revision=''
756 api_subversion=''
757 api_version=''
758 api_versionstring=''
759 patchlevel=''
760 subversion=''
761 version=''
762 perladmin=''
763 perlpath=''
764 d_nv_preserves_uv=''
765 i16size=''
766 i16type=''
767 i32size=''
768 i32type=''
769 i64size=''
770 i64type=''
771 i8size=''
772 i8type=''
773 ivsize=''
774 ivtype=''
775 nvsize=''
776 nvtype=''
777 u16size=''
778 u16type=''
779 u32size=''
780 u32type=''
781 u64size=''
782 u64type=''
783 u8size=''
784 u8type=''
785 uvsize=''
786 uvtype=''
787 ivdformat=''
788 uvoformat=''
789 uvuformat=''
790 uvxformat=''
791 pidtype=''
792 prefix=''
793 prefixexp=''
794 installprivlib=''
795 privlib=''
796 privlibexp=''
797 prototype=''
798 ptrsize=''
799 d_PRIX64=''
800 d_PRId64=''
801 d_PRIi64=''
802 d_PRIo64=''
803 d_PRIu64=''
804 d_PRIx64=''
805 sPRIX64=''
806 sPRId64=''
807 sPRIi64=''
808 sPRIo64=''
809 sPRIu64=''
810 sPRIx64=''
811 d_quad=''
812 quadkind=''
813 quadtype=''
814 uquadtype=''
815 drand01=''
816 randbits=''
817 randfunc=''
818 randseedtype=''
819 seedfunc=''
820 installscript=''
821 scriptdir=''
822 scriptdirexp=''
823 selectminbits=''
824 selecttype=''
825 sh=''
826 sig_count=''
827 sig_name=''
828 sig_name_init=''
829 sig_num=''
830 sig_num_init=''
831 installsitearch=''
832 sitearch=''
833 sitearchexp=''
834 installsitebin=''
835 sitebin=''
836 sitebinexp=''
837 installsitelib=''
838 sitelib=''
839 sitelibexp=''
840 siteprefix=''
841 siteprefixexp=''
842 sizetype=''
843 so=''
844 sharpbang=''
845 shsharp=''
846 spitshell=''
847 src=''
848 ssizetype=''
849 startperl=''
850 startsh=''
851 stdchar=''
852 d_stdio_stream_array=''
853 stdio_stream_array=''
854 sysman=''
855 trnl=''
856 uidformat=''
857 uidsign=''
858 uidsize=''
859 uidtype=''
860 archname64=''
861 use64bits=''
862 uselargefiles=''
863 uselongdouble=''
864 uselonglong=''
865 usemorebits=''
866 usemultiplicity=''
867 nm_opt=''
868 nm_so_opt=''
869 runnm=''
870 usenm=''
871 useperlio=''
872 usesocks=''
873 d_oldpthreads=''
874 use5005threads=''
875 useithreads=''
876 usethreads=''
877 incpath=''
878 mips_type=''
879 usrinc=''
880 d_vendorbin=''
881 installvendorbin=''
882 vendorbin=''
883 vendorbinexp=''
884 d_vendorlib=''
885 installvendorlib=''
886 vendorlib=''
887 vendorlibexp=''
888 usevendorprefix=''
889 vendorprefix=''
890 vendorprefixexp=''
891 defvoidused=''
892 voidflags=''
893 CONFIG=''
894
895 define='define'
896 undef='undef'
897 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
898 rmlist=''
899
900 : We must find out about Eunice early
901 eunicefix=':'
902 if test -f /etc/unixtovms; then
903         eunicefix=/etc/unixtovms
904 fi
905 if test -f /etc/unixtovms.exe; then
906         eunicefix=/etc/unixtovms.exe
907 fi
908
909 i_whoami=''
910 : set useposix=false in your hint file to disable the POSIX extension.
911 useposix=true
912 : set useopcode=false in your hint file to disable the Opcode extension.
913 useopcode=true
914 : Trailing extension.  Override this in a hint file, if needed.
915 _exe=''
916 : Extra object files, if any, needed on this platform.
917 archobjs=''
918 : Possible local include directories to search.
919 : Set locincpth to "" in a hint file to defeat local include searches.
920 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
921 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
922 :
923 : no include file wanted by default
924 inclwanted=''
925
926 groupstype=''
927 : change the next line if compiling for Xenix/286 on Xenix/386
928 xlibpth='/usr/lib/386 /lib/386'
929
930 : Possible local library directories to search.
931 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
932 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
933
934 : general looking path for locating libraries
935 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
936 glibpth="$glibpth /lib /usr/lib $xlibpth"
937 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
938 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
939
940 : Private path used by Configure to find libraries.  Its value
941 : is prepended to libpth. This variable takes care of special
942 : machines, like the mips.  Usually, it should be empty.
943 plibpth=''
944
945 : default library list
946 libswanted=''
947 : some systems want to use only the non-versioned libso:s
948 ignore_versioned_solibs=''
949 : set usemultiplicity on the Configure command line to enable multiplicity.
950 : set usesocks on the Configure command line to enable socks.
951 : set usethreads on the Configure command line to enable threads.
952 : full support for void wanted by default
953 defvoidused=15
954
955 : List of libraries we want.
956 : If anyone needs -lnet, put it in a hint file.
957 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
958 libswanted="$libswanted dld ld sun m c cposix posix"
959 libswanted="$libswanted ndir dir crypt sec"
960 libswanted="$libswanted ucb bsd BSD PW x"
961 : We probably want to search /usr/shlib before most other libraries.
962 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
963 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
964 glibpth="/usr/shlib $glibpth"
965 : Do not use vfork unless overridden by a hint file.
966 usevfork=false
967
968 : Find the basic shell for Bourne shell scripts
969 case "$sh" in
970 '')
971         case "$SYSTYPE" in
972         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
973         *) xxx='/bin/sh';;
974         esac
975         if test -f "$xxx"; then
976                 sh="$xxx"
977         else
978                 : Build up a list and do a single loop so we can 'break' out.
979                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
980                 for xxx in sh bash ksh pdksh ash; do
981                         for p in $pth; do
982                                 try="$try ${p}/${xxx}"
983                         done
984                 done
985                 for xxx in $try; do
986                         if test -f "$xxx"; then
987                                 sh="$xxx";
988                                 break
989                         elif test -f "$xxx.exe"; then
990                                 sh="$xxx";
991                                 break
992                         fi
993                 done
994         fi
995         ;;
996 esac
997
998 case "$sh" in
999 '')     cat <<EOM >&2
1000 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1001
1002 Usually it's in /bin/sh.  How did you even get this far?
1003 Please contact me (Perl Maintainers) at perlbug@perl.com and 
1004 we'll try to straighten this all out.
1005 EOM
1006         exit 1
1007         ;;
1008 esac
1009
1010 : see if sh knows # comments
1011 if `$sh -c '#' >/dev/null 2>&1`; then
1012         shsharp=true
1013         spitshell=cat
1014         xcat=/bin/cat
1015         test -f $xcat || xcat=/usr/bin/cat
1016         echo "#!$xcat" >try
1017         $eunicefix try
1018         chmod +x try
1019         ./try > today
1020         if test -s today; then
1021                 sharpbang='#!'
1022         else
1023                 echo "#! $xcat" > try
1024                 $eunicefix try
1025                 chmod +x try
1026                 ./try > today
1027                 if test -s today; then
1028                         sharpbang='#! '
1029                 else
1030                         sharpbang=': use '
1031                 fi
1032         fi
1033 else
1034         echo " "
1035         echo "Your $sh doesn't grok # comments--I will strip them later on."
1036         shsharp=false
1037         cd ..
1038         echo "exec grep -v '^[  ]*#'" >spitshell
1039         chmod +x spitshell
1040         $eunicefix spitshell
1041         spitshell=`pwd`/spitshell
1042         cd UU
1043         echo "I presume that if # doesn't work, #! won't work either!"
1044         sharpbang=': use '
1045 fi
1046 rm -f try today
1047
1048 : figure out how to guarantee sh startup
1049 case "$startsh" in
1050 '') startsh=${sharpbang}${sh} ;;
1051 *)
1052 esac
1053 cat >try <<EOSS
1054 $startsh
1055 set abc
1056 test "$?abc" != 1
1057 EOSS
1058
1059 chmod +x try
1060 $eunicefix try
1061 if ./try; then
1062         : echo "Yup, it does."
1063 else
1064         echo "Hmm... '$startsh' does not guarantee sh startup..."
1065         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1066 fi
1067 rm -f try
1068
1069
1070 : Save command line options in file UU/cmdline.opt for later use in
1071 : generating config.sh.
1072 cat > cmdline.opt <<EOSH
1073 # Configure command line arguments.
1074 config_arg0='$0'
1075 config_args='$*'
1076 config_argc=$#
1077 EOSH
1078 argn=1
1079 for arg in "$@"; do
1080         cat >>cmdline.opt <<EOSH
1081 config_arg$argn='$arg'
1082 EOSH
1083         argn=`expr $argn + 1`
1084 done
1085
1086 : produce awk script to parse command line options
1087 cat >options.awk <<'EOF'
1088 BEGIN {
1089         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1090
1091         len = length(optstr);
1092         for (i = 1; i <= len; i++) {
1093                 c = substr(optstr, i, 1);
1094                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1095                 if (a == ":") {
1096                         arg[c] = 1;
1097                         i++;
1098                 }
1099                 opt[c] = 1;
1100         }
1101 }
1102 {
1103         expect = 0;
1104         str = $0;
1105         if (substr(str, 1, 1) != "-") {
1106                 printf("'%s'\n", str);
1107                 next;
1108         }
1109         len = length($0);
1110         for (i = 2; i <= len; i++) {
1111                 c = substr(str, i, 1);
1112                 if (!opt[c]) {
1113                         printf("-%s\n", substr(str, i));
1114                         next;
1115                 }
1116                 printf("-%s\n", c);
1117                 if (arg[c]) {
1118                         if (i < len)
1119                                 printf("'%s'\n", substr(str, i + 1));
1120                         else
1121                                 expect = 1;
1122                         next;
1123                 }
1124         }
1125 }
1126 END {
1127         if (expect)
1128                 print "?";
1129 }
1130 EOF
1131
1132 : process the command line options
1133 set X `for arg in "$@"; do echo "X$arg"; done |
1134         sed -e s/X// | awk -f options.awk`
1135 eval "set $*"
1136 shift
1137 rm -f options.awk
1138
1139 : set up default values
1140 fastread=''
1141 reuseval=false
1142 config_sh=''
1143 alldone=''
1144 error=''
1145 silent=''
1146 extractsh=''
1147 override=''
1148 knowitall=''
1149 rm -f optdef.sh posthint.sh
1150 cat >optdef.sh <<EOS
1151 $startsh
1152 EOS
1153
1154
1155 : option parsing
1156 while test $# -gt 0; do
1157         case "$1" in
1158         -d) shift; fastread=yes;;
1159         -e) shift; alldone=cont;;
1160         -f)
1161                 shift
1162                 cd ..
1163                 if test -r "$1"; then
1164                         config_sh="$1"
1165                 else
1166                         echo "$me: cannot read config file $1." >&2
1167                         error=true
1168                 fi
1169                 cd UU
1170                 shift;;
1171         -h) shift; error=true;;
1172         -r) shift; reuseval=true;;
1173         -s) shift; silent=true; realsilent=true;;
1174         -E) shift; alldone=exit;;
1175         -K) shift; knowitall=true;;
1176         -O) shift; override=true;;
1177         -S) shift; silent=true; extractsh=true;;
1178         -D)
1179                 shift
1180                 case "$1" in
1181                 *=)
1182                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1183                         echo "$me: ignoring -D $1" >&2
1184                         ;;
1185                 *=*) echo "$1" | \
1186                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1187                 *) echo "$1='define'" >> optdef.sh;;
1188                 esac
1189                 shift
1190                 ;;
1191         -U)
1192                 shift
1193                 case "$1" in
1194                 *=) echo "$1" >> optdef.sh;;
1195                 *=*)
1196                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1197                         echo "$me: ignoring -U $1" >&2
1198                         ;;
1199                 *) echo "$1='undef'" >> optdef.sh;;
1200                 esac
1201                 shift
1202                 ;;
1203         -A)
1204             shift
1205             xxx=''
1206             yyy="$1"
1207             zzz=''
1208             uuu=undef
1209             case "$yyy" in
1210             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1211                  case "$zzz" in
1212                  *:*) zzz='' ;;
1213                  *)   xxx=append
1214                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1215                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1216                  esac
1217                  ;;
1218             esac
1219             case "$xxx" in
1220             '')  case "$yyy" in
1221                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1222                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1223                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1224                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1225                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1226                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1227                  esac
1228                  ;;       
1229             esac
1230             case "$xxx" in
1231             append)
1232                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1233             clear)
1234                 echo "$yyy=''"                  >> posthint.sh ;;
1235             define)
1236                 case "$zzz" in
1237                 '') zzz=define ;;
1238                 esac
1239                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1240             eval)
1241                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1242             prepend)
1243                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1244             undef)
1245                 case "$zzz" in
1246                 '') zzz="$uuu" ;;
1247                 esac
1248                 echo "$yyy=$zzz"                >> posthint.sh ;;
1249             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1250             esac
1251             ;;
1252         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1253             exit 0;;
1254         --) break;;
1255         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1256         *) break;;
1257         esac
1258 done
1259
1260 case "$error" in
1261 true)
1262         cat >&2 <<EOM
1263 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1264                  [-U symbol] [-U symbol=] [-A command:symbol...]
1265   -d : use defaults for all answers.
1266   -e : go on without questioning past the production of config.sh.
1267   -f : specify an alternate default configuration file.
1268   -h : print this help message and exit (with an error status).
1269   -r : reuse C symbols value if possible (skips costly nm extraction).
1270   -s : silent mode, only echoes questions and essential information.
1271   -D : define symbol to have some value:
1272          -D symbol         symbol gets the value 'define'
1273          -D symbol=value   symbol gets the value 'value'
1274   -E : stop at the end of questions, after having produced config.sh.
1275   -K : do not use unless you know what you are doing.
1276   -O : let -D and -U override definitions from loaded configuration file.
1277   -S : perform variable substitutions on all .SH files (can mix with -f)
1278   -U : undefine symbol:
1279          -U symbol    symbol gets the value 'undef'
1280          -U symbol=   symbol gets completely empty
1281   -A : manipulate symbol after the platform specific hints have been applied:
1282          -A symbol=value                append " "value to symbol
1283          -A append:symbol=value         append value to symbol
1284          -A define:symbol=value         define symbol to have value
1285          -A clear:symbol                define symbol to be ''
1286          -A define:symbol               define symbol to be 'define'
1287          -A eval:symbol=value           define symbol to be eval of value
1288          -A prepend:symbol=value        prepend value to symbol
1289          -A undef:symbol                define symbol to be 'undef'
1290          -A undef:symbol=               define symbol to be ''
1291   -V : print version number and exit (with a zero status).
1292 EOM
1293         exit 1
1294         ;;
1295 esac
1296
1297 : Sanity checks
1298 case "$fastread$alldone" in
1299 yescont|yesexit) ;;
1300 *)
1301         if test ! -t 0; then
1302                 echo "Say 'sh Configure', not 'sh <Configure'"
1303                 exit 1
1304         fi
1305         ;;
1306 esac
1307
1308 exec 4>&1
1309 case "$silent" in
1310 true) exec 1>/dev/null;;
1311 esac
1312
1313 : run the defines and the undefines, if any, but leave the file out there...
1314 touch optdef.sh
1315 . ./optdef.sh
1316 : create the posthint manipulation script and leave the file out there...
1317 touch posthint.sh
1318
1319 : set package name
1320 package=perl5
1321 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1322 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1323 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1324 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1325 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1326 esac
1327
1328 : Some greps do not return status, grrr.
1329 echo "grimblepritz" >grimble
1330 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1331         contains=contains
1332 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1333         contains=grep
1334 else
1335         contains=contains
1336 fi
1337 rm -f grimble
1338 : the following should work in any shell
1339 case "$contains" in
1340 contains*)
1341         echo " "
1342         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1343         cat >contains <<'EOSS'
1344 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1345 EOSS
1346 chmod +x contains
1347 esac
1348
1349 : Find the path to the source tree
1350 case "$src" in
1351 '') case "$0" in
1352     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1353          case "$src" in
1354          /*)    ;;
1355          *)     src=`cd ../$src && pwd` ;;
1356          esac
1357          ;;
1358     *)   src='.';;
1359     esac;;
1360 esac
1361 case "$src" in
1362 '')     src=/
1363         rsrc=/
1364         ;;
1365 /*) rsrc="$src";;
1366 *) rsrc="../$src";;
1367 esac
1368 if test -f $rsrc/Configure && \
1369         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1370 then
1371    : found it, so we are ok.
1372 else
1373         rsrc=''
1374         for src in . .. ../.. ../../.. ../../../..; do
1375                 if test -f ../$src/Configure && \
1376                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1377                 then
1378                         rsrc=../$src
1379                         break
1380                 fi
1381         done
1382 fi
1383 case "$rsrc" in
1384 '')
1385         cat <<EOM >&4
1386
1387 Sorry, I can't seem to locate the source dir for $package.  Please start
1388 Configure with an explicit path -- i.e. /some/path/Configure.
1389
1390 EOM
1391         exit 1
1392         ;;
1393 ../.)   rsrc='..';;
1394 *)
1395         echo " "
1396         echo "Sources for $package found in \"$src\"." >&4
1397         ;;
1398 esac
1399
1400 : script used to extract .SH files with variable substitutions
1401 cat >extract <<'EOS'
1402 CONFIGDOTSH=true
1403 echo "Doing variable substitutions on .SH files..."
1404 if test -f $src/MANIFEST; then
1405         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1406 else
1407         echo "(Looking for .SH files under the source directory.)"
1408         set x `(cd $src; find . -name "*.SH" -print)`
1409 fi
1410 shift
1411 case $# in
1412 0) set x `(cd $src; echo *.SH)`; shift;;
1413 esac
1414 if test ! -f $src/$1; then
1415         shift
1416 fi
1417 mkdir_p='
1418 name=$1;
1419 create="";
1420 while test $name; do
1421         if test ! -d "$name"; then
1422                 create="$name $create";
1423                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1424                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1425         else
1426                 name="";
1427         fi;
1428 done;
1429 for file in $create; do
1430         mkdir $file;
1431 done
1432 '
1433 for file in $*; do
1434         case "$src" in
1435         ".")
1436                 case "$file" in
1437                 */*)
1438                         dir=`expr X$file : 'X\(.*\)/'`
1439                         file=`expr X$file : 'X.*/\(.*\)'`
1440                         (cd $dir && . ./$file)
1441                         ;;
1442                 *)
1443                         . ./$file
1444                         ;;
1445                 esac
1446                 ;;
1447         *)
1448                 case "$file" in
1449                 */*)
1450                         dir=`expr X$file : 'X\(.*\)/'`
1451                         file=`expr X$file : 'X.*/\(.*\)'`
1452                         (set x $dir; shift; eval $mkdir_p)
1453                         sh <$src/$dir/$file
1454                         ;;
1455                 *)
1456                         sh <$src/$file
1457                         ;;
1458                 esac
1459                 ;;
1460         esac
1461 done
1462 if test -f $src/config_h.SH; then
1463         if test ! -f config.h; then
1464         : oops, they left it out of MANIFEST, probably, so do it anyway.
1465         . $src/config_h.SH
1466         fi
1467 fi
1468 EOS
1469
1470 : extract files and exit if asked to do so
1471 case "$extractsh" in
1472 true)
1473         case "$realsilent" in
1474         true) ;;
1475         *) exec 1>&4;;
1476         esac
1477         case "$config_sh" in
1478         '') config_sh='config.sh';;
1479         esac
1480         echo " "
1481         echo "Fetching answers from $config_sh..."
1482         cd ..
1483         . $config_sh
1484         test "$override" && . ./optdef.sh
1485         echo " "
1486         . UU/extract
1487         rm -rf UU
1488         echo "Done."
1489         exit 0
1490         ;;
1491 esac
1492
1493 : Eunice requires " " instead of "", can you believe it
1494 echo " "
1495 : Here we go...
1496 echo "Beginning of configuration questions for $package."
1497
1498 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1499
1500 : first determine how to suppress newline on echo command
1501 echo " "
1502 echo "Checking echo to see how to suppress newlines..."
1503 (echo "hi there\c" ; echo " ") >.echotmp
1504 if $contains c .echotmp >/dev/null 2>&1 ; then
1505         echo "...using -n."
1506         n='-n'
1507         c=''
1508 else
1509         cat <<'EOM'
1510 ...using \c
1511 EOM
1512         n=''
1513         c='\c'
1514 fi
1515 echo $n "The star should be here-->$c"
1516 echo '*'
1517 rm -f .echotmp
1518
1519 : Now test for existence of everything in MANIFEST
1520 echo " "
1521 if test -f $rsrc/MANIFEST; then
1522         echo "First let's make sure your kit is complete.  Checking..." >&4
1523         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1524         rm -f missing
1525         tmppwd=`pwd`
1526         for filelist in x??; do
1527                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1528         done
1529         if test -s missing; then
1530                 cat missing >&4
1531                 cat >&4 <<'EOM'
1532
1533 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1534
1535 You have the option of continuing the configuration process, despite the
1536 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1537 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1538 and contact the author (perlbug@perl.com).
1539
1540 EOM
1541                 echo $n "Continue? [n] $c" >&4
1542                 read ans
1543                 case "$ans" in
1544                 y*)
1545                         echo "Continuing..." >&4
1546                         rm -f missing
1547                         ;;
1548                 *)
1549                         echo "ABORTING..." >&4
1550                         kill $$
1551                         ;;
1552                 esac
1553         else
1554                 echo "Looks good..."
1555         fi
1556 else
1557         echo "There is no MANIFEST file.  I hope your kit is complete !"
1558 fi
1559 rm -f missing x??
1560
1561 echo " "
1562 : Find the appropriate value for a newline for tr
1563 if test -n "$DJGPP"; then
1564        trnl='\012'
1565 fi
1566 if test X"$trnl" = X; then
1567         case "`echo foo|tr '\n' x 2>/dev/null`" in
1568         foox) trnl='\n' ;;
1569         esac
1570 fi
1571 if test X"$trnl" = X; then
1572         case "`echo foo|tr '\012' x 2>/dev/null`" in
1573         foox) trnl='\012' ;;
1574         esac
1575 fi
1576 if test X"$trnl" = X; then
1577         cat <<EOM >&2
1578
1579 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1580
1581 EOM
1582         exit 1
1583 fi
1584
1585 : compute the number of columns on the terminal for proper question formatting
1586 case "$COLUMNS" in
1587 '') COLUMNS='80';;
1588 esac
1589
1590 : set up the echo used in my read
1591 myecho="case \"\$xxxm\" in
1592 '') echo $n \"\$rp $c\" >&4;;
1593 *) case \"\$rp\" in
1594         '') echo $n \"[\$xxxm] $c\";;
1595         *)
1596                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1597                         echo \"\$rp\" >&4
1598                         echo $n \"[\$xxxm] $c\" >&4
1599                 else
1600                         echo $n \"\$rp [\$xxxm] $c\" >&4
1601                 fi
1602                 ;;
1603         esac;;
1604 esac"
1605
1606 : now set up to do reads with possible shell escape and default assignment
1607 cat <<EOSC >myread
1608 $startsh
1609 xxxm=\$dflt
1610 $myecho
1611 ans='!'
1612 case "\$fastread" in
1613 yes) case "\$dflt" in
1614         '') ;;
1615         *) ans='';
1616                 case "\$silent-\$rp" in
1617                 true-) ;;
1618                 *) echo " " >&4;;
1619                 esac;;
1620         esac;;
1621 *) case "\$silent" in
1622         true) case "\$rp" in
1623                 '') ans='';;
1624                 esac;;
1625         esac;;
1626 esac
1627 while expr "X\$ans" : "X!" >/dev/null; do
1628         read answ
1629         set x \$xxxm
1630         shift
1631         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1632         case  "\$answ" in
1633         "!")
1634                 sh 1>&4
1635                 echo " "
1636                 $myecho
1637                 ;;
1638         !*)
1639                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1640                 shift
1641                 sh 1>&4 -c "\$*"
1642                 echo " "
1643                 $myecho
1644                 ;;
1645         "\$ans")
1646                 case "\$ans" in
1647                 \\&*)
1648                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1649                         shift
1650                         case "\$1" in
1651                         -d)
1652                                 fastread=yes
1653                                 echo "(OK, I'll run with -d after this question.)" >&4
1654                                 ;;
1655                         -*)
1656                                 echo "*** Sorry, \$1 not supported yet." >&4
1657                                 ;;
1658                         esac
1659                         $myecho
1660                         ans=!
1661                         ;;
1662                 esac;;
1663         *)
1664                 case "\$aok" in
1665                 y)
1666                         echo "*** Substitution done -- please confirm."
1667                         xxxm="\$ans"
1668                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1669                         xxxm="\$ans"
1670                         ans=!
1671                         ;;
1672                 *)
1673                         echo "*** Error -- try again."
1674                         ans=!
1675                         ;;
1676                 esac
1677                 $myecho
1678                 ;;
1679         esac
1680         case "\$ans\$xxxm\$nostick" in
1681         '')
1682                 ans=!
1683                 $myecho
1684                 ;;
1685         esac
1686 done
1687 case "\$ans" in
1688 '') ans="\$xxxm";;
1689 esac
1690 EOSC
1691
1692 : create .config dir to save info across Configure sessions
1693 test -d ../.config || mkdir ../.config
1694 cat >../.config/README <<EOF
1695 This directory created by Configure to save information that should
1696 persist across sessions for $package.
1697
1698 You may safely delete it if you wish.
1699 EOF
1700
1701 : general instructions
1702 needman=true
1703 firsttime=true
1704 user=`(logname) 2>/dev/null`
1705 case "$user" in
1706 '') user=`whoami 2>&1`;;
1707 esac
1708 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1709         firsttime=false
1710         echo " "
1711         rp='Would you like to see the instructions?'
1712         dflt=n
1713         . ./myread
1714         case "$ans" in
1715         [yY]*) ;;
1716         *) needman=false;;
1717         esac
1718 fi
1719 if $needman; then
1720         cat <<EOH
1721
1722 This installation shell script will examine your system and ask you questions
1723 to determine how the perl5 package should be installed. If you get
1724 stuck on a question, you may use a ! shell escape to start a subshell or
1725 execute a command.  Many of the questions will have default answers in square
1726 brackets; typing carriage return will give you the default.
1727
1728 On some of the questions which ask for file or directory names you are allowed
1729 to use the ~name construct to specify the login directory belonging to "name",
1730 even if you don't have a shell which knows about that.  Questions where this is
1731 allowed will be marked "(~name ok)".
1732
1733 EOH
1734         rp=''
1735         dflt='Type carriage return to continue'
1736         . ./myread
1737         cat <<'EOH'
1738
1739 The prompter used in this script allows you to use shell variables and
1740 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1741 in the default answer, as if the default line was a set of arguments given to a
1742 script shell.  This means you may also use $* to repeat the whole default line,
1743 so you do not have to re-type everything to add something to the default.
1744
1745 Everytime there is a substitution, you will have to confirm.  If there is an
1746 error (e.g. an unmatched backtick), the default answer will remain unchanged
1747 and you will be prompted again.
1748
1749 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1750 the questions and use the computed defaults (or the previous answers if there
1751 was already a config.sh file). Type 'Configure -h' for a list of options.
1752 You may also start interactively and then answer '& -d' at any prompt to turn
1753 on the non-interactive behaviour for the remainder of the execution.
1754
1755 EOH
1756         . ./myread
1757         cat <<EOH
1758
1759 Much effort has been expended to ensure that this shell script will run on any
1760 Unix system.  If despite that it blows up on yours, your best bet is to edit
1761 Configure and run it again.  If you can't run Configure for some reason,
1762 you'll have to generate a config.sh file by hand.  Whatever problems you
1763 have, let me (perlbug@perl.com) know how I blew it.
1764
1765 This installation script affects things in two ways:
1766
1767 1) it may do direct variable substitutions on some of the files included
1768    in this kit.
1769 2) it builds a config.h file for inclusion in C programs.  You may edit
1770    any of these files as the need arises after running this script.
1771
1772 If you make a mistake on a question, there is no easy way to back up to it
1773 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1774 files.  Configure will offer to let you do this before it runs the SH files.
1775
1776 EOH
1777         dflt='Type carriage return to continue'
1778         . ./myread
1779         case "$firsttime" in
1780         true) echo $user >>../.config/instruct;;
1781         esac
1782 fi
1783
1784 : find out where common programs are
1785 echo " "
1786 echo "Locating common programs..." >&4
1787 cat <<EOSC >loc
1788 $startsh
1789 case \$# in
1790 0) exit 1;;
1791 esac
1792 thing=\$1
1793 shift
1794 dflt=\$1
1795 shift
1796 for dir in \$*; do
1797         case "\$thing" in
1798         .)
1799         if test -d \$dir/\$thing; then
1800                 echo \$dir
1801                 exit 0
1802         fi
1803         ;;
1804         *)
1805         for thisthing in \$dir/\$thing; do
1806                 : just loop through to pick last item
1807         done
1808         if test -f \$thisthing; then
1809                 echo \$thisthing
1810                 exit 0
1811         elif test -f \$dir/\$thing.exe; then
1812                 if test -n "$DJGPP"; then
1813                         echo \$dir/\$thing.exe
1814                 else
1815                         : on Eunice apparently
1816                         echo \$dir/\$thing
1817                 fi
1818                 exit 0
1819         fi
1820         ;;
1821         esac
1822 done
1823 echo \$dflt
1824 exit 1
1825 EOSC
1826 chmod +x loc
1827 $eunicefix loc
1828 loclist="
1829 awk
1830 cat
1831 comm
1832 cp
1833 echo
1834 expr
1835 grep
1836 ls
1837 make
1838 mkdir
1839 rm
1840 sed
1841 sort
1842 touch
1843 tr
1844 uniq
1845 "
1846 trylist="
1847 Mcc
1848 ar
1849 byacc
1850 cpp
1851 csh
1852 date
1853 egrep
1854 gzip
1855 less
1856 ln
1857 more
1858 nm
1859 nroff
1860 perl
1861 pg
1862 test
1863 uname
1864 zip
1865 "
1866 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1867 pth="$pth /lib /usr/lib"
1868 for file in $loclist; do
1869         eval xxx=\$$file
1870         case "$xxx" in
1871         /*|?:[\\/]*)
1872                 if test -f "$xxx"; then
1873                         : ok
1874                 else
1875                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1876                         xxx=`./loc $file $file $pth`
1877                 fi
1878                 ;;
1879         '') xxx=`./loc $file $file $pth`;;
1880         *) xxx=`./loc $xxx $xxx $pth`;;
1881         esac
1882         eval $file=$xxx
1883         eval _$file=$xxx
1884         case "$xxx" in
1885         /*)
1886                 echo $file is in $xxx.
1887                 ;;
1888         ?:[\\/]*)
1889                 echo $file is in $xxx.
1890                 ;;
1891         *)
1892                 echo "I don't know where '$file' is, and my life depends on it." >&4
1893                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1894                 exit 1
1895                 ;;
1896         esac
1897 done
1898 echo " "
1899 echo "Don't worry if any of the following aren't found..."
1900 say=offhand
1901 for file in $trylist; do
1902         eval xxx=\$$file
1903         case "$xxx" in
1904         /*|?:[\\/]*)
1905                 if test -f "$xxx"; then
1906                         : ok
1907                 else
1908                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1909                         xxx=`./loc $file $file $pth`
1910                 fi
1911                 ;;
1912         '') xxx=`./loc $file $file $pth`;;
1913         *) xxx=`./loc $xxx $xxx $pth`;;
1914         esac
1915         eval $file=$xxx
1916         eval _$file=$xxx
1917         case "$xxx" in
1918         /*)
1919                 echo $file is in $xxx.
1920                 ;;
1921         ?:[\\/]*)
1922                 echo $file is in $xxx.
1923                 ;;
1924         *)
1925                 echo "I don't see $file out there, $say."
1926                 say=either
1927                 ;;
1928         esac
1929 done
1930 case "$egrep" in
1931 egrep)
1932         echo "Substituting grep for egrep."
1933         egrep=$grep
1934         ;;
1935 esac
1936 case "$ln" in
1937 ln)
1938         echo "Substituting cp for ln."
1939         ln=$cp
1940         ;;
1941 esac
1942 case "$test" in
1943 test)
1944         echo "Hopefully test is built into your sh."
1945         ;;
1946 *)
1947         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1948                 echo "Using the test built into your sh."
1949                 test=test
1950                 _test=test
1951         fi
1952         ;;
1953 esac
1954 case "$echo" in
1955 echo)
1956         echo "Hopefully echo is built into your sh."
1957         ;;
1958 '') ;;
1959 *)
1960         echo " "
1961 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1962         $echo $n "hi there$c" >foo1
1963         echo $n "hi there$c" >foo2
1964         if cmp foo1 foo2 >/dev/null 2>&1; then
1965                 echo "They are compatible.  In fact, they may be identical."
1966         else
1967                 case "$n" in
1968                 '-n') n='' c='\c';;
1969                 *) n='-n' c='';;
1970                 esac
1971                 cat <<FOO
1972 They are not compatible!  You are probably running ksh on a non-USG system.
1973 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1974 have echo built in and we may have to run some Bourne shell scripts.  That
1975 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
1976
1977 FOO
1978                 $echo $n "The star should be here-->$c"
1979                 $echo "*"
1980         fi
1981         $rm -f foo1 foo2
1982         ;;
1983 esac
1984
1985 : determine whether symbolic links are supported
1986 echo " "
1987 $touch blurfl
1988 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1989         echo "Symbolic links are supported." >&4
1990         lns="$ln -s"
1991 else
1992         echo "Symbolic links are NOT supported." >&4
1993         lns="$ln"
1994 fi
1995 $rm -f blurfl sym
1996
1997 : see whether [:lower:] and [:upper:] are supported character classes
1998 echo " "
1999 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2000 ABYZ)
2001         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2002         up='[:upper:]'
2003         low='[:lower:]'
2004         ;;
2005 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2006         # (0xc9 and 0xd1), therefore that is a nice testing point.
2007         if test "X$up" = X -o "X$low" = X; then
2008             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2009             ij) up='[A-Z]'
2010                 low='[a-z]'
2011                 ;;
2012             esac
2013         fi
2014         if test "X$up" = X -o "X$low" = X; then
2015             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2016             ij) up='A-Z'
2017                 low='a-z'
2018                 ;;
2019             esac
2020         fi
2021         if test "X$up" = X -o "X$low" = X; then
2022             case "`echo IJ | od -x 2>/dev/null`" in
2023             *C9D1*|*c9d1*)
2024                 echo "Hey, this might be EBCDIC." >&4
2025                 if test "X$up" = X -o "X$low" = X; then
2026                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2027                     ij) up='[A-IJ-RS-Z]'
2028                         low='[a-ij-rs-z]'
2029                         ;;
2030                     esac
2031                 fi
2032                 if test "X$up" = X -o "X$low" = X; then
2033                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2034                     ij) up='A-IJ-RS-Z'
2035                         low='a-ij-rs-z'
2036                         ;;
2037                     esac
2038                 fi
2039                 ;;
2040             esac
2041         fi
2042 esac
2043 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2044 ij)
2045     echo "Using $up and $low to convert case." >&4
2046     ;;
2047 *)
2048     echo "I don't know how to translate letters from upper to lower case." >&4
2049     echo "Your tr is not acting any way I know of." >&4
2050     exit 1
2051     ;;
2052 esac
2053 : set up the translation script tr, must be called with ./tr of course
2054 cat >tr <<EOSC
2055 $startsh
2056 case "\$1\$2" in
2057 '[A-Z][a-z]') exec $tr '$up' '$low';;
2058 '[a-z][A-Z]') exec $tr '$low' '$up';;
2059 esac
2060 exec $tr "\$@"
2061 EOSC
2062 chmod +x tr
2063 $eunicefix tr
2064
2065 : Try to determine whether config.sh was made on this system
2066 case "$config_sh" in
2067 '')
2068 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
2069 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2070 # because the A-Z/a-z are not consecutive.
2071 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2072         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2073 newmyuname="$myuname"
2074 dflt=n
2075 case "$knowitall" in
2076 '')
2077         if test -f ../config.sh; then
2078                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2079                         eval "`grep myuname= ../config.sh`"
2080                 fi
2081                 if test "X$myuname" = "X$newmyuname"; then
2082                         dflt=y
2083                 fi
2084         fi
2085         ;;
2086 *) dflt=y;;
2087 esac
2088
2089 : Get old answers from old config file if Configure was run on the
2090 : same system, otherwise use the hints.
2091 hint=default
2092 cd ..
2093 if test -f config.sh; then
2094         echo " "
2095         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2096         . UU/myread
2097         case "$ans" in
2098         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2099         *)  echo "Fetching default answers from your old config.sh file..." >&4
2100                 tmp_n="$n"
2101                 tmp_c="$c"
2102                 tmp_sh="$sh"
2103                 . ./config.sh
2104                 cp config.sh UU
2105                 n="$tmp_n"
2106                 c="$tmp_c"
2107                 : Older versions did not always set $sh.  Catch re-use of such
2108                 : an old config.sh.
2109                 case "$sh" in
2110                 '') sh="$tmp_sh" ;;
2111                 esac
2112                 hint=previous
2113                 ;;
2114         esac
2115 fi
2116 if test ! -f config.sh; then
2117         $cat <<EOM
2118
2119 First time through, eh?  I have some defaults handy for some systems
2120 that need some extra help getting the Configure answers right:
2121
2122 EOM
2123         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2124         dflt=''
2125         : Half the following guesses are probably wrong... If you have better
2126         : tests or hints, please send them to perlbug@perl.com
2127         : The metaconfig authors would also appreciate a copy...
2128         $test -f /irix && osname=irix
2129         $test -f /xenix && osname=sco_xenix
2130         $test -f /dynix && osname=dynix
2131         $test -f /dnix && osname=dnix
2132         $test -f /lynx.os && osname=lynxos
2133         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2134         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2135         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2136         $test -f /bin/mips && /bin/mips && osname=mips
2137         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2138                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2139         $test -d /usr/apollo/bin && osname=apollo
2140         $test -f /etc/saf/_sactab && osname=svr4
2141         $test -d /usr/include/minix && osname=minix
2142         if $test -d /MachTen -o -d /MachTen_Folder; then
2143                 osname=machten
2144                 if $test -x /sbin/version; then
2145                         osvers=`/sbin/version | $awk '{print $2}' |
2146                         $sed -e 's/[A-Za-z]$//'`
2147                 elif $test -x /usr/etc/version; then
2148                         osvers=`/usr/etc/version | $awk '{print $2}' |
2149                         $sed -e 's/[A-Za-z]$//'`
2150                 else
2151                         osvers="$2.$3"
2152                 fi
2153         fi
2154
2155         $test -f /sys/posix.dll &&
2156                 $test -f /usr/bin/what &&
2157                 set X `/usr/bin/what /sys/posix.dll` &&
2158                 $test "$3" = UWIN &&
2159                 osname=uwin &&
2160                 osvers="$5"
2161
2162         if $test -f $uname; then
2163                 set X $myuname
2164                 shift
2165
2166                 case "$5" in
2167                 fps*) osname=fps ;;
2168                 mips*)
2169                         case "$4" in
2170                         umips) osname=umips ;;
2171                         *) osname=mips ;;
2172                         esac;;
2173                 [23]100) osname=mips ;;
2174                 next*) osname=next ;;
2175                 i386*)
2176                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2177                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2178                                 osname='sco'
2179                                 osvers=$tmp
2180                         elif $test -f /etc/kconfig; then
2181                                 osname=isc
2182                                 if test "$lns" = "$ln -s"; then
2183                                         osvers=4
2184                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2185                                         osvers=3
2186                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2187                                         osvers=2
2188                                 fi
2189                         fi
2190                         tmp=''
2191                         ;;
2192                 pc*)
2193                         if test -n "$DJGPP"; then
2194                                 osname=dos
2195                                 osvers=djgpp
2196                         fi
2197                         ;;
2198                 esac
2199
2200                 case "$1" in
2201                 aix) osname=aix
2202                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2203                         case "$tmp" in
2204                         'not found') osvers="$4"."$3" ;;
2205                         '<3240'|'<>3240') osvers=3.2.0 ;;
2206                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2207                         '=3250'|'>3250') osvers=3.2.5 ;;
2208                         *) osvers=$tmp;;
2209                         esac
2210                         ;;
2211                 bsd386) osname=bsd386
2212                         osvers=`$uname -r`
2213                         ;;
2214                 cygwin*) osname=cygwin
2215                         osvers="$3"
2216                         ;;
2217                 *dc.osx) osname=dcosx
2218                         osvers="$3"
2219                         ;;
2220                 dnix) osname=dnix
2221                         osvers="$3"
2222                         ;;
2223                 domainos) osname=apollo
2224                         osvers="$3"
2225                         ;;
2226                 dgux) osname=dgux 
2227                         osvers="$3"
2228                         ;;
2229                 dynixptx*) osname=dynixptx
2230                         osvers=`echo "$4"|sed 's/^v//'`
2231                         ;;
2232                 freebsd) osname=freebsd 
2233                         osvers="$3" ;;
2234                 genix) osname=genix ;;
2235                 hp*) osname=hpux 
2236                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2237                         ;;
2238                 irix*) osname=irix
2239                         case "$3" in
2240                         4*) osvers=4 ;;
2241                         5*) osvers=5 ;;
2242                         *)      osvers="$3" ;;
2243                         esac
2244                         ;;
2245                 linux) osname=linux
2246                         case "$3" in
2247                         *)      osvers="$3" ;;
2248                         esac
2249                         ;;
2250                 MiNT) osname=mint
2251                         ;;
2252                 netbsd*) osname=netbsd
2253                         osvers="$3"
2254                         ;;
2255                 news-os) osvers="$3"
2256                         case "$3" in
2257                         4*) osname=newsos4 ;;
2258                         *) osname=newsos ;;
2259                         esac
2260                         ;;
2261                 next*) osname=next ;;
2262                 POSIX-BC | posix-bc ) osname=posix-bc
2263                         osvers="$3"
2264                         ;;
2265                 powerux | power_ux | powermax_os | powermaxos | \
2266                 powerunix | power_unix) osname=powerux
2267                         osvers="$3"
2268                         ;;
2269                 qnx) osname=qnx
2270                         osvers="$4"
2271                         ;;
2272                 solaris) osname=solaris
2273                         case "$3" in
2274                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2275                         *)      osvers="$3" ;;
2276                         esac
2277                         ;;
2278                 sunos) osname=sunos
2279                         case "$3" in
2280                         5*) osname=solaris
2281                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2282                         *)      osvers="$3" ;;
2283                         esac
2284                         ;;
2285                 titanos) osname=titanos
2286                         case "$3" in
2287                         1*) osvers=1 ;;
2288                         2*) osvers=2 ;;
2289                         3*) osvers=3 ;;
2290                         4*) osvers=4 ;;
2291                         *)      osvers="$3" ;;
2292                         esac
2293                         ;;
2294                 ultrix) osname=ultrix
2295                         osvers="$3"
2296                         ;;
2297                 osf1|mls+)      case "$5" in
2298                                 alpha)
2299                                         osname=dec_osf
2300                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2301                                         ;;
2302                         hp*)    osname=hp_osf1  ;;
2303                         mips)   osname=mips_osf1 ;;
2304                         esac
2305                         ;;
2306                 unixware) osname=svr5
2307                         osvers="$4"
2308                         ;;
2309                 uts) osname=uts
2310                         osvers="$3"
2311                         ;;
2312                 $2) case "$osname" in
2313                         *isc*) ;;
2314                         *freebsd*) ;;
2315                         svr*)
2316                                 : svr4.x or possibly later
2317                                 case "svr$3" in 
2318                                 ${osname}*)
2319                                         osname=svr$3
2320                                         osvers=$4
2321                                         ;;
2322                                 esac
2323                                 case "$osname" in
2324                                 svr4.0)
2325                                         : Check for ESIX
2326                                         if test -f /stand/boot ; then
2327                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2328                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2329                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2330                                                         if test -n "$isesix"; then
2331                                                                 osname=esix4
2332                                                         fi
2333                                                 fi
2334                                         fi
2335                                         ;;
2336                                 esac
2337                                 ;;
2338                         *)      if test -f /etc/systemid; then
2339                                         osname=sco
2340                                         set `echo $3 | $sed 's/\./ /g'` $4
2341                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2342                                                 osvers=$1.$2.$3
2343                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2344                                                 osvers=$1.$2
2345                                         elif $test -f $src/hints/sco_$1.sh; then
2346                                                 osvers=$1
2347                                         fi
2348                                 else
2349                                         case "$osname" in
2350                                         '') : Still unknown.  Probably a generic Sys V.
2351                                                 osname="sysv"
2352                                                 osvers="$3"
2353                                                 ;;
2354                                         esac
2355                                 fi
2356                                 ;;
2357                         esac
2358                         ;;
2359                 *)      case "$osname" in
2360                         '') : Still unknown.  Probably a generic BSD.
2361                                 osname="$1"
2362                                 osvers="$3"
2363                                 ;;
2364                         esac
2365                         ;;
2366                 esac
2367         else
2368                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2369                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2370                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2371                                 osname=news_os
2372                         fi
2373                         $rm -f UU/kernel.what
2374                 elif test -d c:/.; then
2375                         set X $myuname
2376                         osname=os2
2377                         osvers="$5"
2378                 fi
2379         fi
2380         
2381         : Now look for a hint file osname_osvers, unless one has been
2382         : specified already.
2383         case "$hintfile" in
2384         ''|' ')
2385                 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2386                 : Also try without trailing minor version numbers.
2387                 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2388                 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2389                 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2390                 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2391                 case "$file" in
2392                 '') dflt=none ;;
2393                 *)  case "$osvers" in
2394                         '') dflt=$file
2395                                 ;;
2396                         *)  if $test -f $src/hints/$file.sh ; then
2397                                         dflt=$file
2398                                 elif $test -f $src/hints/$xfile.sh ; then
2399                                         dflt=$xfile
2400                                 elif $test -f $src/hints/$xxfile.sh ; then
2401                                         dflt=$xxfile
2402                                 elif $test -f $src/hints/$xxxfile.sh ; then
2403                                         dflt=$xxxfile
2404                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2405                                         dflt=$xxxxfile
2406                                 elif $test -f "$src/hints/${osname}.sh" ; then
2407                                         dflt="${osname}"
2408                                 else
2409                                         dflt=none
2410                                 fi
2411                                 ;;
2412                         esac
2413                         ;;
2414                 esac
2415                 if $test -f Policy.sh ; then
2416                         case "$dflt" in
2417                         *Policy*) ;;
2418                         none) dflt="Policy" ;;
2419                         *) dflt="Policy $dflt" ;;
2420                         esac
2421                 fi
2422                 ;;
2423         *)
2424                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2425                 ;;
2426         esac
2427
2428         if $test -f Policy.sh ; then
2429                 $cat <<EOM
2430
2431 There's also a Policy hint file available, which should make the
2432 site-specific (policy) questions easier to answer.
2433 EOM
2434
2435         fi
2436
2437         $cat <<EOM
2438
2439 You may give one or more space-separated answers, or "none" if appropriate.
2440 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2441 is a good thing.  DO NOT give a wrong version or a wrong OS.
2442
2443 EOM
2444
2445         rp="Which of these apply, if any?"
2446         . UU/myread
2447         tans=$ans
2448         for file in $tans; do
2449                 if $test X$file = XPolicy -a -f Policy.sh; then
2450                         . Policy.sh
2451                         $cat Policy.sh >> UU/config.sh
2452                 elif $test -f $src/hints/$file.sh; then
2453                         . $src/hints/$file.sh
2454                         $cat $src/hints/$file.sh >> UU/config.sh
2455                 elif $test X$tans = X -o X$tans = Xnone ; then
2456                         : nothing
2457                 else
2458                         : Give one chance to correct a possible typo.
2459                         echo "$file.sh does not exist"
2460                         dflt=$file
2461                         rp="hint to use instead?"
2462                         . UU/myread
2463                         for file in $ans; do
2464                                 if $test -f "$src/hints/$file.sh"; then
2465                                         . $src/hints/$file.sh
2466                                         $cat $src/hints/$file.sh >> UU/config.sh
2467                                 elif $test X$ans = X -o X$ans = Xnone ; then
2468                                         : nothing
2469                                 else
2470                                         echo "$file.sh does not exist -- ignored."
2471                                 fi
2472                         done
2473                 fi
2474         done
2475
2476         hint=recommended
2477         : Remember our hint file for later.
2478         if $test -f "$src/hints/$file.sh" ; then
2479                 hintfile="$file"
2480         else
2481                 hintfile=''
2482         fi
2483 fi
2484 cd UU
2485 ;;
2486 *)
2487         echo " "
2488         echo "Fetching default answers from $config_sh..." >&4
2489         tmp_n="$n"
2490         tmp_c="$c"
2491         cd ..
2492         cp $config_sh config.sh 2>/dev/null
2493         chmod +w config.sh
2494         . ./config.sh
2495         cd UU
2496         cp ../config.sh .
2497         n="$tmp_n"
2498         c="$tmp_c"
2499         hint=previous
2500         ;;
2501 esac
2502 test "$override" && . ./optdef.sh
2503 myuname="$newmyuname"
2504
2505 : Restore computed paths
2506 for file in $loclist $trylist; do
2507         eval $file="\$_$file"
2508 done
2509
2510 cat << EOM
2511
2512 Configure uses the operating system name and version to set some defaults.
2513 The default value is probably right if the name rings a bell. Otherwise,
2514 since spelling matters for me, either accept the default or answer "none"
2515 to leave it blank.
2516
2517 EOM
2518 case "$osname" in
2519         ''|' ')
2520                 case "$hintfile" in
2521                 ''|' '|none) dflt=none ;;
2522                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2523                 esac
2524                 ;;
2525         *) dflt="$osname" ;;
2526 esac
2527 rp="Operating system name?"
2528 . ./myread
2529 case "$ans" in
2530 none)  osname='' ;;
2531 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2532 esac
2533 echo " "
2534 case "$osvers" in
2535         ''|' ')
2536                 case "$hintfile" in
2537                 ''|' '|none) dflt=none ;;
2538                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2539                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2540                         case "$dflt" in
2541                         ''|' ') dflt=none ;;
2542                         esac
2543                         ;;
2544                 esac
2545                 ;;
2546         *) dflt="$osvers" ;;
2547 esac
2548 rp="Operating system version?"
2549 . ./myread
2550 case "$ans" in
2551 none)  osvers='' ;;
2552 *) osvers="$ans" ;;
2553 esac
2554
2555
2556 . ./posthint.sh
2557
2558 : who configured the system
2559 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2560 cf_by=`(logname) 2>/dev/null`
2561 case "$cf_by" in
2562 "")
2563         cf_by=`(whoami) 2>/dev/null`
2564         case "$cf_by" in
2565         "") cf_by=unknown ;;
2566         esac ;;
2567 esac
2568
2569 : set up the script used to warn in case of inconsistency
2570 cat <<EOS >whoa
2571 $startsh
2572 EOS
2573 cat <<'EOSC' >>whoa
2574 dflt=y
2575 echo " "
2576 echo "*** WHOA THERE!!! ***" >&4
2577 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2578 rp="    Keep the $hint value?"
2579 . ./myread
2580 case "$ans" in
2581 y) td=$was; tu=$was;;
2582 esac
2583 EOSC
2584
2585 : function used to set $1 to $val
2586 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2587 case "$val$was" in
2588 $define$undef) . ./whoa; eval "$var=\$td";;
2589 $undef$define) . ./whoa; eval "$var=\$tu";;
2590 *) eval "$var=$val";;
2591 esac'
2592
2593 cat <<EOM
2594
2595 Perl can be built to take advantage of threads, on some systems.
2596 To do so, Configure must be run with -Dusethreads.
2597
2598 Note that threading is a highly experimental feature, and
2599 some known race conditions still remain.  If you choose to try
2600 it, be very sure to not actually deploy it for production
2601 purposes.  README.threads has more details, and is required
2602 reading if you enable threads.
2603 EOM
2604 case "$usethreads" in
2605 $define|true|[yY]*)     dflt='y';;
2606 *) dflt='n';;
2607 esac
2608 rp='Build a threading Perl?'
2609 . ./myread
2610 case "$ans" in
2611 y|Y)    val="$define" ;;
2612 *)      val="$undef" ;;
2613 esac
2614 set usethreads
2615 eval $setvar
2616
2617 case "$usethreads" in
2618 $define)
2619         $cat <<EOM
2620
2621 As of 5.5.640, Perl has two different internal threading implementations,
2622 the 5.005 version (5005threads) and an interpreter-based version
2623 (ithreads) that has one interpreter per thread.  Both are very 
2624 experimental.  This arrangement exists to help developers work out
2625 which one is better.
2626 EOM
2627         : Default to ithreads unless overridden on command line or with
2628         : old config.sh
2629         dflt='y'
2630         case "$use5005threads" in
2631                 $define|true|[yY]*) dflt='n';;
2632         esac
2633         case "$useithreads" in
2634                 $undef|false|[nN]*) dflt='n';;
2635         esac
2636         rp='Use interpreter-based ithreads?'
2637         . ./myread
2638         case "$ans" in
2639         y|Y)    val="$define" ;;
2640         *)      val="$undef" ;;
2641         esac
2642         set useithreads
2643         eval $setvar
2644         : Now set use5005threads to the opposite value.
2645         case "$useithreads" in
2646         $define) val="$undef" ;;
2647         *) val="$define" ;;
2648         esac
2649         set use5005threads
2650         eval $setvar
2651         ;;
2652 *)
2653         useithreads="$undef"
2654         use5005threads="$undef"
2655         ;;
2656 esac
2657
2658 case "$d_oldpthreads" in
2659 '')     : Configure tests would be welcome here.  For now, assume undef.
2660         val="$undef" ;;
2661 *)      val="$d_oldpthreads" ;;
2662 esac
2663 set d_oldpthreads
2664 eval $setvar
2665
2666
2667 case "$usethreads" in
2668 "$define"|true|[yY]*)
2669 : Look for a hint-file generated 'call-back-unit'.  If the
2670 : user has specified that a threading perl is to be built,
2671 : we may need to set or change some other defaults.
2672         if $test -f usethreads.cbu; then
2673                 echo "Your platform has some specific hints for threaded builds, using them..."
2674                 . ./usethreads.cbu
2675         else
2676                 $cat <<EOM
2677 (Your platform doesn't have any specific hints for threaded builds.
2678  Assuming POSIX threads, then.)
2679 EOM
2680         fi
2681         ;;
2682 esac
2683
2684 cat <<EOM
2685
2686 Perl can be built so that multiple Perl interpreters can coexist
2687 within the same Perl executable.
2688 EOM
2689
2690 case "$useithreads" in
2691 $define)
2692         cat <<EOM
2693 This multiple interpreter support is required for interpreter-based threads.
2694 EOM
2695         val="$define"
2696         ;;
2697 *)
2698         echo 'Normally you do not need this and you should answer no.'
2699         case "$usemultiplicity" in
2700         $define|true|[yY]*)     dflt='y';;
2701         *) dflt='n';;
2702         esac
2703         rp='Build Perl for multiplicity?'
2704         . ./myread
2705         case "$ans" in
2706         y|Y)    val="$define" ;;
2707         *)      val="$undef" ;;
2708         esac
2709         ;;
2710 esac
2711 set usemultiplicity
2712 eval $setvar
2713
2714 : determine where manual pages are on this system
2715 echo " "
2716 case "$sysman" in
2717 '') 
2718         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2719         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2720         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2721         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2722         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2723         sysman=`./loc . /usr/man/man1 $syspath`
2724         ;;
2725 esac
2726 if $test -d "$sysman"; then
2727         echo "System manual is in $sysman." >&4
2728 else
2729         echo "Could not find manual pages in source form." >&4
2730 fi
2731
2732 : see what memory models we can support
2733 case "$models" in
2734 '')
2735         $cat >pdp11.c <<'EOP'
2736 int main() {
2737 #ifdef pdp11
2738         exit(0);
2739 #else
2740         exit(1);
2741 #endif
2742 }
2743 EOP
2744         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2745         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2746                 dflt='unsplit split'
2747         else
2748                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2749                 case "$tans" in
2750                 X) dflt='none';;
2751                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2752                                 dflt='small'
2753                         else
2754                                 dflt=''
2755                         fi
2756                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2757                                 dflt="$dflt medium"
2758                         fi
2759                         if $test -d /lib/large || $test -d /usr/lib/large; then
2760                                 dflt="$dflt large"
2761                         fi
2762                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2763                                 dflt="$dflt huge"
2764                         fi
2765                 esac
2766         fi;;
2767 *) dflt="$models";;
2768 esac
2769 $cat <<EOM
2770  
2771 Some systems have different model sizes.  On most systems they are called
2772 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2773 split.  If your system doesn't support different memory models, say "none".
2774 If you wish to force everything to one memory model, say "none" here and
2775 put the appropriate flags later when it asks you for other cc and ld flags.
2776 Venix systems may wish to put "none" and let the compiler figure things out.
2777 (In the following question multiple model names should be space separated.)
2778
2779 The default for most systems is "none".
2780
2781 EOM
2782 rp="Which memory models are supported?"
2783 . ./myread
2784 models="$ans"
2785
2786 case "$models" in
2787 none)
2788         small=''
2789         medium=''
2790         large=''
2791         huge=''
2792         unsplit=''
2793         split=''
2794         ;;
2795 *split)
2796         case "$split" in
2797         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2798                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2799                         dflt='-i'
2800                 else
2801                         dflt='none'
2802                 fi;;
2803         *) dflt="$split";;
2804         esac
2805         rp="What flag indicates separate I and D space?"
2806         . ./myread
2807         tans="$ans"
2808         case "$tans" in
2809         none) tans='';;
2810         esac
2811         split="$tans"
2812         unsplit='';;
2813 *large*|*small*|*medium*|*huge*)
2814         case "$models" in
2815         *large*)
2816                 case "$large" in
2817                 '') dflt='-Ml';;
2818                 *) dflt="$large";;
2819                 esac
2820         rp="What flag indicates large model?"
2821         . ./myread
2822         tans="$ans"
2823         case "$tans" in
2824         none) tans='';
2825         esac
2826         large="$tans";;
2827         *) large='';;
2828         esac
2829         case "$models" in
2830         *huge*) case "$huge" in
2831                 '') dflt='-Mh';;
2832                 *) dflt="$huge";;
2833                 esac
2834                 rp="What flag indicates huge model?"
2835                 . ./myread
2836                 tans="$ans"
2837                 case "$tans" in
2838                 none) tans='';
2839                 esac
2840                 huge="$tans";;
2841         *) huge="$large";;
2842         esac
2843         case "$models" in
2844         *medium*) case "$medium" in
2845                 '') dflt='-Mm';;
2846                 *) dflt="$medium";;
2847                 esac
2848                 rp="What flag indicates medium model?"
2849                 . ./myread
2850                 tans="$ans"
2851                 case "$tans" in
2852                 none) tans='';
2853                 esac
2854                 medium="$tans";;
2855         *) medium="$large";;
2856         esac
2857         case "$models" in
2858         *small*) case "$small" in
2859                 '') dflt='none';;
2860                 *) dflt="$small";;
2861                 esac
2862                 rp="What flag indicates small model?"
2863                 . ./myread
2864                 tans="$ans"
2865                 case "$tans" in
2866                 none) tans='';
2867                 esac
2868                 small="$tans";;
2869         *) small='';;
2870         esac
2871         ;;
2872 *)
2873         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2874         ;;
2875 esac
2876 $rm -f pdp11.* pdp11
2877
2878 : make some quick guesses about what we are up against
2879 echo " "
2880 $echo $n "Hmm...  $c"
2881 echo exit 1 >bsd
2882 echo exit 1 >usg
2883 echo exit 1 >v7
2884 echo exit 1 >osf1
2885 echo exit 1 >eunice
2886 echo exit 1 >xenix
2887 echo exit 1 >venix
2888 echo exit 1 >os2
2889 d_bsd="$undef"
2890 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2891 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2892 then
2893         echo "Looks kind of like an OSF/1 system, but we'll see..."
2894         echo exit 0 >osf1
2895 elif test `echo abc | tr a-z A-Z` = Abc ; then
2896         xxx=`./loc addbib blurfl $pth`
2897         if $test -f $xxx; then
2898         echo "Looks kind of like a USG system with BSD features, but we'll see..."
2899                 echo exit 0 >bsd
2900                 echo exit 0 >usg
2901         else
2902                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2903                         echo "Looks kind of like an extended USG system, but we'll see..."
2904                 else
2905                         echo "Looks kind of like a USG system, but we'll see..."
2906                 fi
2907                 echo exit 0 >usg
2908         fi
2909 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2910         echo "Looks kind of like a BSD system, but we'll see..."
2911         d_bsd="$define"
2912         echo exit 0 >bsd
2913 else
2914         echo "Looks kind of like a Version 7 system, but we'll see..."
2915         echo exit 0 >v7
2916 fi
2917 case "$eunicefix" in
2918 *unixtovms*)
2919         $cat <<'EOI'
2920 There is, however, a strange, musty smell in the air that reminds me of
2921 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2922 EOI
2923         echo exit 0 >eunice
2924         d_eunice="$define"
2925 : it so happens the Eunice I know will not run shell scripts in Unix format
2926         ;;
2927 *)
2928         echo " "
2929         echo "Congratulations.  You aren't running Eunice."
2930         d_eunice="$undef"
2931         ;;
2932 esac
2933 : Detect OS2.  The p_ variable is set above in the Head.U unit.
2934 case "$p_" in
2935 :) ;;
2936 *)
2937         $cat <<'EOI'
2938 I have the feeling something is not exactly right, however...don't tell me...
2939 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2940 EOI
2941         echo exit 0 >os2
2942         ;;
2943 esac
2944 if test -f /xenix; then
2945         echo "Actually, this looks more like a XENIX system..."
2946         echo exit 0 >xenix
2947         d_xenix="$define"
2948 else
2949         echo " "
2950         echo "It's not Xenix..."
2951         d_xenix="$undef"
2952 fi
2953 chmod +x xenix
2954 $eunicefix xenix
2955 if test -f /venix; then
2956         echo "Actually, this looks more like a VENIX system..."
2957         echo exit 0 >venix
2958 else
2959         echo " "
2960         if ./xenix; then
2961                 : null
2962         else
2963                 echo "Nor is it Venix..."
2964         fi
2965 fi
2966 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2967 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2968 $rm -f foo
2969
2970 : see if we need a special compiler
2971 echo " "
2972 if ./usg; then
2973         case "$cc" in
2974         '') case "$Mcc" in
2975                 /*) dflt='Mcc';;
2976                 *) case "$large" in
2977                         -M*) dflt='cc';;
2978                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
2979                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
2980                                                 dflt='cc'
2981                                         else
2982                                                 dflt='cc -M'
2983                                         fi
2984                                 else
2985                                         dflt='cc'
2986                                 fi;;
2987                         esac;;
2988                 esac;;
2989         *)  dflt="$cc";;
2990         esac
2991         case "$dflt" in
2992         *M*)    $cat <<'EOM'
2993 On some older systems the default C compiler will not resolve multiple global
2994 references that happen to have the same name.  On some such systems the "Mcc"
2995 command may be used to force these to be resolved.  On other systems a "cc -M"
2996 command is required.  (Note that the -M flag on other systems indicates a
2997 memory model to use!) If you have the Gnu C compiler, you might wish to use
2998 that instead.
2999
3000 EOM
3001         ;;
3002         esac
3003         rp="Use which C compiler?"
3004         . ./myread
3005         cc="$ans"
3006 else
3007         case "$cc" in
3008         '') dflt=cc;;
3009         *) dflt="$cc";;
3010         esac
3011         rp="Use which C compiler?"
3012         . ./myread
3013         cc="$ans"
3014 fi
3015 : Look for a hint-file generated 'call-back-unit'.  Now that the
3016 : user has specified the compiler, we may need to set or change some
3017 : other defaults.
3018 if $test -f cc.cbu; then
3019     . ./cc.cbu
3020 fi
3021 echo " "
3022 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3023 $cat >gccvers.c <<EOM
3024 #include <stdio.h>
3025 int main() {
3026 #ifdef __GNUC__
3027 #ifdef __VERSION__
3028         printf("%s\n", __VERSION__);
3029 #else
3030         printf("%s\n", "1");
3031 #endif
3032 #endif
3033         exit(0);
3034 }
3035 EOM
3036 if $cc -o gccvers gccvers.c; then
3037         gccversion=`./gccvers`
3038         case "$gccversion" in
3039         '') echo "You are not using GNU cc." ;;
3040         *)  echo "You are using GNU cc $gccversion."
3041             ;;
3042         esac
3043 else
3044         echo " "
3045         echo "*** WHOA THERE!!! ***" >&4
3046         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3047         case "$knowitall" in
3048         '')
3049         echo "    You'd better start hunting for one and let me know about it." >&4
3050                 exit 1
3051                 ;;
3052         esac
3053 fi
3054 $rm -f gccvers*
3055 case "$gccversion" in
3056 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3057 esac
3058
3059 : decide how portable to be.  Allow command line overrides.
3060 case "$d_portable" in
3061 "$undef") ;;
3062 *)      d_portable="$define" ;;
3063 esac
3064
3065 : set up shell script to do ~ expansion
3066 cat >filexp <<EOSS
3067 $startsh
3068 : expand filename
3069 case "\$1" in
3070  ~/*|~)
3071         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3072         ;;
3073  ~*)
3074         if $test -f /bin/csh; then
3075                 /bin/csh -f -c "glob \$1"
3076                 failed=\$?
3077                 echo ""
3078                 exit \$failed
3079         else
3080                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3081                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3082                 if $test ! -d "\$dir"; then
3083                         me=\`basename \$0\`
3084                         echo "\$me: can't locate home directory for: \$name" >&2
3085                         exit 1
3086                 fi
3087                 case "\$1" in
3088                 */*)
3089                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3090                         ;;
3091                 *)
3092                         echo \$dir
3093                         ;;
3094                 esac
3095         fi
3096         ;;
3097 *)
3098         echo \$1
3099         ;;
3100 esac
3101 EOSS
3102 chmod +x filexp
3103 $eunicefix filexp
3104
3105 : now set up to get a file name
3106 cat <<EOS >getfile
3107 $startsh
3108 EOS
3109 cat <<'EOSC' >>getfile
3110 tilde=''
3111 fullpath=''
3112 already=''
3113 skip=''
3114 none_ok=''
3115 exp_file=''
3116 nopath_ok=''
3117 orig_rp="$rp"
3118 orig_dflt="$dflt"
3119 case "$gfpth" in
3120 '') gfpth='.' ;;
3121 esac
3122
3123 case "$fn" in
3124 *\(*)
3125         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3126         fn=`echo $fn | sed 's/(.*)//'`
3127         ;;
3128 esac
3129
3130 case "$fn" in
3131 *:*)
3132         loc_file=`expr $fn : '.*:\(.*\)'`
3133         fn=`expr $fn : '\(.*\):.*'`
3134         ;;
3135 esac
3136
3137 case "$fn" in
3138 *~*) tilde=true;;
3139 esac
3140 case "$fn" in
3141 */*) fullpath=true;;
3142 esac
3143 case "$fn" in
3144 *+*) skip=true;;
3145 esac
3146 case "$fn" in
3147 *n*) none_ok=true;;
3148 esac
3149 case "$fn" in
3150 *e*) exp_file=true;;
3151 esac
3152 case "$fn" in
3153 *p*) nopath_ok=true;;
3154 esac
3155
3156 case "$fn" in
3157 *f*) type='File';;
3158 *d*) type='Directory';;
3159 *l*) type='Locate';;
3160 esac
3161
3162 what="$type"
3163 case "$what" in
3164 Locate) what='File';;
3165 esac
3166
3167 case "$exp_file" in
3168 '')
3169         case "$d_portable" in
3170         "$define") ;;
3171         *) exp_file=true;;
3172         esac
3173         ;;
3174 esac
3175
3176 cd ..
3177 while test "$type"; do
3178         redo=''
3179         rp="$orig_rp"
3180         dflt="$orig_dflt"
3181         case "$tilde" in
3182         true) rp="$rp (~name ok)";;
3183         esac
3184         . UU/myread
3185         if test -f UU/getfile.ok && \
3186                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3187         then
3188                 value="$ans"
3189                 ansexp="$ans"
3190                 break
3191         fi
3192         case "$ans" in
3193         none)
3194                 value=''
3195                 ansexp=''
3196                 case "$none_ok" in
3197                 true) type='';;
3198                 esac
3199                 ;;
3200         *)
3201                 case "$tilde" in
3202                 '') value="$ans"
3203                         ansexp="$ans";;
3204                 *)
3205                         value=`UU/filexp $ans`
3206                         case $? in
3207                         0)
3208                                 if test "$ans" != "$value"; then
3209                                         echo "(That expands to $value on this system.)"
3210                                 fi
3211                                 ;;
3212                         *) value="$ans";;
3213                         esac
3214                         ansexp="$value"
3215                         case "$exp_file" in
3216                         '') value="$ans";;
3217                         esac
3218                         ;;
3219                 esac
3220                 case "$fullpath" in
3221                 true)
3222                         case "$ansexp" in
3223                         /*) value="$ansexp" ;;
3224                         *)
3225                                 redo=true
3226                                 case "$already" in
3227                                 true)
3228                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3229                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3230                                         ;;
3231                                 *)
3232                                 echo "Please give a full path name, starting with slash." >&4
3233                                         case "$tilde" in
3234                                         true)
3235                                 echo "Note that using ~name is ok provided it expands well." >&4
3236                                                 already=true
3237                                                 ;;
3238                                         esac
3239                                 esac
3240                                 ;;
3241                         esac
3242                         ;;
3243                 esac
3244                 case "$redo" in
3245                 '')
3246                         case "$type" in
3247                         File)
3248                                 for fp in $gfpth; do
3249                                         if test "X$fp" = X.; then
3250                                             pf="$ansexp"
3251                                         else    
3252                                             pf="$fp/$ansexp"
3253                                         fi
3254                                         if test -f "$pf"; then
3255                                                 type=''
3256                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3257                                         then
3258                                                 echo "($value is not a plain file, but that's ok.)"
3259                                                 type=''
3260                                         fi
3261                                         if test X"$type" = X; then
3262                                             value="$pf"
3263                                             break
3264                                         fi
3265                                 done
3266                                 ;;
3267                         Directory)
3268                                 for fp in $gfpth; do
3269                                         if test "X$fp" = X.; then
3270                                             pf="$ansexp"
3271                                         else    
3272                                             pf="$fp/$ansexp"
3273                                         fi
3274                                         if test -d "$pf"; then
3275                                                 type=''
3276                                                 value="$pf"
3277                                                 break
3278                                         fi
3279                                 done
3280                                 ;;
3281                         Locate)
3282                                 if test -d "$ansexp"; then
3283                                         echo "(Looking for $loc_file in directory $value.)"
3284                                         value="$value/$loc_file"
3285                                         ansexp="$ansexp/$loc_file"
3286                                 fi
3287                                 if test -f "$ansexp"; then
3288                                         type=''
3289                                 fi
3290                                 case "$nopath_ok" in
3291                                 true)   case "$value" in
3292                                         */*) ;;
3293                                         *)      echo "Assuming $value will be in people's path."
3294                                                 type=''
3295                                                 ;;
3296                                         esac
3297                                         ;;
3298                                 esac
3299                                 ;;
3300                         esac
3301
3302                         case "$skip" in
3303                         true) type='';
3304                         esac
3305
3306                         case "$type" in
3307                         '') ;;
3308                         *)
3309                                 if test "$fastread" = yes; then
3310                                         dflt=y
3311                                 else
3312                                         dflt=n
3313                                 fi
3314                                 rp="$what $value doesn't exist.  Use that name anyway?"
3315                                 . UU/myread
3316                                 dflt=''
3317                                 case "$ans" in
3318                                 y*) type='';;
3319                                 *) echo " ";;
3320                                 esac
3321                                 ;;
3322                         esac
3323                         ;;
3324                 esac
3325                 ;;
3326         esac
3327 done
3328 cd UU
3329 ans="$value"
3330 rp="$orig_rp"
3331 dflt="$orig_dflt"
3332 rm -f getfile.ok
3333 test "X$gfpthkeep" != Xy && gfpth=""
3334 EOSC
3335
3336 : What should the include directory be ?
3337 echo " "
3338 $echo $n "Hmm...  $c"
3339 dflt='/usr/include'
3340 incpath=''
3341 mips_type=''
3342 if $test -f /bin/mips && /bin/mips; then
3343         echo "Looks like a MIPS system..."
3344         $cat >usr.c <<'EOCP'
3345 #ifdef SYSTYPE_BSD43
3346 /bsd43
3347 #endif
3348 EOCP
3349         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3350                 dflt='/bsd43/usr/include'
3351                 incpath='/bsd43'
3352                 mips_type='BSD 4.3'
3353         else
3354                 mips_type='System V'
3355         fi
3356         $rm -f usr.c usr.out
3357         echo "and you're compiling with the $mips_type compiler and libraries."
3358         xxx_prompt=y
3359         echo "exit 0" >mips
3360 else
3361         echo "Doesn't look like a MIPS system."
3362         xxx_prompt=n
3363         echo "exit 1" >mips
3364 fi
3365 chmod +x mips
3366 $eunicefix mips
3367 case "$usrinc" in
3368 '') ;;
3369 *) dflt="$usrinc";;
3370 esac
3371 case "$xxx_prompt" in
3372 y)      fn=d/
3373         echo " "
3374         rp='Where are the include files you want to use?'
3375         . ./getfile
3376         usrinc="$ans"
3377         ;;
3378 *)      usrinc="$dflt"
3379         ;;
3380 esac
3381
3382 : see how we invoke the C preprocessor
3383 echo " "
3384 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3385 cat <<'EOT' >testcpp.c
3386 #define ABC abc
3387 #define XYZ xyz
3388 ABC.XYZ
3389 EOT
3390 cd ..
3391 if test ! -f cppstdin; then
3392         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3393                 # AIX cc -E doesn't show the absolute headerfile
3394                 # locations but we'll cheat by using the -M flag.
3395                 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
3396         else
3397                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3398         fi
3399 else
3400         echo "Keeping your $hint cppstdin wrapper."
3401 fi
3402 chmod 755 cppstdin
3403 wrapper=`pwd`/cppstdin
3404 ok='false'
3405 cd UU
3406
3407 if $test "X$cppstdin" != "X" && \
3408         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3409         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3410 then
3411         echo "You used to use $cppstdin $cppminus so we'll use that again."
3412         case "$cpprun" in
3413         '') echo "But let's see if we can live without a wrapper..." ;;
3414         *)
3415                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3416                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3417                 then
3418                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3419                         ok='true'
3420                 else
3421                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3422                 fi
3423                 ;;
3424         esac
3425 else
3426         case "$cppstdin" in
3427         '') ;;
3428         *)
3429                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3430                 ;;
3431         esac
3432 fi
3433
3434 if $ok; then
3435         : nothing
3436 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3437         $cc -E <testcpp.c >testcpp.out 2>&1; \
3438         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3439         echo "Yup, it does."
3440         x_cpp="$cc -E"
3441         x_minus='';
3442 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3443         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3444         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3445         echo "Yup, it does."
3446         x_cpp="$cc -E"
3447         x_minus='-';
3448 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3449         $cc -P <testcpp.c >testcpp.out 2>&1; \
3450         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3451         echo "Yipee, that works!"
3452         x_cpp="$cc -P"
3453         x_minus='';
3454 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3455         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3456         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3457         echo "At long last!"
3458         x_cpp="$cc -P"
3459         x_minus='-';
3460 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3461         $cpp <testcpp.c >testcpp.out 2>&1; \
3462         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3463         echo "It works!"
3464         x_cpp="$cpp"
3465         x_minus='';
3466 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3467         $cpp - <testcpp.c >testcpp.out 2>&1; \
3468         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3469         echo "Hooray, it works!  I was beginning to wonder."
3470         x_cpp="$cpp"
3471         x_minus='-';
3472 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3473         $wrapper <testcpp.c >testcpp.out 2>&1; \
3474         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3475         x_cpp="$wrapper"
3476         x_minus=''
3477         echo "Eureka!"
3478 else
3479         dflt=''
3480         rp="No dice.  I can't find a C preprocessor.  Name one:"
3481         . ./myread
3482         x_cpp="$ans"
3483         x_minus=''
3484         $x_cpp <testcpp.c >testcpp.out 2>&1
3485         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3486                 echo "OK, that will do." >&4
3487         else
3488 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3489                 exit 1
3490         fi
3491 fi
3492
3493 case "$ok" in
3494 false)
3495         cppstdin="$x_cpp"
3496         cppminus="$x_minus"
3497         cpprun="$x_cpp"
3498         cpplast="$x_minus"
3499         set X $x_cpp
3500         shift
3501         case "$1" in
3502         "$cpp")
3503                 echo "Perhaps can we force $cc -E using a wrapper..."
3504                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3505                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3506                 then
3507                         echo "Yup, we can."
3508                         cppstdin="$wrapper"
3509                         cppminus='';
3510                 else
3511                         echo "Nope, we'll have to live without it..."
3512                 fi
3513                 ;;
3514         esac
3515         case "$cpprun" in
3516         "$wrapper")
3517                 cpprun=''
3518                 cpplast=''
3519                 ;;
3520         esac
3521         ;;
3522 esac
3523
3524 case "$cppstdin" in
3525 "$wrapper"|'cppstdin') ;;
3526 *) $rm -f $wrapper;;
3527 esac
3528 $rm -f testcpp.c testcpp.out
3529
3530 : Set private lib path
3531 case "$plibpth" in
3532 '') if ./mips; then
3533                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3534         fi;;
3535 esac
3536 case "$libpth" in
3537 ' ') dlist='';;
3538 '') dlist="$loclibpth $plibpth $glibpth";;
3539 *) dlist="$libpth";;
3540 esac
3541
3542 : Now check and see which directories actually exist, avoiding duplicates
3543 libpth=''
3544 for xxx in $dlist
3545 do
3546     if $test -d $xxx; then
3547                 case " $libpth " in
3548                 *" $xxx "*) ;;
3549                 *) libpth="$libpth $xxx";;
3550                 esac
3551     fi
3552 done
3553 $cat <<'EOM'
3554
3555 Some systems have incompatible or broken versions of libraries.  Among
3556 the directories listed in the question below, please remove any you
3557 know not to be holding relevant libraries, and add any that are needed.
3558 Say "none" for none.
3559
3560 EOM
3561 case "$libpth" in
3562 '') dflt='none';;
3563 *)
3564         set X $libpth
3565         shift
3566         dflt=${1+"$@"}
3567         ;;
3568 esac
3569 rp="Directories to use for library searches?"
3570 . ./myread
3571 case "$ans" in
3572 none) libpth=' ';;
3573 *) libpth="$ans";;
3574 esac
3575
3576 : compute shared library extension
3577 case "$so" in
3578 '')
3579         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3580                 dflt='sl'
3581         else
3582                 dflt='so'
3583         fi
3584         ;;
3585 *) dflt="$so";;
3586 esac
3587 $cat <<EOM
3588
3589 On some systems, shared libraries may be available.  Answer 'none' if
3590 you want to suppress searching of shared libraries for the remainder
3591 of this configuration.
3592
3593 EOM
3594 rp='What is the file extension used for shared libraries?'
3595 . ./myread
3596 so="$ans"
3597
3598 : Define several unixisms.
3599 : Hints files or command line option can be used to override them.
3600 : The convoluted testing is in case hints files set either the old
3601 : or the new name.
3602 case "$_exe" in
3603 '')     case "$exe_ext" in
3604     '') ;;
3605         *)      _exe="$exe_ext" ;;
3606         esac
3607         ;;
3608 esac
3609 case "$_a" in
3610 '')     case "$lib_ext" in
3611     '') _a='.a';;
3612         *)      _a="$lib_ext" ;;
3613         esac
3614         ;;
3615 esac
3616 case "$_o" in
3617 '') case "$obj_ext" in
3618         '')     _o='.o';;
3619         *)      _o="$obj_ext";;
3620         esac
3621         ;;
3622 esac
3623 case "$p_" in
3624 '') case "$path_sep" in
3625         '')     p_=':';;
3626         *)      p_="$path_sep";;
3627         esac
3628         ;;
3629 esac
3630 exe_ext=$_exe
3631 lib_ext=$_a
3632 obj_ext=$_o
3633 path_sep=$p_
3634
3635 : Which makefile gets called first.  This is used by make depend.
3636 case "$firstmakefile" in
3637 '') firstmakefile='makefile';;
3638 esac
3639
3640 cat <<EOM
3641
3642 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3643 Configure must be run with -Dusesocks.
3644
3645 Normally you do not need this and you should answer no.
3646
3647 EOM
3648 case "$usesocks" in
3649 $define|true|[yY]*)     dflt='y';;
3650 *) dflt='n';;
3651 esac
3652 rp='Build Perl for SOCKS?'
3653 . ./myread
3654 case "$ans" in
3655 y|Y)    val="$define" ;;     
3656 *)      val="$undef" ;;
3657 esac
3658 set usesocks
3659 eval $setvar
3660
3661 : Looking for optional libraries
3662 echo " "
3663 echo "Checking for optional libraries..." >&4
3664 case "$libs" in
3665 ' '|'') dflt='';;
3666 *) dflt="$libs";;
3667 esac
3668 case "$libswanted" in
3669 '') libswanted='c_s';;
3670 esac
3671 case "$usesocks" in
3672 $define)
3673         libswanted="$libswanted socks5 socks5_sh"
3674         ;;
3675 esac
3676 for thislib in $libswanted; do
3677         
3678         if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
3679                 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3680                 echo "Found -l$thislib (shared)."
3681                 case " $dflt " in
3682                 *"-l$thislib "*);;
3683                 *) dflt="$dflt -l$thislib";;
3684                 esac
3685         elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3686                 echo "Found -l$thislib (shared)."
3687                 case " $dflt " in
3688                 *"-l$thislib "*);;
3689                 *) dflt="$dflt -l$thislib";;
3690                 esac
3691         elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3692                 echo "Found -l$thislib."
3693                 case " $dflt " in
3694                 *"-l$thislib "*);;
3695                 *) dflt="$dflt -l$thislib";;
3696                 esac
3697         elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3698                 echo "Found -l$thislib."
3699                 case " $dflt " in
3700                 *"-l$thislib "*);;
3701                 *) dflt="$dflt -l$thislib";;
3702                 esac
3703         elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3704                 echo "Found -l${thislib}_s."
3705                 case " $dflt " in
3706                 *"-l$thislib "*);;
3707                 *) dflt="$dflt -l${thislib}_s";;
3708                 esac
3709         elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3710                 echo "Found -l$thislib."
3711                 case " $dflt " in
3712                 *"-l$thislib "*);;
3713                 *) dflt="$dflt -l$thislib";;
3714                 esac
3715         else
3716                 echo "No -l$thislib."
3717         fi
3718 done
3719 set X $dflt
3720 shift
3721 dflt="$*"
3722 case "$libs" in
3723 '') dflt="$dflt";;
3724 *) dflt="$libs";;
3725 esac
3726 case "$dflt" in
3727 ' '|'') dflt='none';;
3728 esac
3729
3730 $cat <<EOM
3731
3732 In order to compile $package on your machine, a number of libraries
3733 are usually needed.  Include any other special libraries here as well.
3734 Say "none" for none.  The default list is almost always right.
3735 EOM
3736
3737 echo " "
3738 rp="What libraries to use?"
3739 . ./myread
3740 case "$ans" in
3741 none) libs=' ';;
3742 *) libs="$ans";;
3743 esac
3744
3745 : determine optimization, if desired, or use for debug flag also
3746 case "$optimize" in
3747 ' '|$undef) dflt='none';;
3748 '') dflt='-O';;
3749 *) dflt="$optimize";;
3750 esac
3751 $cat <<EOH
3752
3753 By default, $package compiles with the -O flag to use the optimizer.
3754 Alternately, you might want to use the symbolic debugger, which uses
3755 the -g flag (on traditional Unix systems).  Either flag can be
3756 specified here.  To use neither flag, specify the word "none".
3757
3758 EOH
3759 rp="What optimizer/debugger flag should be used?"
3760 . ./myread
3761 optimize="$ans"
3762 case "$optimize" in
3763 'none') optimize=" ";;
3764 esac
3765
3766 dflt=''
3767 : We will not override a previous value, but we might want to
3768 : augment a hint file
3769 case "$hint" in
3770 default|recommended)
3771         case "$gccversion" in
3772         1*) dflt='-fpcc-struct-return' ;;
3773         esac
3774         case "$optimize" in
3775         *-g*) dflt="$dflt -DDEBUGGING";;
3776         esac
3777         case "$gccversion" in
3778         2*) if test -d /etc/conf/kconfig.d &&
3779                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3780                 then
3781                         dflt="$dflt -posix"
3782                 fi
3783                 ;;
3784         esac
3785         case "$gccversion" in
3786         1*) ;;
3787         2.[0-8]*) ;;
3788         ?*)     echo " "
3789                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3790                 echo 'int main(void) { return 0; }' > gcctest.c
3791                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3792                         echo "Yes, it does." 2>&1
3793                         case "$ccflags" in
3794                         *strict-aliasing*) 
3795                                 echo "Leaving current flags $ccflags alone." 2>&1
3796                                 ;;
3797                         *) dflt="$dflt -fno-strict-aliasing" ;;
3798                         esac
3799                 else
3800                         echo "Nope, it doesn't, but that's ok." 2>&1
3801                 fi
3802                 ;;
3803         esac
3804         ;;
3805 esac
3806
3807 case "$mips_type" in
3808 *BSD*|'') inclwanted="$locincpth $usrinc";;
3809 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3810 esac
3811 for thisincl in $inclwanted; do
3812         if $test -d $thisincl; then
3813                 if $test x$thisincl != x$usrinc; then
3814                         case "$dflt" in
3815                         *$thisincl*);;
3816                         *) dflt="$dflt -I$thisincl";;
3817                         esac
3818                 fi
3819         fi
3820 done
3821
3822 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3823         xxx=true;
3824 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3825         xxx=true;
3826 else
3827         xxx=false;
3828 fi;
3829 if $xxx; then
3830         case "$dflt" in
3831         *$2*);;
3832         *) dflt="$dflt -D$2";;
3833         esac;
3834 fi'
3835
3836 set signal.h LANGUAGE_C; eval $inctest
3837
3838 case "$usesocks" in
3839 $define)
3840         ccflags="$ccflags -DSOCKS"
3841         ;;
3842 esac
3843
3844 case "$hint" in
3845 default|recommended) dflt="$ccflags $dflt" ;;
3846 *) dflt="$ccflags";;
3847 esac
3848
3849 case "$dflt" in
3850 ''|' ') dflt=none;;
3851 esac
3852 $cat <<EOH
3853
3854 Your C compiler may want other flags.  For this question you should include
3855 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3856 but you should NOT include libraries or ld flags like -lwhatever.  If you
3857 want $package to honor its debug switch, you should include -DDEBUGGING here.
3858 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3859
3860 To use no flags, specify the word "none".
3861
3862 EOH
3863 set X $dflt
3864 shift
3865 dflt=${1+"$@"}
3866 rp="Any additional cc flags?"
3867 . ./myread
3868 case "$ans" in
3869 none) ccflags='';;
3870 *) ccflags="$ans";;
3871 esac
3872
3873 : the following weeds options from ccflags that are of no interest to cpp
3874 cppflags="$ccflags"
3875 case "$gccversion" in
3876 1*) cppflags="$cppflags -D__GNUC__"
3877 esac
3878 case "$mips_type" in
3879 '');;
3880 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3881 esac
3882 case "$cppflags" in
3883 '');;
3884 *)
3885         echo " "
3886         echo "Let me guess what the preprocessor flags are..." >&4
3887         set X $cppflags
3888         shift
3889         cppflags=''
3890         $cat >cpp.c <<'EOM'
3891 #define BLURFL foo
3892
3893 BLURFL xx LFRULB
3894 EOM
3895         previous=''
3896         for flag in $*
3897         do
3898                 case "$flag" in
3899                 -*) ftry="$flag";;
3900                 *) ftry="$previous $flag";;
3901                 esac
3902                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3903                         >cpp1.out 2>/dev/null && \
3904                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3905                         >cpp2.out 2>/dev/null && \
3906                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3907                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3908                 then
3909                         cppflags="$cppflags $ftry"
3910                         previous=''
3911                 else
3912                         previous="$flag"
3913                 fi
3914         done
3915         set X $cppflags
3916         shift
3917         cppflags=${1+"$@"}
3918         case "$cppflags" in
3919         *-*)  echo "They appear to be: $cppflags";;
3920         esac
3921         $rm -f cpp.c cpp?.out
3922         ;;
3923 esac
3924
3925 : flags used in final linking phase
3926 case "$ldflags" in
3927 '') if ./venix; then
3928                 dflt='-i -z'
3929         else
3930                 dflt=''
3931         fi
3932         case "$ccflags" in
3933         *-posix*) dflt="$dflt -posix" ;;
3934         esac
3935         ;;
3936 *) dflt="$ldflags";;
3937 esac
3938
3939 : Try to guess additional flags to pick up local libraries.
3940 for thislibdir in $libpth; do
3941         case " $loclibpth " in
3942         *" $thislibdir "*)
3943                 case "$dflt " in 
3944                 *"-L$thislibdir "*) ;;
3945                 *)  dflt="$dflt -L$thislibdir" ;;
3946                 esac
3947                 ;;
3948         esac
3949 done
3950
3951 case "$dflt" in
3952 '') dflt='none' ;;
3953 esac
3954
3955 $cat <<EOH
3956
3957 Your C linker may need flags.  For this question you should
3958 include -L/whatever and any other flags used by the C linker, but you
3959 should NOT include libraries like -lwhatever.
3960
3961 Make sure you include the appropriate -L/path flags if your C linker
3962 does not normally search all of the directories you specified above,
3963 namely
3964         $libpth
3965 To use no flags, specify the word "none".
3966
3967 EOH
3968
3969 rp="Any additional ld flags (NOT including libraries)?"
3970 . ./myread
3971 case "$ans" in
3972 none) ldflags='';;
3973 *) ldflags="$ans";;
3974 esac
3975 rmlist="$rmlist pdp11"
3976
3977 : coherency check
3978 echo " "
3979 echo "Checking your choice of C compiler and flags for coherency..." >&4
3980 $cat > try.c <<'EOF'
3981 #include <stdio.h>
3982 int main() { printf("Ok\n"); exit(0); }
3983 EOF
3984 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
3985 shift
3986 $cat >try.msg <<'EOM'
3987 I've tried to compile and run the following simple program:
3988
3989 EOM
3990 $cat try.c >> try.msg
3991
3992 $cat >> try.msg <<EOM
3993
3994 I used the command:
3995
3996         $*
3997         ./try
3998
3999 and I got the following output:
4000
4001 EOM
4002 dflt=y
4003 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4004         if sh -c './try' >>try.msg 2>&1; then
4005                 xxx=`./try`
4006                 case "$xxx" in
4007                 "Ok") dflt=n ;;
4008                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4009                         case " $libs " in
4010                         *" -lsfio "*)
4011                                 cat >> try.msg <<'EOQS'
4012 If $libs contains -lsfio, and sfio is mis-configured, then it
4013 sometimes (apparently) runs and exits with a 0 status, but with no
4014 output!  It may have to do with sfio's use of _exit vs. exit.
4015
4016 EOQS
4017                                 rp="You have a big problem.  Shall I abort Configure"
4018                                 dflt=y
4019                                 ;;
4020                         esac
4021                         ;;
4022                 esac
4023         else
4024                 echo "The program compiled OK, but exited with status $?." >>try.msg
4025                 rp="You have a problem.  Shall I abort Configure"
4026                 dflt=y
4027         fi
4028 else
4029         echo "I can't compile the test program." >>try.msg
4030         rp="You have a BIG problem.  Shall I abort Configure"
4031         dflt=y
4032 fi
4033 case "$dflt" in
4034 y)
4035         $cat try.msg >&4
4036         case "$knowitall" in
4037         '')
4038                 echo "(The supplied flags or libraries might be incorrect.)"
4039                 ;;
4040         *) dflt=n;;
4041         esac
4042         echo " "
4043         . ./myread
4044         case "$ans" in
4045         n*|N*) ;;
4046         *)      echo "Ok.  Stopping Configure." >&4
4047                 exit 1
4048                 ;;
4049         esac
4050         ;;
4051 n) echo "OK, that should do.";;
4052 esac
4053 $rm -f try try.* core
4054
4055 : define an is-a-typedef? function
4056 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4057 case "$inclist" in
4058 "") inclist="sys/types.h";;
4059 esac;
4060 eval "varval=\$$var";
4061 case "$varval" in
4062 "")
4063         $rm -f temp.c;
4064         for inc in $inclist; do
4065                 echo "#include <$inc>" >>temp.c;
4066         done;
4067         echo "#ifdef $type" >> temp.c;
4068         echo "printf(\"We have $type\");" >> temp.c;
4069         echo "#endif" >> temp.c;
4070         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4071         if $contains $type temp.E >/dev/null 2>&1; then
4072                 eval "$var=\$type";
4073         else
4074                 eval "$var=\$def";
4075         fi;
4076         $rm -f temp.?;;
4077 *) eval "$var=\$varval";;
4078 esac'
4079
4080 : define an is-a-typedef? function that prompts if the type is not available.
4081 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4082 case "$inclist" in
4083 "") inclist="sys/types.h";;
4084 esac;
4085 eval "varval=\$$var";
4086 case "$varval" in
4087 "")
4088         $rm -f temp.c;
4089         for inc in $inclist; do
4090                 echo "#include <$inc>" >>temp.c;
4091         done;
4092         echo "#ifdef $type" >> temp.c;
4093         echo "printf(\"We have $type\");" >> temp.c;
4094         echo "#endif" >> temp.c;
4095         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4096         echo " " ;
4097         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4098         if $contains $type temp.E >/dev/null 2>&1; then
4099                 echo "$type found." >&4;
4100                 eval "$var=\$type";
4101         else
4102                 echo "$type NOT found." >&4;
4103                 dflt="$def";
4104                 . ./myread ;
4105                 eval "$var=\$ans";
4106         fi;
4107         $rm -f temp.?;;
4108 *) eval "$var=\$varval";;
4109 esac'
4110
4111 : define a shorthand compile call
4112 compile='
4113 mc_file=$1;
4114 shift;
4115 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4116 : define a shorthand compile call for compilations that should be ok.
4117 compile_ok='
4118 mc_file=$1;
4119 shift;
4120 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4121
4122 : check for lengths of integral types
4123 echo " "
4124 case "$intsize" in
4125 '')
4126         echo "Checking to see how big your integers are..." >&4
4127         $cat >intsize.c <<'EOCP'
4128 #include <stdio.h>
4129 int main()
4130 {
4131         printf("intsize=%d;\n", (int)sizeof(int));
4132         printf("longsize=%d;\n", (int)sizeof(long));
4133         printf("shortsize=%d;\n", (int)sizeof(short));
4134         exit(0);
4135 }
4136 EOCP
4137         set intsize
4138         if eval $compile_ok && ./intsize > /dev/null; then
4139                 eval `./intsize`
4140                 echo "Your integers are $intsize bytes long."
4141                 echo "Your long integers are $longsize bytes long."
4142                 echo "Your short integers are $shortsize bytes long."
4143         else
4144                 $cat >&4 <<EOM
4145 !
4146 Help! I can't compile and run the intsize test program: please enlighten me!
4147 (This is probably a misconfiguration in your system or libraries, and
4148 you really ought to fix it.  Still, I'll try anyway.)
4149 !
4150 EOM
4151                 dflt=4
4152                 rp="What is the size of an integer (in bytes)?"
4153                 . ./myread
4154                 intsize="$ans"
4155                 dflt=$intsize
4156                 rp="What is the size of a long integer (in bytes)?"
4157                 . ./myread
4158                 longsize="$ans"
4159                 dflt=2
4160                 rp="What is the size of a short integer (in bytes)?"
4161                 . ./myread
4162                 shortsize="$ans"
4163         fi
4164         ;;
4165 esac
4166 $rm -f intsize intsize.*
4167
4168 : see what type lseek is declared as in the kernel
4169 rp="What is the type used for lseek's offset on this system?"
4170 set off_t lseektype long stdio.h sys/types.h
4171 eval $typedef_ask
4172
4173 echo " "
4174 $echo $n "Checking to see how big your file offsets are...$c" >&4
4175 $cat >try.c <<EOCP
4176 #include <sys/types.h>
4177 #include <stdio.h>
4178 int main()
4179 {
4180     printf("%d\n", (int)sizeof($lseektype));
4181     return(0); 
4182 }
4183 EOCP
4184 set try
4185 if eval $compile_ok; then
4186         lseeksize=`./try`
4187         $echo " $lseeksize bytes." >&4
4188 else
4189         dflt=$longsize
4190         echo " "
4191         echo "(I can't seem to compile the test program.  Guessing...)"
4192         rp="What is the size of your file offsets (in bytes)?"
4193         . ./myread
4194         lseeksize="$ans"
4195 fi
4196 $rm -f try.c try
4197
4198 : see what type file positions are declared as in the library
4199 rp="What is the type for file position used by fsetpos()?"
4200 set fpos_t fpostype long stdio.h sys/types.h
4201 eval $typedef_ask
4202
4203 echo " "
4204 case "$fpostype" in
4205 *_t) zzz="$fpostype"    ;;
4206 *)   zzz="fpos_t"       ;;
4207 esac
4208 $echo $n "Checking the size of $zzz...$c" >&4 
4209 cat > try.c <<EOCP
4210 #include <sys/types.h>
4211 #include <stdio.h>
4212 int main() {
4213     printf("%d\n", (int)sizeof($fpostype));
4214     exit(0);
4215 }
4216 EOCP
4217 set try
4218 if eval $compile_ok; then
4219         yyy=`./try`
4220         case "$yyy" in
4221         '')     fpossize=4
4222                 echo " "
4223                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4224                 ;;
4225         *)      fpossize=$yyy
4226                 echo " $fpossize bytes."
4227                 ;;
4228         esac
4229 else
4230         dflt="$longsize"
4231         echo " "
4232         echo "(I can't compile the test program.  Guessing...)" >&4
4233         rp="What is the size of your file positions (in bytes)?"
4234         . ./myread
4235         fpossize="$ans"
4236 fi
4237
4238
4239
4240 case "$lseeksize:$fpossize" in
4241 8:8) cat <<EOM
4242
4243 You can have files larger than 2 gigabytes.
4244 EOM
4245    val="$define" ;;
4246 *) cat <<EOM
4247
4248 Perl can be built to understand large files (files larger than 2 gigabytes)
4249 on some systems.  To do so, Configure must be run with -Duselargefiles.
4250
4251 If this doesn't make any sense to you, just accept the default 'y'.
4252 EOM
4253    case "$uselargefiles" in
4254    "$undef"|false|[nN]*) dflt='n' ;;
4255    *)   dflt='y' ;;
4256    esac
4257    rp='Try to understand large files, if available?'
4258    . ./myread
4259    case "$ans" in
4260    y|Y)         val="$define" ;;
4261    *)           val="$undef"  ;;
4262    esac
4263    ;;
4264 esac
4265 set uselargefiles
4266 eval $setvar
4267 case "$uselargefiles" in
4268 "$define")
4269 : Look for a hint-file generated 'call-back-unit'.  If the
4270 : user has specified that a large files perl is to be built,
4271 : we may need to set or change some other defaults.
4272         if $test -f uselfs.cbu; then
4273                 echo "Your platform has some specific hints for large file builds, using them..."
4274                 . ./uselfs.cbu
4275                 echo " "
4276                 $echo $n "Rechecking to see how big your file offsets are...$c" >&4
4277                 $cat >try.c <<EOCP
4278 #include <sys/types.h>
4279 #include <stdio.h>
4280 int main()
4281 {
4282     printf("%d\n", (int)sizeof($lseektype));
4283     return(0); 
4284 }
4285 EOCP
4286                 set try
4287                 if eval $compile_ok; then
4288                         lseeksize=`./try`
4289                         $echo " $lseeksize bytes." >&4
4290                 else
4291                         dflt="$lseeksize"
4292                         echo " "
4293                         echo "(I can't seem to compile the test program.  Guessing...)"
4294                         rp="What is the size of your file offsets (in bytes)?"
4295                         . ./myread
4296                         lseeksize="$ans"
4297                 fi
4298                 case "$fpostype" in
4299                 *_t) zzz="$fpostype"    ;;
4300                 *)   zzz="fpos_t"       ;;
4301                 esac
4302                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4303                 $cat > try.c <<EOCP
4304 #include <sys/types.h>
4305 #include <stdio.h>
4306 int main() {
4307     printf("%d\n", (int)sizeof($fpostype));
4308     exit(0);
4309 }
4310 EOCP
4311                 set try
4312                 if eval $compile_ok; then
4313                         yyy=`./try`
4314                         dflt="$lseeksize"
4315                         case "$yyy" in
4316                         '')     echo " "
4317                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4318                                 ;;
4319                         *)      fpossize=$yyy
4320                                 echo " $fpossize bytes."
4321                                 ;;
4322                         esac
4323                 else
4324                         dflt="$fpossize"
4325                         echo " "
4326                         echo "(I can't compile the test program.  Guessing...)" >&4
4327                         rp="What is the size of your file positions (in bytes)?"
4328                         . ./myread
4329                         fpossize="$ans"
4330                 fi
4331                 $rm -f try.c try
4332         fi
4333         ;;
4334 esac
4335
4336
4337 case "$usemorebits" in
4338 "$define"|true|[yY]*)
4339         use64bits="$define"
4340         uselongdouble="$define"
4341         usemorebits="$define"
4342         ;;
4343 *)      usemorebits="$undef"
4344         ;;
4345 esac
4346
4347
4348 case "$intsize:$longsize" in
4349 8:*|*:8) cat <<EOM
4350
4351 You have natively 64-bit integers.
4352 EOM
4353    val="$define" ;;
4354 *) cat <<EOM
4355
4356 Perl can be built to take advantage of 64-bit integer types
4357 on some systems.  To do so, Configure must be run with -Duse64bits.
4358
4359 If this doesn't make any sense to you, just accept the default.
4360 EOM
4361   case "$use64bits" in
4362   $define|true|[yY]*)   dflt='y';;
4363   *) dflt='n';;
4364   esac
4365   rp='Try to use 64-bit integers, if available?'
4366   . ./myread
4367   case "$ans" in
4368   y|Y) val="$define" ;;
4369   *)   val="$undef"  ;;
4370   esac
4371   ;;
4372 esac
4373 set use64bits
4374 eval $setvar
4375
4376 case "$archname64" in
4377 '') archname64='' ;;    # not a typo
4378 esac
4379
4380 case "$use64bits" in
4381 "$define"|true|[yY]*)
4382 : Look for a hint-file generated 'call-back-unit'.  If the
4383 : user has specified that a 64-bit perl is to be built,
4384 : we may need to set or change some other defaults.
4385         if $test -f use64bits.cbu; then
4386                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4387                 . ./use64bits.cbu
4388         else
4389                 $cat <<EOM
4390 (Your platform doesn't have any specific hints for 64-bit builds.)
4391 EOM
4392                 case "$intsize:$longsize" in
4393 8:*|*:8) cat <<EOM
4394 (This is probably okay, as your system is a natively 64-bit system.)
4395 EOM
4396                   ;;
4397                 esac
4398                 case "$gccversion" in
4399                 '')     ;;
4400                 *)      case "$ccflags" in
4401                         *-DUSE_LONG_LONG*) ;;
4402                         *) $cat <<EOM
4403 But since you seem to be using gcc, I will now add -DUSE_LONG_LONG
4404 to the compilation flags.
4405 EOM
4406                            ccflags="$ccflags -DUSE_LONG_LONG"
4407                            ;;
4408                         esac
4409                         ;;
4410                 esac
4411         fi
4412         ;;
4413 esac
4414
4415 : determine the architecture name
4416 echo " "
4417 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4418         tarch=`arch`"-$osname"
4419 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4420         if uname -m > tmparch 2>&1 ; then
4421                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4422                         -e 's/$/'"-$osname/" tmparch`
4423         else
4424                 tarch="$osname"
4425         fi
4426         $rm -f tmparch
4427 else
4428         tarch="$osname"
4429 fi
4430 case "$myarchname" in
4431 ''|"$tarch") ;;
4432 *)
4433         echo "(Your architecture name used to be $myarchname.)"
4434         archname=''
4435         ;;
4436 esac
4437 myarchname="$tarch"
4438 case "$archname" in
4439 '') dflt="$tarch";;
4440 *) dflt="$archname";;
4441 esac
4442 rp='What is your architecture name'
4443 . ./myread
4444 archname="$ans"
4445 case "$usethreads" in
4446 $define)
4447         echo "Threads selected." >&4
4448         case "$archname" in
4449         *-thread*) echo "...and architecture name already has -thread." >&4
4450                 ;;
4451         *)      archname="$archname-thread"
4452                 echo "...setting architecture name to $archname." >&4
4453                 ;;
4454         esac
4455         ;;
4456 esac
4457 case "$usemultiplicity" in
4458 $define)
4459         echo "Multiplicity selected." >&4
4460         case "$archname" in
4461         *-multi*) echo "...and architecture name already has -multi." >&4
4462                 ;;
4463         *)      archname="$archname-multi"
4464                 echo "...setting architecture name to $archname." >&4
4465                 ;;
4466         esac
4467         ;;
4468 esac
4469 case "$use64bits" in
4470 $define)
4471         case "$archname64" in
4472         '')
4473                 ;;
4474         *)
4475                 case "$archname" in
4476                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4477                         ;;
4478                 *)      archname="$archname-$archname64"
4479                         echo "...setting architecture name to $archname." >&4
4480                         ;;
4481                 esac
4482                 ;;
4483         esac
4484 esac
4485
4486 : determine root of directory hierarchy where package will be installed.
4487 case "$prefix" in
4488 '')
4489         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4490         ;;
4491 *)
4492         dflt="$prefix"
4493         ;;
4494 esac
4495 $cat <<EOM
4496
4497 By default, $package will be installed in $dflt/bin, manual pages
4498 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4499 installation directories. Typically this is something like /usr/local.
4500 If you wish to have binaries under /usr/bin but other parts of the
4501 installation under /usr/local, that's ok: you will be prompted
4502 separately for each of the installation directories, the prefix being
4503 only used to set the defaults.
4504
4505 EOM
4506 fn=d~
4507 rp='Installation prefix to use?'
4508 . ./getfile
4509 oldprefix=''
4510 case "$prefix" in
4511 '') ;;
4512 *)
4513         case "$ans" in
4514         "$prefix") ;;
4515         *) oldprefix="$prefix";;
4516         esac
4517         ;;
4518 esac
4519 prefix="$ans"
4520 prefixexp="$ansexp"
4521
4522 : is AFS running?
4523 echo " "
4524 case "$afs" in
4525 $define|true)   afs=true ;;
4526 $undef|false)   afs=false ;;
4527 *)      if test -d /afs; then
4528                 afs=true
4529         else
4530                 afs=false
4531         fi
4532         ;;
4533 esac
4534 if $afs; then
4535         echo "AFS may be running... I'll be extra cautious then..." >&4
4536 else
4537         echo "AFS does not seem to be running..." >&4
4538 fi
4539
4540 : determine installation prefix for where package is to be installed.
4541 if $afs; then 
4542 $cat <<EOM
4543
4544 Since you are running AFS, I need to distinguish the directory in which
4545 files will reside from the directory in which they are installed (and from
4546 which they are presumably copied to the former directory by occult means).
4547
4548 EOM
4549         case "$installprefix" in
4550         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4551         *) dflt="$installprefix";;
4552         esac
4553 else
4554 $cat <<EOM
4555
4556 In some special cases, particularly when building $package for distribution,
4557 it is convenient to distinguish between the directory in which files should 
4558 be installed from the directory ($prefix) in which they 
4559 will eventually reside.  For most users, these two directories are the same.
4560
4561 EOM
4562         case "$installprefix" in
4563         '') dflt=$prefix ;;
4564         *) dflt=$installprefix;;
4565         esac
4566 fi
4567 fn=d~
4568 rp='What installation prefix should I use for installing files?'
4569 . ./getfile
4570 installprefix="$ans"
4571 installprefixexp="$ansexp"
4572
4573 : set the prefixit variable, to compute a suitable default value
4574 prefixit='case "$3" in
4575 ""|none)
4576         case "$oldprefix" in
4577         "") eval "$1=\"\$$2\"";;
4578         *)
4579                 case "$3" in
4580                 "") eval "$1=";;
4581                 none)
4582                         eval "tp=\"\$$2\"";
4583                         case "$tp" in
4584                         ""|" ") eval "$1=\"\$$2\"";;
4585                         *) eval "$1=";;
4586                         esac;;
4587                 esac;;
4588         esac;;
4589 *)
4590         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4591         case "$tp" in
4592         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4593         /*-$oldprefix/*|\~*-$oldprefix/*)
4594                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4595         *) eval "$1=\"\$$2\"";;
4596         esac;;
4597 esac'
4598
4599 : set the base revision
4600 baserev=5.0
4601
4602
4603 : get the patchlevel
4604 echo " "
4605 echo "Getting the current patchlevel..." >&4
4606 if $test -r $rsrc/patchlevel.h;then
4607         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4608         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4609         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4610         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4611         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4612 else
4613         patchlevel=0
4614         subversion=0
4615         api_revision=0
4616         api_version=0
4617         api_subversion=0
4618 fi
4619 $echo $n "(You have $package" $c
4620 case "$package" in
4621 "*$baserev")    ;;
4622 *)              $echo $n " $baserev" $c ;;
4623 esac
4624 $echo $n " patchlevel $patchlevel" $c
4625 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4626 echo ".)"
4627 case "$osname" in
4628 dos|cygwin|vms|win32)
4629         : XXX Should be a Configure test for double-dots in filenames.
4630         version=`echo $baserev $patchlevel $subversion | \
4631                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4632         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4633                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4634         ;;
4635 *)
4636         version=`echo $baserev $patchlevel $subversion | \
4637                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4638         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4639                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4640         ;;
4641 esac
4642 : Special case the 5.005_xx maintenance series, which used 5.005
4643 : without any subversion label as a subdirectory in $sitelib
4644 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4645         api_versionstring='5.005'
4646 fi
4647
4648 : determine installation style
4649 : For now, try to deduce it from prefix unless it is already set.
4650 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4651 case "$installstyle" in
4652 '')     case "$prefix" in
4653                 *perl*) dflt='lib';;
4654                 *) dflt='lib/perl5' ;;
4655         esac
4656         ;;
4657 *)      dflt='lib/perl5' ;;
4658 esac
4659 : Probably not worth prompting for this since we prompt for all
4660 : the directories individually, and the prompt would be too long and
4661 : confusing anyway.
4662 installstyle=$dflt
4663
4664 : determine where private library files go
4665 : Usual default is /usr/local/lib/perl5/$version.
4666 : Also allow things like /opt/perl/lib/$version, since 
4667 : /opt/perl/lib/perl5... would be redundant.
4668 : The default "style" setting is made in installstyle.U
4669 case "$installstyle" in
4670 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4671 *)       set dflt privlib lib/$version ;;
4672 esac
4673 eval $prefixit
4674 $cat <<EOM
4675
4676 There are some auxiliary files for $package that need to be put into a
4677 private library directory that is accessible by everyone.
4678
4679 EOM
4680 fn=d~+
4681 rp='Pathname where the private library files will reside?'
4682 . ./getfile
4683 privlib="$ans"
4684 privlibexp="$ansexp"
4685 : Change installation prefix, if necessary.
4686 if $test X"$prefix" != X"$installprefix"; then
4687         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4688 else
4689         installprivlib="$privlibexp"
4690 fi
4691
4692 : set the prefixup variable, to restore leading tilda escape
4693 prefixup='case "$prefixexp" in
4694 "$prefix") ;;
4695 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4696 esac'
4697
4698 : determine where public architecture dependent libraries go
4699 set archlib archlib
4700 eval $prefixit
4701 : privlib default is /usr/local/lib/$package/$version
4702 : archlib default is /usr/local/lib/$package/$version/$archname
4703 : privlib may have an optional trailing /share.
4704 tdflt=`echo $privlib | $sed 's,/share$,,'`
4705 tdflt=$tdflt/$archname
4706 case "$archlib" in
4707 '')     dflt=$tdflt
4708         ;;
4709 *)      dflt="$archlib"
4710     ;;
4711 esac
4712 $cat <<EOM
4713
4714 $spackage contains architecture-dependent library files.  If you are
4715 sharing libraries in a heterogeneous environment, you might store
4716 these files in a separate location.  Otherwise, you can just include
4717 them with the rest of the public library files.
4718
4719 EOM
4720 fn=d+~
4721 rp='Where do you want to put the public architecture-dependent libraries?'
4722 . ./getfile
4723 archlib="$ans"
4724 archlibexp="$ansexp"
4725 if $test X"$archlib" = X"$privlib"; then
4726         d_archlib="$undef"
4727 else
4728         d_archlib="$define"
4729 fi
4730 : Change installation prefix, if necessary.
4731 if $test X"$prefix" != X"$installprefix"; then
4732         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4733 else
4734         installarchlib="$archlibexp"
4735 fi
4736
4737
4738 : Binary compatibility with 5.005 is not possible for builds
4739 : with advanced features
4740 case "$usethreads$usemultiplicity" in
4741 *define*)
4742         bincompat5005="$undef"
4743         d_bincompat5005="$undef"
4744         ;;
4745 *)      $cat <<EOM
4746
4747 Perl 5.006 can be compiled for binary compatibility with 5.005.
4748 If you decide to do so, you will be able to continue using most
4749 of the extensions that were compiled for Perl 5.005.
4750
4751 EOM
4752         case "$bincompat5005$d_bincompat5005" in
4753         *"$undef"*) dflt=n ;;
4754         *) dflt=y ;;
4755         esac
4756         rp='Binary compatibility with Perl 5.005?'
4757         . ./myread
4758         case "$ans" in
4759         y*) val="$define" ;;
4760         *)  val="$undef" ;;
4761         esac
4762         set d_bincompat5005
4763         eval $setvar
4764         case "$d_bincompat5005" in
4765         "$define")
4766                 bincompat5005="$define"
4767                 ;;
4768         *)      bincompat5005="$undef"
4769                 d_bincompat5005="$undef"
4770                 ;;
4771         esac
4772         ;;
4773 esac
4774
4775
4776 : see if setuid scripts can be secure
4777 $cat <<EOM
4778
4779 Some kernels have a bug that prevents setuid #! scripts from being
4780 secure.  Some sites have disabled setuid #! scripts because of this.
4781
4782 First let's decide if your kernel supports secure setuid #! scripts.
4783 (If setuid #! scripts would be secure but have been disabled anyway,
4784 don't say that they are secure if asked.)
4785
4786 EOM
4787
4788 val="$undef"
4789 if $test -d /dev/fd; then
4790         echo "#!$ls" >reflect
4791         chmod +x,u+s reflect
4792         ./reflect >flect 2>&1
4793         if $contains "/dev/fd" flect >/dev/null; then
4794                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4795                 val="$define"
4796         else
4797                 $cat <<EOM
4798 If you are not sure if they are secure, I can check but I'll need a
4799 username and password different from the one you are using right now.
4800 If you don't have such a username or don't want me to test, simply
4801 enter 'none'.
4802
4803 EOM
4804                 rp='Other username to test security of setuid scripts with?'
4805                 dflt='none'
4806                 . ./myread
4807                 case "$ans" in
4808                 n|none)
4809                         case "$d_suidsafe" in
4810                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
4811                                 dflt=n;;
4812                         "$undef")
4813                                 echo "Well, the $hint value is *not* secure." >&4
4814                                 dflt=n;;
4815                         *)      echo "Well, the $hint value *is* secure." >&4
4816                                 dflt=y;;
4817                         esac
4818                         ;;
4819                 *)
4820                         $rm -f reflect flect
4821                         echo "#!$ls" >reflect
4822                         chmod +x,u+s reflect
4823                         echo >flect
4824                         chmod a+w flect
4825                         echo '"su" will (probably) prompt you for '"$ans's password."
4826                         su $ans -c './reflect >flect'
4827                         if $contains "/dev/fd" flect >/dev/null; then
4828                                 echo "Okay, it looks like setuid scripts are secure." >&4
4829                                 dflt=y
4830                         else
4831                                 echo "I don't think setuid scripts are secure." >&4
4832                                 dflt=n
4833                         fi
4834                         ;;
4835                 esac
4836                 rp='Does your kernel have *secure* setuid scripts?'
4837                 . ./myread
4838                 case "$ans" in
4839                 [yY]*)  val="$define";;
4840                 *)      val="$undef";;
4841                 esac
4842         fi
4843 else
4844         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
4845         echo "(That's for file descriptors, not floppy disks.)"
4846         val="$undef"
4847 fi
4848 set d_suidsafe
4849 eval $setvar
4850
4851 $rm -f reflect flect
4852
4853 : now see if they want to do setuid emulation
4854 echo " "
4855 val="$undef"
4856 case "$d_suidsafe" in
4857 "$define")
4858         val="$undef"
4859         echo "No need to emulate SUID scripts since they are secure here." >& 4
4860         ;;
4861 *)
4862         $cat <<EOM
4863 Some systems have disabled setuid scripts, especially systems where
4864 setuid scripts cannot be secure.  On systems where setuid scripts have
4865 been disabled, the setuid/setgid bits on scripts are currently
4866 useless.  It is possible for $package to detect those bits and emulate
4867 setuid/setgid in a secure fashion.  This emulation will only work if
4868 setuid scripts have been disabled in your kernel.
4869
4870 EOM
4871         case "$d_dosuid" in
4872         "$define") dflt=y ;;
4873         *) dflt=n ;;
4874         esac
4875         rp="Do you want to do setuid/setgid emulation?"
4876         . ./myread
4877         case "$ans" in
4878         [yY]*)  val="$define";;
4879         *)      val="$undef";;
4880         esac
4881         ;;
4882 esac
4883 set d_dosuid
4884 eval $setvar
4885
4886 : determine filename position in cpp output
4887 echo " "
4888 echo "Computing filename position in cpp output for #include directives..." >&4
4889 echo '#include <stdio.h>' > foo.c
4890 $cat >fieldn <<EOF
4891 $startsh
4892 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4893 $grep '^[       ]*#.*stdio\.h' | \
4894 while read cline; do
4895         pos=1
4896         set \$cline
4897         while $test \$# -gt 0; do
4898                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4899                         echo "\$pos"
4900                         exit 0
4901                 fi
4902                 shift
4903                 pos=\`expr \$pos + 1\`
4904         done
4905 done
4906 EOF
4907 chmod +x fieldn
4908 fieldn=`./fieldn`
4909 $rm -f foo.c fieldn
4910 case $fieldn in
4911 '') pos='???';;
4912 1) pos=first;;
4913 2) pos=second;;
4914 3) pos=third;;
4915 *) pos="${fieldn}th";;
4916 esac
4917 echo "Your cpp writes the filename in the $pos field of the line."
4918
4919 : locate header file
4920 $cat >findhdr <<EOF
4921 $startsh
4922 wanted=\$1
4923 name=''
4924 for usrincdir in $usrinc
4925 do
4926         if test -f \$usrincdir/\$wanted; then
4927                 echo "\$usrincdir/\$wanted"
4928                 exit 0
4929         fi
4930 done
4931 awkprg='{ print \$$fieldn }'
4932 echo "#include <\$wanted>" > foo\$\$.c
4933 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4934 $grep "^[       ]*#.*\$wanted" | \
4935 while read cline; do
4936         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4937         case "\$name" in
4938         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4939         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4940         *) exit 2;;
4941         esac;
4942 done;
4943 #
4944 # status = 0: grep returned 0 lines, case statement not executed
4945 # status = 1: headerfile found
4946 # status = 2: while loop executed, no headerfile found
4947 #
4948 status=\$?
4949 $rm -f foo\$\$.c;
4950 if test \$status -eq 1; then
4951         exit 0;
4952 fi
4953 exit 1
4954 EOF
4955 chmod +x findhdr
4956
4957 : define an alternate in-header-list? function
4958 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4959 cont=true; xxf="echo \"<\$1> found.\" >&4";
4960 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4961 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4962 esac;
4963 case $# in 4) instead=instead;; *) instead="at last";; esac;
4964 while $test "$cont"; do
4965         xxx=`./findhdr $1`
4966         var=$2; eval "was=\$$2";
4967         if $test "$xxx" && $test -r "$xxx";
4968         then eval $xxf;
4969         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4970                 cont="";
4971         else eval $xxnf;
4972         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4973         set $yyy; shift; shift; yyy=$@;
4974         case $# in 0) cont="";;
4975         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4976                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4977         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4978                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4979         esac;
4980 done;
4981 while $test "$yyy";
4982 do set $yyy; var=$2; eval "was=\$$2";
4983         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4984         set $yyy; shift; shift; yyy=$@;
4985 done'
4986
4987 : see if this is a malloc.h system
4988 set malloc.h i_malloc
4989 eval $inhdr
4990
4991 : see if stdlib is available
4992 set stdlib.h i_stdlib
4993 eval $inhdr
4994
4995 : determine which malloc to compile in
4996 echo " "
4997 case "$usemymalloc" in
4998 ''|[yY]*|true|$define)  dflt='y' ;;
4999 *)      dflt='n' ;;
5000 esac
5001 rp="Do you wish to attempt to use the malloc that comes with $package?"
5002 . ./myread
5003 usemymalloc="$ans"
5004 case "$ans" in
5005 y*|true)
5006         usemymalloc='y'
5007         mallocsrc='malloc.c'
5008         mallocobj="malloc$_o"
5009         d_mymalloc="$define"
5010         case "$libs" in
5011         *-lmalloc*)
5012                 : Remove malloc from list of libraries to use
5013                 echo "Removing unneeded -lmalloc from library list" >&4
5014                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5015                 shift
5016                 libs="$*"
5017                 echo "libs = $libs" >&4
5018                 ;;
5019         esac
5020         ;;
5021 *)
5022         usemymalloc='n'
5023         mallocsrc=''
5024         mallocobj=''
5025         d_mymalloc="$undef"
5026         ;;
5027 esac
5028
5029 : compute the return types of malloc and free
5030 echo " "
5031 $cat >malloc.c <<END
5032 #$i_malloc I_MALLOC
5033 #$i_stdlib I_STDLIB
5034 #include <stdio.h>
5035 #include <sys/types.h>
5036 #ifdef I_MALLOC
5037 #include <malloc.h>
5038 #endif
5039 #ifdef I_STDLIB
5040 #include <stdlib.h>
5041 #endif
5042 #ifdef TRY_MALLOC
5043 void *malloc();
5044 #endif
5045 #ifdef TRY_FREE
5046 void free();
5047 #endif
5048 END
5049 case "$malloctype" in
5050 '')
5051         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5052                 malloctype='void *'
5053         else
5054                 malloctype='char *'
5055         fi
5056         ;;
5057 esac
5058 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5059
5060 case "$freetype" in
5061 '')
5062         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5063                 freetype='void'
5064         else
5065                 freetype='int'
5066         fi
5067         ;;
5068 esac
5069 echo "Your system uses $freetype free(), it would seem." >&4
5070 $rm -f malloc.[co]
5071 $cat <<EOM
5072
5073 The installation process will also create a directory for
5074 vendor-supplied add-ons.  Vendors who supply perl with their system
5075 may find it convenient to place all vendor-supplied files in this
5076 directory rather than in the main distribution directory.  This will
5077 ease upgrades between binary-compatible maintenance versions of perl.
5078
5079 Of course you may also use these directories in whatever way you see
5080 fit.  For example, you might use them to access modules shared over a
5081 company-wide network.
5082
5083 The default answer should be fine for most people.
5084 This causes further questions about vendor add-ons to be skipped
5085 and no vendor-specific directories will be configured for perl.
5086
5087 EOM
5088 rp='Do you want to configure vendor-specific add-on directories?'
5089 case "$usevendorprefix" in
5090 define|true|[yY]*) dflt=y ;;
5091 *) dflt=n ;;
5092 esac
5093 . ./myread
5094 case "$ans" in
5095 [yY]*)  fn=d~+
5096         rp='Installation prefix to use for vendor-supplied add-ons?'
5097         case "$vendorprefix" in
5098         '') dflt='' ;;
5099         *)  dflt=$vendorprefix ;;
5100         esac
5101         . ./getfile
5102         oldvendorprefix=''
5103         case "$vendorprefix" in
5104         '') ;;
5105         *)      case "$ans" in
5106                 "$prefix") ;;
5107                 *) oldvendorprefix="$prefix";;
5108                 esac
5109                 ;;
5110         esac
5111         usevendorprefix="$define"
5112         vendorprefix="$ans"
5113         vendorprefixexp="$ansexp"
5114         ;;
5115 *)      usevendorprefix="$undef"
5116         vendorprefix=''
5117         vendorprefixexp=''
5118         ;;
5119 esac
5120
5121 case "$vendorprefix" in
5122 '')     d_vendorlib="$undef"
5123         vendorlib=''
5124         vendorlibexp=''
5125         ;;
5126 *)      d_vendorlib="$define"
5127         : determine where vendor-supplied modules go.
5128         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5129         prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5130         case "$installstyle" in
5131         *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5132         *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5133         esac
5134         fn=d~+
5135         rp='Pathname for the vendor-supplied library files?'
5136         . ./getfile
5137         vendorlib="$ans"
5138         vendorlibexp="$ansexp"
5139         : Change installation prefix, if necessary.
5140         if $test X"$prefix" != X"$installprefix"; then
5141                 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5142         else
5143                 installvendorlib="$vendorlibexp"
5144         fi
5145         ;;
5146 esac
5147
5148 : Cruising for prototypes
5149 echo " "
5150 echo "Checking out function prototypes..." >&4
5151 $cat >prototype.c <<'EOCP'
5152 int main(int argc, char *argv[]) {
5153         exit(0);}
5154 EOCP
5155 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5156         echo "Your C compiler appears to support function prototypes."
5157         val="$define"
5158 else
5159         echo "Your C compiler doesn't seem to understand function prototypes."
5160         val="$undef"
5161 fi
5162 set prototype
5163 eval $setvar
5164 $rm -f prototype*
5165
5166 case "$prototype" in
5167 "$define") ;;
5168 *)      ansi2knr='ansi2knr'
5169         echo " "
5170         cat <<EOM >&4
5171
5172 $me:  FATAL ERROR:
5173 This version of $package can only be compiled by a compiler that 
5174 understands function prototypes.  Unfortunately, your C compiler 
5175         $cc $ccflags
5176 doesn't seem to understand them.  Sorry about that.
5177
5178 If GNU cc is available for your system, perhaps you could try that instead.  
5179
5180 Eventually, we hope to support building Perl with pre-ANSI compilers.
5181 If you would like to help in that effort, please contact <perlbug@perl.org>.
5182
5183 Aborting Configure now.
5184 EOM
5185         exit 2
5186         ;;
5187 esac
5188
5189 : determine where public executables go
5190 echo " "
5191 set dflt bin bin
5192 eval $prefixit
5193 fn=d~
5194 rp='Pathname where the public executables will reside?'
5195 . ./getfile
5196 if $test "X$ansexp" != "X$binexp"; then
5197         installbin=''
5198 fi
5199 bin="$ans"
5200 binexp="$ansexp"
5201 : Change installation prefix, if necessary.
5202 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5203 if $test X"$prefix" != X"$installprefix"; then
5204         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5205 else
5206         installbin="$binexp"
5207 fi
5208
5209 $cat <<EOM
5210
5211 After $package is installed, you may wish to install various
5212 add-on modules and utilities.  Typically, these add-ons will
5213 be installed under $prefix with the rest
5214 of this package.  However, you may wish to install such add-ons
5215 elsewhere under a different prefix.
5216
5217 If you do not wish to put everything under a single prefix, that's
5218 ok.  You will be prompted for the individual locations; this siteprefix
5219 is only used to suggest the defaults.
5220
5221 The default should be fine for most people.
5222
5223 EOM
5224 fn=d~+
5225 rp='Installation prefix to use for add-on modules and utilities?'
5226 : XXX Here might be another good place for an installstyle setting.
5227 case "$siteprefix" in
5228 '') dflt=$prefix ;;
5229 *)  dflt=$siteprefix ;;
5230 esac
5231 . ./getfile
5232 oldsiteprefix=''
5233 case "$siteprefix" in
5234 '') ;;
5235 *)
5236         case "$ans" in
5237         "$prefix") ;;
5238         *) oldsiteprefix="$prefix";;
5239         esac
5240         ;;
5241 esac
5242 siteprefix="$ans"
5243 siteprefixexp="$ansexp"
5244
5245 : determine where site specific libraries go.
5246 : Usual default is /usr/local/lib/perl5/site_perl/$version
5247 : The default "style" setting is made in installstyle.U
5248 : XXX No longer works with Prefixit stuff.
5249 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5250 case "$installstyle" in
5251 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5252 *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5253 esac
5254 $cat <<EOM
5255
5256 The installation process will create a directory for
5257 site-specific extensions and modules.  Most users find it convenient
5258 to place all site-specific files in this directory rather than in the
5259 main distribution directory.
5260
5261 EOM
5262 fn=d~+
5263 rp='Pathname for the site-specific library files?'
5264 . ./getfile
5265 sitelib="$ans"
5266 sitelibexp="$ansexp"
5267 : Change installation prefix, if necessary.
5268 if $test X"$prefix" != X"$installprefix"; then
5269         installsitelib=`echo $sitelibexp | sed "s#^$prefix#$installprefix#"`
5270 else
5271         installsitelib="$sitelibexp"
5272 fi
5273
5274 : Determine list of previous versions to include in @INC
5275 $cat > getverlist <<EOPL
5276 #!$perl -w
5277 use File::Basename;
5278 \$api_versionstring = "$api_versionstring";
5279 \$version = "$version";
5280 \$sitelib = "$sitelib";
5281 \$archname = "$archname";
5282 EOPL
5283         $cat >> getverlist <<'EOPL'
5284 # Can't have leading @ because metaconfig interprets it as a command!
5285 ;@inc_version_list=();
5286 $stem=dirname($sitelib);
5287 # Redo to do opendir/readdir? 
5288 if (-d $stem) {
5289     chdir($stem);
5290     ;@candidates = glob("5.*");
5291 }
5292 else {
5293     ;@candidates = ();
5294 }
5295
5296 # XXX ToDo:  These comparisons must be reworked when two-digit
5297 # subversions come along, so that 5.7.10 compares as greater than
5298 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
5299 # widespread that we can use the built-in version vectors rather
5300 # than reinventing them here.  For 5.6.0, however, we must
5301 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
5302 foreach $d (@candidates) {
5303     if ($d lt $version) {
5304         if ($d ge $api_versionstring) {
5305             unshift(@inc_version_list, "$d/$archname", $d);
5306         }
5307         elsif ($d ge "5.005") {
5308             unshift(@inc_version_list, $d);
5309         }
5310     }
5311     else {
5312         # Skip newer version.  I.e. don't look in
5313         # 5.7.0 if we're installing 5.6.1.
5314     }
5315 }
5316
5317 if (@inc_version_list) {
5318     print join(' ', @inc_version_list);
5319 }
5320 else {
5321     # Blank space to preserve value for next Configure run.
5322     print " ";
5323 }
5324 EOPL
5325 chmod +x getverlist
5326 case "$inc_version_list" in
5327 '')     if test -x $perl; then
5328                 dflt=`$perl getverlist`
5329         else
5330                 dflt='none'
5331         fi
5332         ;;
5333 $undef) dflt='none' ;;
5334 *)  dflt="$inc_version_list" ;;
5335 esac
5336 $cat <<'EOM'
5337
5338 In order to ease the process of upgrading, this version of perl 
5339 can be configured to use modules built and installed with earlier 
5340 versions of perl that were installed under $prefix.  Specify here
5341 the list of earlier versions that this version of perl should check.
5342 If Configure detected no earlier versions of perl installed under
5343 $prefix, then the list will be empty.  Answer 'none' to tell perl
5344 to not search earlier versions.
5345
5346 The default should almost always be sensible, so if you're not sure,
5347 just accept the default.
5348 EOM
5349
5350 rp='List of earlier versions to include in @INC?'
5351 . ./myread
5352 case "$ans" in
5353 [Nn]one) inc_version_list=' ' ;;
5354 *) inc_version_list="$ans" ;;
5355 esac
5356 case "$inc_version_list" in
5357 ''|' ') 
5358         inc_version_list_init='""';;
5359 *)      inc_version_list_init=`echo $inc_version_list |
5360                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/"/'`
5361         ;;
5362 esac
5363 $rm -f getverlist
5364
5365 : determine whether to install perl also as /usr/bin/perl
5366
5367 echo " "
5368 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5369         $cat <<EOM
5370 Many scripts expect to perl to be installed as /usr/bin/perl.
5371 I can install the perl you are about to compile also as /usr/bin/perl
5372 (in addition to $installbin/perl).
5373 EOM
5374         case "$installusrbinperl" in
5375         "$undef"|[nN]*) dflt='n';;
5376         *)              dflt='y';;
5377         esac
5378         rp="Do you want to install perl as /usr/bin/perl?"
5379         . ./myread
5380         case "$ans" in
5381         [yY]*)  val="$define";;
5382         *)      val="$undef" ;;
5383         esac
5384 else
5385         val="$undef"
5386 fi
5387 set installusrbinperl
5388 eval $setvar
5389
5390 echo " "
5391 echo "Checking for GNU C Library..." >&4
5392 cat >gnulibc.c <<EOM
5393 #include <stdio.h>
5394 int main()
5395 {
5396 #ifdef __GLIBC__
5397     exit(0);
5398 #else
5399     exit(1);
5400 #endif
5401 }
5402 EOM
5403 set gnulibc
5404 if eval $compile_ok && ./gnulibc; then
5405         val="$define"
5406         echo "You are using the GNU C Library"
5407 else
5408         val="$undef"
5409         echo "You are not using the GNU C Library"
5410 fi
5411 $rm -f gnulibc*
5412 set d_gnulibc
5413 eval $setvar
5414
5415 : see if nm is to be used to determine whether a symbol is defined or not
5416 case "$usenm" in
5417 '')
5418         dflt=''
5419         case "$d_gnulibc" in
5420         "$define")
5421                 echo " "
5422                 echo "nm probably won't work on the GNU C Library." >&4
5423                 dflt=n
5424                 ;;
5425         esac
5426         case "$dflt" in
5427         '') 
5428                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5429                         echo " "
5430                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5431                         echo "'nm' won't be sufficient on this sytem." >&4
5432                         dflt=n
5433                 fi
5434                 ;;
5435         esac
5436         case "$dflt" in
5437         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5438                 if $test $dflt -gt 20; then
5439                         dflt=y
5440                 else
5441                         dflt=n
5442                 fi
5443                 ;;
5444         esac
5445         ;;
5446 *)
5447         case "$usenm" in
5448         true|$define) dflt=y;;
5449         *) dflt=n;;
5450         esac
5451         ;;
5452 esac
5453 $cat <<EOM
5454
5455 I can use $nm to extract the symbols from your C libraries. This
5456 is a time consuming task which may generate huge output on the disk (up
5457 to 3 megabytes) but that should make the symbols extraction faster. The
5458 alternative is to skip the 'nm' extraction part and to compile a small
5459 test program instead to determine whether each symbol is present. If
5460 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5461 this may be the best solution.
5462
5463 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5464
5465 EOM
5466 rp="Shall I use $nm to extract C symbols from the libraries?"
5467 . ./myread
5468 case "$ans" in
5469 [Nn]*) usenm=false;;
5470 *) usenm=true;;
5471 esac
5472
5473 runnm=$usenm
5474 case "$reuseval" in
5475 true) runnm=false;;
5476 esac
5477
5478 : nm options which may be necessary
5479 case "$nm_opt" in
5480 '') if $test -f /mach_boot; then
5481                 nm_opt=''       # Mach
5482         elif $test -d /usr/ccs/lib; then
5483                 nm_opt='-p'     # Solaris (and SunOS?)
5484         elif $test -f /dgux; then
5485                 nm_opt='-p'     # DG-UX
5486         elif $test -f /lib64/rld; then
5487                 nm_opt='-p'     # 64-bit Irix
5488         else
5489                 nm_opt=''
5490         fi;;
5491 esac
5492
5493 : nm options which may be necessary for shared libraries but illegal
5494 : for archive libraries.  Thank you, Linux.
5495 case "$nm_so_opt" in
5496 '')     case "$myuname" in
5497         *linux*)
5498                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5499                         nm_so_opt='--dynamic'
5500                 fi
5501                 ;;
5502         esac
5503         ;;
5504 esac
5505
5506 case "$runnm" in
5507 true)
5508 : get list of predefined functions in a handy place
5509 echo " "
5510 case "$libc" in
5511 '') libc=unknown
5512         case "$libs" in
5513         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5514         esac
5515         ;;
5516 esac
5517 libnames='';
5518 case "$libs" in
5519 '') ;;
5520 *)  for thislib in $libs; do
5521         case "$thislib" in
5522         -lc|-lc_s)
5523                 : Handle C library specially below.
5524                 ;;
5525         -l*)
5526                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5527                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5528                         :
5529                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5530                         :
5531                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5532                         :
5533                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5534                         :
5535                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5536                         :
5537                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5538                         :
5539                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5540                         :
5541                 else
5542                         try=''
5543                 fi
5544                 libnames="$libnames $try"
5545                 ;;
5546         *) libnames="$libnames $thislib" ;;
5547         esac
5548         done
5549         ;;
5550 esac
5551 xxx=normal
5552 case "$libc" in
5553 unknown)
5554         set /lib/libc.$so
5555         for xxx in $libpth; do
5556                 $test -r $1 || set $xxx/libc.$so
5557                 : The messy sed command sorts on library version numbers.
5558                 $test -r $1 || \
5559                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5560                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5561                                 h
5562                                 s/[0-9][0-9]*/0000&/g
5563                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5564                                 G
5565                                 s/\n/ /' | \
5566                          sort | $sed -e 's/^.* //'`
5567                 eval set \$$#
5568         done
5569         $test -r $1 || set /usr/ccs/lib/libc.$so
5570         $test -r $1 || set /lib/libsys_s$_a
5571         ;;
5572 *)
5573         set blurfl
5574         ;;
5575 esac
5576 if $test -r "$1"; then
5577         echo "Your (shared) C library seems to be in $1."
5578         libc="$1"
5579 elif $test -r /lib/libc && $test -r /lib/clib; then
5580         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5581         xxx=apollo
5582         libc='/lib/clib /lib/libc'
5583         if $test -r /lib/syslib; then
5584                 echo "(Your math library is in /lib/syslib.)"
5585                 libc="$libc /lib/syslib"
5586         fi
5587 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5588         echo "Your C library seems to be in $libc, as you said before."
5589 elif $test -r $incpath/usr/lib/libc$_a; then
5590         libc=$incpath/usr/lib/libc$_a;
5591         echo "Your C library seems to be in $libc.  That's fine."
5592 elif $test -r /lib/libc$_a; then
5593         libc=/lib/libc$_a;
5594         echo "Your C library seems to be in $libc.  You're normal."
5595 else
5596         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5597                 :
5598         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5599                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5600         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5601                 :
5602         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5603                 :
5604         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5605                 :
5606         else
5607                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5608         fi
5609         if $test -r "$tans"; then
5610                 echo "Your C library seems to be in $tans, of all places."
5611                 libc=$tans
5612         else
5613                 libc='blurfl'
5614         fi
5615 fi
5616 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5617         dflt="$libc"
5618         cat <<EOM
5619
5620 If the guess above is wrong (which it might be if you're using a strange
5621 compiler, or your machine supports multiple models), you can override it here.
5622
5623 EOM
5624 else
5625         dflt=''
5626         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5627         cat >&4 <<EOM
5628 I can't seem to find your C library.  I've looked in the following places:
5629
5630 EOM
5631         $sed 's/^/      /' libpath
5632         cat <<EOM
5633
5634 None of these seems to contain your C library. I need to get its name...
5635
5636 EOM
5637 fi
5638 fn=f
5639 rp='Where is your C library?'
5640 . ./getfile
5641 libc="$ans"
5642
5643 echo " "
5644 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5645 set X `cat libnames`
5646 shift
5647 xxx=files
5648 case $# in 1) xxx=file; esac
5649 echo "Extracting names from the following $xxx for later perusal:" >&4
5650 echo " "
5651 $sed 's/^/      /' libnames >&4
5652 echo " "
5653 $echo $n "This may take a while...$c" >&4
5654
5655 for file in $*; do
5656         case $file in
5657         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5658         *) $nm $nm_opt $file 2>/dev/null;;
5659         esac
5660 done >libc.tmp
5661
5662 $echo $n ".$c"
5663 $grep fprintf libc.tmp > libc.ptf
5664 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5665 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5666 xxx='[ADTSIW]'
5667 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5668         eval $xscan;\
5669         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5670                 eval $xrun
5671 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5672         eval $xscan;\
5673         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5674                 eval $xrun
5675 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5676         eval $xscan;\
5677         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5678                 eval $xrun
5679 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5680         eval $xscan;\
5681         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5682                 eval $xrun
5683 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5684         eval $xscan;\
5685         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5686                 eval $xrun
5687 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5688         eval $xscan;\
5689         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5690                 eval $xrun
5691 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5692                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5693         eval $xscan;\
5694         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5695                 eval $xrun
5696 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5697         eval $xscan;\
5698         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5699                 eval $xrun
5700 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5701         eval $xscan;\
5702         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5703                 eval $xrun
5704 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5705         eval $xscan;\
5706         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5707                 eval $xrun
5708 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5709         eval $xscan;\
5710         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5711                 eval $xrun
5712 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5713         eval $xscan;\
5714         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5715                 eval $xrun
5716 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5717         eval $xscan;\
5718         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5719                 eval $xrun
5720 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5721         eval $xscan;\
5722         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5723                 eval $xrun
5724 else
5725         $nm -p $* 2>/dev/null >libc.tmp
5726         $grep fprintf libc.tmp > libc.ptf
5727         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5728                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5729         then
5730                 nm_opt='-p'
5731                 eval $xrun
5732         else
5733                 echo " "
5734                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5735                 com=''
5736                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5737                         for thisname in $libnames $libc; do
5738                                 $ar t $thisname >>libc.tmp
5739                         done
5740                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5741                         echo "Ok." >&4
5742                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5743                         # Repeat libc to extract forwarders to DLL entries too
5744                         for thisname in $libnames $libc; do
5745                                 $ar tv $thisname >>libc.tmp
5746                                 # Revision 50 of EMX has bug in $ar.
5747                                 # it will not extract forwarders to DLL entries
5748                                 # Use emximp which will extract exactly them.
5749                                 emximp -o tmp.imp $thisname \
5750                                     2>/dev/null && \
5751                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5752                                     < tmp.imp >>libc.tmp
5753                                 $rm tmp.imp
5754                         done
5755                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5756                         echo "Ok." >&4
5757                 else
5758                         echo "$ar didn't seem to work right." >&4
5759                         echo "Maybe this is a Cray...trying bld instead..." >&4
5760                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5761                         then
5762                                 for thisname in $libnames; do
5763                                         bld t $libnames | \
5764                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5765                                         $ar t $thisname >>libc.tmp
5766                                 done
5767                                 echo "Ok." >&4
5768                         else
5769                                 echo "That didn't work either.  Giving up." >&4
5770                                 exit 1
5771                         fi
5772                 fi
5773         fi
5774 fi
5775 nm_extract="$com"
5776 if $test -f /lib/syscalls.exp; then
5777         echo " "
5778         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5779         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5780 fi
5781 ;;
5782 esac
5783 $rm -f libnames libpath
5784
5785 : see if dld is available
5786 set dld.h i_dld
5787 eval $inhdr
5788
5789 : is a C symbol defined?
5790 csym='tlook=$1;
5791 case "$3" in
5792 -v) tf=libc.tmp; tc=""; tdc="";;
5793 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5794 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5795 esac;
5796 tx=yes;
5797 case "$reuseval-$4" in
5798 true-) ;;
5799 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5800 esac;
5801 case "$tx" in
5802 yes)
5803         case "$runnm" in
5804         true)
5805                 if $contains $tlook $tf >/dev/null 2>&1;
5806                 then tval=true;
5807                 else tval=false;
5808                 fi;;
5809         *)
5810                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5811                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5812                 then tval=true;
5813                 else tval=false;
5814                 fi;
5815                 $rm -f t t.c;;
5816         esac;;
5817 *)
5818         case "$tval" in
5819         $define) tval=true;;
5820         *) tval=false;;
5821         esac;;
5822 esac;
5823 eval "$2=$tval"'
5824
5825 : define an is-in-libc? function
5826 inlibc='echo " "; td=$define; tu=$undef;
5827 sym=$1; var=$2; eval "was=\$$2";
5828 tx=yes;
5829 case "$reuseval$was" in
5830 true) ;;
5831 true*) tx=no;;
5832 esac;
5833 case "$tx" in
5834 yes)
5835         set $sym tres -f;
5836         eval $csym;
5837         case "$tres" in
5838         true)
5839                 echo "$sym() found." >&4;
5840                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5841         *)
5842                 echo "$sym() NOT found." >&4;
5843                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5844         esac;;
5845 *)
5846         case "$was" in
5847         $define) echo "$sym() found." >&4;;
5848         *) echo "$sym() NOT found." >&4;;
5849         esac;;
5850 esac'
5851
5852 : see if dlopen exists
5853 xxx_runnm="$runnm"
5854 runnm=false
5855 set dlopen d_dlopen
5856 eval $inlibc
5857 runnm="$xxx_runnm"
5858
5859 : determine which dynamic loading, if any, to compile in
5860 echo " "
5861 dldir="ext/DynaLoader"
5862 case "$usedl" in
5863 $define|y|true)
5864         dflt='y'
5865         usedl="$define"
5866         ;;
5867 $undef|n|false)
5868         dflt='n'
5869         usedl="$undef"
5870         ;;
5871 *) 
5872         dflt='n'
5873         case "$d_dlopen" in
5874             $define) dflt='y' ;;
5875         esac
5876         case "$i_dld" in
5877             $define) dflt='y' ;;
5878         esac
5879         : Does a dl_xxx.xs file exist for this operating system
5880         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5881         ;;
5882 esac
5883 rp="Do you wish to use dynamic loading?"
5884 . ./myread
5885 usedl="$ans"
5886 case "$ans" in
5887 y*) usedl="$define"
5888         case "$dlsrc" in
5889         '')
5890                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5891                         dflt="$dldir/dl_${osname}.xs"
5892                 elif $test "$d_dlopen" = "$define" ; then
5893                         dflt="$dldir/dl_dlopen.xs"
5894                 elif $test "$i_dld" = "$define" ; then
5895                         dflt="$dldir/dl_dld.xs"
5896                 else
5897                         dflt=''
5898                 fi
5899                 ;;
5900         *)      dflt="$dldir/$dlsrc"
5901                 ;;
5902         esac
5903     echo "The following dynamic loading files are available:"
5904         : Can not go over to $dldir because getfile has path hard-coded in.
5905         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5906         rp="Source file to use for dynamic loading"
5907         fn="fne"
5908         gfpth="$src"
5909         . ./getfile
5910         usedl="$define"
5911         : emulate basename
5912         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5913
5914         $cat << EOM
5915
5916 Some systems may require passing special flags to $cc -c to
5917 compile modules that will be used to create a shared library.
5918 To use no flags, say "none".
5919
5920 EOM
5921     case "$cccdlflags" in
5922     '') case "$gccversion" in
5923                 '') case "$osname" in
5924                         hpux)   dflt='+z' ;;
5925                         next)   dflt='none' ;;
5926                         irix*)  dflt='-KPIC' ;;
5927                         svr4*|esix*|solaris) dflt='-KPIC' ;;
5928                         sunos)  dflt='-pic' ;;
5929                         *)      dflt='none' ;;
5930                     esac
5931                         ;;
5932                 *)  case "$osname" in
5933                         svr4*|esix*|solaris) dflt='-fPIC' ;;
5934                         *)      dflt='-fpic' ;;
5935                     esac ;;
5936             esac ;;
5937         ' ') dflt='none' ;;
5938     *)  dflt="$cccdlflags" ;;
5939     esac
5940     rp="Any special flags to pass to $cc -c to compile shared library modules?"
5941     . ./myread
5942     case "$ans" in
5943     none) cccdlflags=' ' ;;
5944     *) cccdlflags="$ans" ;;
5945     esac
5946
5947     cat << EOM
5948
5949 Some systems use ld to create libraries that can be dynamically loaded,
5950 while other systems (such as those using ELF) use $cc.
5951
5952 EOM
5953         case "$ld" in
5954         '')     $cat >try.c <<'EOM'
5955 /* Test for whether ELF binaries are produced */
5956 #include <fcntl.h>
5957 #include <stdlib.h>
5958 int main() {
5959         char b[4];
5960         int i = open("a.out",O_RDONLY);
5961         if(i == -1) 
5962                 exit(1); /* fail */
5963         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5964                 exit(0); /* succeed (yes, it's ELF) */
5965         else
5966                 exit(1); /* fail */
5967 }
5968 EOM
5969                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5970                         cat <<EOM
5971 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
5972 EOM
5973                         dflt="$cc"
5974                 else
5975                         echo "I'll use ld to build dynamic libraries."
5976                         dflt='ld'
5977                 fi
5978                 rm -f try.c a.out
5979                 ;;
5980         *)      dflt="$ld"
5981                 ;;
5982         esac
5983
5984     rp="What command should be used to create dynamic libraries?"
5985     . ./myread
5986         ld="$ans"
5987
5988     cat << EOM
5989
5990 Some systems may require passing special flags to $ld to create a
5991 library that can be dynamically loaded.  If your ld flags include
5992 -L/other/path options to locate libraries outside your loader's normal
5993 search path, you may need to specify those -L options here as well.  To
5994 use no flags, say "none".
5995
5996 EOM
5997     case "$lddlflags" in
5998     '') case "$osname" in
5999                         beos) dflt='-nostart' ;;
6000                         hpux)  dflt='-b' ;;
6001                         linux|irix*)    dflt='-shared' ;;
6002                         next)  dflt='none' ;;
6003                         solaris) dflt='-G' ;;
6004                         sunos) dflt='-assert nodefinitions' ;;
6005                         svr4*|esix*) dflt="-G $ldflags" ;;
6006                 *)     dflt='none' ;;
6007                         esac
6008                         ;;
6009     *) dflt="$lddlflags" ;;
6010     esac
6011
6012         : Try to guess additional flags to pick up local libraries.
6013         : Be careful not to append to a plain 'none'
6014         case "$dflt" in
6015         none) dflt='' ;;
6016         esac
6017         for thisflag in $ldflags; do
6018                 case "$thisflag" in
6019                 -L*)
6020                         case " $dflt " in
6021                         *" $thisflag "*) ;;
6022                         *) dflt="$dflt $thisflag" ;;
6023                         esac
6024                         ;;
6025                 esac
6026         done
6027
6028         case "$dflt" in
6029         ''|' ') dflt='none' ;;
6030         esac
6031
6032     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6033     . ./myread
6034     case "$ans" in
6035     none) lddlflags=' ' ;;
6036     *) lddlflags="$ans" ;;
6037     esac
6038
6039         cat <<EOM
6040
6041 Some systems may require passing special flags to $cc to indicate that
6042 the resulting executable will use dynamic linking.  To use no flags,
6043 say "none".
6044
6045 EOM
6046     case "$ccdlflags" in
6047     '') case "$osname" in
6048                 hpux)   dflt='-Wl,-E' ;;
6049                 linux)  dflt='-rdynamic' ;;
6050                 next)   dflt='none' ;;
6051                 sunos)  dflt='none' ;;
6052                 *)      dflt='none' ;;
6053             esac ;;
6054     ' ')  dflt='none' ;;
6055     *)  dflt="$ccdlflags" ;;
6056     esac
6057     rp="Any special flags to pass to $cc to use dynamic linking?"
6058     . ./myread
6059     case "$ans" in
6060     none) ccdlflags=' ' ;;
6061     *) ccdlflags="$ans" ;;
6062     esac
6063     ;;
6064 *)  usedl="$undef"
6065         ld='ld'
6066     dlsrc='dl_none.xs'
6067     lddlflags=''
6068     ccdlflags=''
6069     ;;
6070 esac
6071
6072 also=''
6073 case "$usedl" in
6074 $undef)
6075         # No dynamic loading being used, so don't bother even to prompt.
6076         useshrplib='false'
6077         ;;
6078 *)      case "$useshrplib" in
6079         '')     case "$osname" in
6080                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6081                         dflt=y
6082                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6083                         ;;
6084                 next*)
6085                         case "$osvers" in
6086                         4*)     dflt=y
6087                                 also='Building a shared libperl is needed for MAB support.'
6088                                 ;;
6089                         *)      dflt=n
6090                                 ;;
6091                         esac
6092                         ;;
6093                 *)      dflt=n
6094                         ;;
6095                 esac
6096                 ;;
6097         $define|true|[Yy]*)
6098                 dflt=y
6099                 ;;
6100         *)      dflt=n
6101                 ;;
6102         esac
6103         $cat << EOM
6104
6105 The perl executable is normally obtained by linking perlmain.c with
6106 libperl${_a}, any static extensions (usually just DynaLoader), and
6107 any other libraries needed on this system (such as -lm, etc.).  Since
6108 your system supports dynamic loading, it is probably possible to build
6109 a shared libperl.$so.  If you will have more than one executable linked
6110 to libperl.$so, this will significantly reduce the size of each
6111 executable, but it may have a noticeable affect on performance.  The
6112 default is probably sensible for your system.
6113 $also
6114
6115 EOM
6116         rp="Build a shared libperl.$so (y/n)"
6117         . ./myread
6118         case "$ans" in
6119         true|$define|[Yy]*)
6120                 useshrplib='true'  ;;
6121         *)      useshrplib='false' ;;
6122         esac
6123         ;;
6124 esac
6125
6126 case "$useshrplib" in
6127 true)
6128         case "$libperl" in
6129         '')
6130                 # Figure out a good name for libperl.so.  Since it gets stored in
6131                 # a version-specific architecture-dependent library, the version
6132                 # number isn't really that important, except for making cc/ld happy.
6133                 #
6134                 # A name such as libperl.so.3.1
6135                 majmin="libperl.$so.$patchlevel.$subversion"
6136                 # A name such as libperl.so.301
6137                 majonly=`echo $patchlevel $subversion |
6138                         $awk '{printf "%d%02d", $1, $2}'`
6139                 majonly=libperl.$so.$majonly
6140                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6141                 # rely on figuring it out from the naming of libc.
6142                 case "${osname}${osvers}" in
6143                 next4*)
6144                         dflt=libperl.5.$so
6145                         # XXX How handle the --version stuff for MAB?
6146                         ;;
6147                 linux*)  # ld won't link with a bare -lperl otherwise.
6148                         dflt=libperl.$so
6149                         ;;
6150                 cygwin*) # include version
6151                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6152                         ;;
6153                 *)      # Try to guess based on whether libc has major.minor.
6154                         case "$libc" in
6155                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6156                         *libc.$so.[0-9]*) dflt=$majonly ;;
6157                         *)      dflt=libperl.$so ;;
6158                         esac
6159                         ;;
6160                 esac
6161                 ;;
6162         *)      dflt=$libperl
6163                 ;;
6164         esac
6165         cat << EOM
6166
6167 I need to select a good name for the shared libperl.  If your system uses
6168 library names with major and minor numbers, then you might want something
6169 like $majmin.  Alternatively, if your system uses a single version
6170 number for shared libraries, then you might want to use $majonly.
6171 Or, your system might be quite happy with a simple libperl.$so.
6172
6173 Since the shared libperl will get installed into a version-specific
6174 architecture-dependent directory, the version number of the shared perl
6175 library probably isn't important, so the default should be o.k.
6176
6177 EOM
6178         rp='What name do you want to give to the shared libperl?'
6179         . ./myread
6180         libperl=$ans
6181         echo "Ok, I'll use $libperl"
6182         ;;
6183 *)
6184         libperl="libperl${_a}"
6185         ;;
6186 esac
6187
6188 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6189 case "$shrpdir" in
6190 '') ;;
6191 *)      $cat >&4 <<EOM
6192 WARNING:  Use of the shrpdir variable for the installation location of
6193 the shared $libperl is not supported.  It was never documented and
6194 will not work in this version.  Let me (perlbug@perl.com)
6195 know of any problems this may cause.
6196
6197 EOM
6198         case "$shrpdir" in
6199         "$archlibexp/CORE")
6200                 $cat >&4 <<EOM
6201 But your current setting of $shrpdir is
6202 the default anyway, so it's harmless.
6203 EOM
6204                 ;;
6205         *)
6206                 $cat >&4 <<EOM
6207 Further, your current attempted setting of $shrpdir
6208 conflicts with the value of $archlibexp/CORE
6209 that installperl will use.
6210 EOM
6211                 ;;
6212         esac
6213         ;;
6214 esac
6215
6216 # How will the perl executable find the installed shared $libperl?
6217 # Add $xxx to ccdlflags.
6218 # If we can't figure out a command-line option, use $shrpenv to
6219 # set env LD_RUN_PATH.  The main perl makefile uses this.
6220 shrpdir=$archlibexp/CORE
6221 xxx=''
6222 tmp_shrpenv=''
6223 if "$useshrplib"; then
6224     case "$osname" in 
6225         aix)
6226                 # We'll set it in Makefile.SH...
6227                 ;;
6228         solaris|netbsd)
6229                 xxx="-R $shrpdir"
6230                 ;;
6231         freebsd)
6232                 xxx="-Wl,-R$shrpdir"
6233                 ;;
6234         linux|irix*|dec_osf)
6235                 xxx="-Wl,-rpath,$shrpdir"
6236                 ;;
6237         next)
6238                 # next doesn't like the default...
6239                 ;;
6240         beos)
6241                 # beos doesn't like the default, either.
6242                 ;;
6243         hpux*)
6244                 # hpux doesn't like the default, either.
6245                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6246                 ;;
6247         *)
6248                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6249                 ;;
6250         esac
6251         case "$xxx" in
6252         '') ;;
6253         *)      
6254                 # Only add $xxx if it isn't already in ccdlflags.
6255                 case " $ccdlflags " in
6256                 *" $xxx "*)     ;;
6257                 *)      ccdlflags="$ccdlflags $xxx"
6258                         cat <<EOM >&4
6259
6260 Adding $xxx to the flags
6261 passed to $ld so that the perl executable will find the 
6262 installed shared $libperl.
6263
6264 EOM
6265                         ;;
6266                 esac
6267                 ;;
6268         esac
6269 fi
6270 # Fix ccdlflags in AIX for building external extensions.
6271 # (For building Perl itself bare -bE:perl.exp is needed,
6272 #  Makefile.SH takes care of this.)
6273 case "$osname" in
6274 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6275 esac
6276 # Respect a hint or command-line value.
6277 case "$shrpenv" in
6278 '') shrpenv="$tmp_shrpenv" ;;
6279 esac
6280 case "$ldlibpthname" in
6281 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6282 none)   ldlibpthname='' ;;
6283 esac
6284
6285 : determine where manual pages go
6286 set man1dir man1dir none
6287 eval $prefixit
6288 $cat <<EOM
6289
6290 $spackage has manual pages available in source form.
6291 EOM
6292 case "$nroff" in
6293 nroff)
6294         echo "However, you don't have nroff, so they're probably useless to you."
6295         case "$man1dir" in
6296         '') man1dir="none";;
6297         esac;;
6298 esac
6299 echo "If you don't want the manual sources installed, answer 'none'."
6300 case "$man1dir" in
6301 ' ') dflt=none
6302         ;;
6303 '')
6304         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6305         lookpath="$lookpath $prefixexp/man/p_man/man1"
6306         lookpath="$lookpath $prefixexp/man/u_man/man1"
6307         lookpath="$lookpath $prefixexp/man/man.1"
6308         case "$sysman" in
6309         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6310         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6311         esac
6312         set dflt
6313         eval $prefixup
6314         ;;
6315 *)  dflt="$man1dir"
6316         ;;
6317 esac
6318 echo " "
6319 fn=dn+~
6320 rp="Where do the main $spackage manual pages (source) go?"
6321 . ./getfile
6322 if $test "X$man1direxp" != "X$ansexp"; then
6323         installman1dir=''
6324 fi
6325 man1dir="$ans"
6326 man1direxp="$ansexp"
6327 case "$man1dir" in
6328 '')     man1dir=' '
6329         installman1dir='';;
6330 esac
6331
6332 : Change installation prefix, if necessary.
6333 if $test X"$prefix" != X"$installprefix"; then
6334         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6335 else
6336         installman1dir="$man1direxp"
6337 fi
6338
6339 : What suffix to use on installed man pages
6340
6341 case "$man1dir" in
6342 ' ')
6343         man1ext='0'
6344         ;;
6345 *)
6346         rp="What suffix should be used for the main $spackage man pages?"
6347         case "$man1ext" in
6348         '')     case "$man1dir" in
6349                 *1)  dflt=1 ;;
6350                 *1p) dflt=1p ;;
6351                 *1pm) dflt=1pm ;;
6352                 *l) dflt=l;;
6353                 *n) dflt=n;;
6354                 *o) dflt=o;;
6355                 *p) dflt=p;;
6356                 *C) dflt=C;;
6357                 *L) dflt=L;;
6358                 *L1) dflt=L1;;
6359                 *) dflt=1;;
6360                 esac
6361                 ;;
6362         *)      dflt="$man1ext";;
6363         esac
6364         . ./myread
6365         man1ext="$ans"
6366         ;;
6367 esac
6368
6369 : see if we can have long filenames
6370 echo " "
6371 rmlist="$rmlist /tmp/cf$$"
6372 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
6373 first=123456789abcdef
6374 second=/tmp/cf$$/$first
6375 $rm -f $first $second
6376 if (echo hi >$first) 2>/dev/null; then
6377         if $test -f 123456789abcde; then
6378                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6379                 val="$undef"
6380         else
6381                 if (echo hi >$second) 2>/dev/null; then
6382                         if $test -f /tmp/cf$$/123456789abcde; then
6383                                 $cat <<'EOM'
6384 That's peculiar... You can have filenames longer than 14 characters, but only
6385 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
6386 I shall consider your system cannot support long filenames at all.
6387 EOM
6388                                 val="$undef"
6389                         else
6390                                 echo 'You can have filenames longer than 14 characters.' >&4
6391                                 val="$define"
6392                         fi
6393                 else
6394                         $cat <<'EOM'
6395 How confusing! Some of your filesystems are sane enough to allow filenames
6396 longer than 14 characters but some others like /tmp can't even think about them.
6397 So, for now on, I shall assume your kernel does not allow them at all.
6398 EOM
6399                         val="$undef"
6400                 fi
6401         fi
6402 else
6403         $cat <<'EOM'
6404 You can't have filenames longer than 14 chars.  You can't even think about them!
6405 EOM
6406         val="$undef"
6407 fi 
6408 set d_flexfnam
6409 eval $setvar
6410 $rm -rf /tmp/cf$$ 123456789abcde*
6411
6412 : determine where library module manual pages go
6413 set man3dir man3dir none
6414 eval $prefixit
6415 $cat <<EOM
6416
6417 $spackage has manual pages for many of the library modules.
6418 EOM
6419
6420 case "$nroff" in
6421 nroff)
6422         $cat <<'EOM'
6423 However, you don't have nroff, so they're probably useless to you.
6424 EOM
6425         case "$man3dir" in
6426         '') man3dir="none";;
6427         esac;;
6428 esac
6429
6430 case "$d_flexfnam" in
6431 undef)
6432         $cat <<'EOM'
6433 However, your system can't handle the long file names like File::Basename.3. 
6434 EOM
6435         case "$man3dir" in
6436         '') man3dir="none";;
6437         esac;;
6438 esac
6439
6440 echo "If you don't want the manual sources installed, answer 'none'."
6441 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6442 case "$man3dir" in
6443 '')     dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6444         if $test -d "$privlib/man/man3"; then
6445                 cat <<EOM >&4
6446
6447 WARNING:  Previous versions of perl installed man3 pages into
6448 $privlib/man/man3.  This version will suggest a 
6449 new default of $dflt.  
6450 EOM
6451                 tdflt=$dflt
6452                 dflt='n'
6453                 rp='Do you wish to preserve the old behavior?(y/n)'
6454                 . ./myread
6455                 case "$ans" in
6456                 y*) dflt="$privlib/man/man3" ;;
6457                 *)  dflt=$tdflt ;;
6458                 esac
6459     fi
6460         ;;
6461 ' ') dflt=none;;
6462 *)      dflt="$man3dir" ;;
6463 esac
6464 echo " "
6465 fn=dn+~
6466 rp="Where do the $package library man pages (source) go?"
6467 . ./getfile
6468 man3dir="$ans"
6469 man3direxp="$ansexp"
6470 case "$man1dir" in
6471 '')     man3dir=' '
6472         installman3dir='';;
6473 esac
6474
6475 : Change installation prefix, if necessary.
6476 if $test X"$prefix" != X"$installprefix"; then
6477         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6478 else
6479         installman3dir="$man3direxp"
6480 fi
6481
6482 : What suffix to use on installed man pages
6483 case "$man3dir" in
6484 ' ')
6485         man3ext='0'
6486         ;;
6487 *)
6488         rp="What suffix should be used for the $package library man pages?"
6489         case "$man3ext" in
6490         '')     case "$man3dir" in
6491                 *3)  dflt=3 ;;
6492                 *3p) dflt=3p ;;
6493                 *3pm) dflt=3pm ;;
6494                 *l) dflt=l;;
6495                 *n) dflt=n;;
6496                 *o) dflt=o;;
6497                 *p) dflt=p;;
6498                 *C) dflt=C;;
6499                 *L) dflt=L;;
6500                 *L3) dflt=L3;;
6501                 *) dflt=3;;
6502                 esac
6503                 ;;
6504         *)      dflt="$man3ext";;
6505         esac
6506         . ./myread
6507         man3ext="$ans"
6508         ;;
6509 esac
6510
6511 : see if we have to deal with yellow pages, now NIS.
6512 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6513         if $test -f /usr/etc/nibindd; then
6514                 echo " "
6515                 echo "I'm fairly confident you're on a NeXT."
6516                 echo " "
6517                 rp='Do you get the hosts file via NetInfo?'
6518                 dflt=y
6519                 case "$hostcat" in
6520                 nidump*) ;;
6521                 '') ;;
6522                 *) dflt=n;;
6523                 esac
6524                 . ./myread
6525                 case "$ans" in
6526                 y*) hostcat='nidump hosts .';;
6527                 *)      case "$hostcat" in
6528                         nidump*) hostcat='';;
6529                         esac
6530                         ;;
6531                 esac
6532         fi
6533         case "$hostcat" in
6534         nidump*) ;;
6535         *)
6536                 case "$hostcat" in
6537                 *ypcat*) dflt=y;;
6538                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6539                                 dflt=y
6540                         else
6541                                 dflt=n
6542                         fi;;
6543                 *) dflt=n;;
6544                 esac
6545                 echo " "
6546                 rp='Are you getting the hosts file via yellow pages?'
6547                 . ./myread
6548                 case "$ans" in
6549                 y*) hostcat='ypcat hosts';;
6550                 *) hostcat='cat /etc/hosts';;
6551                 esac
6552                 ;;
6553         esac
6554 fi
6555 case "$hostcat" in
6556 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6557 esac
6558 case "$groupcat" in
6559 '') test -f /etc/group && groupcat='cat /etc/group';;
6560 esac
6561 case "$passcat" in
6562 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6563 esac
6564
6565 : now get the host name
6566 echo " "
6567 echo "Figuring out host name..." >&4
6568 case "$myhostname" in
6569 '') cont=true
6570         echo 'Maybe "hostname" will work...'
6571         if tans=`sh -c hostname 2>&1` ; then
6572                 myhostname=$tans
6573                 phostname=hostname
6574                 cont=''
6575         fi
6576         ;;
6577 *) cont='';;
6578 esac
6579 if $test "$cont"; then
6580         if ./xenix; then
6581                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
6582                 if tans=`cat /etc/systemid 2>&1` ; then
6583                         myhostname=$tans
6584                         phostname='cat /etc/systemid'
6585                         echo "Whadyaknow.  Xenix always was a bit strange..."
6586                         cont=''
6587                 fi
6588         elif $test -r /etc/systemid; then
6589                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6590         fi
6591 fi
6592 if $test "$cont"; then
6593         echo 'No, maybe "uuname -l" will work...'
6594         if tans=`sh -c 'uuname -l' 2>&1` ; then
6595                 myhostname=$tans
6596                 phostname='uuname -l'
6597         else
6598                 echo 'Strange.  Maybe "uname -n" will work...'
6599                 if tans=`sh -c 'uname -n' 2>&1` ; then
6600                         myhostname=$tans
6601                         phostname='uname -n'
6602                 else
6603                         echo 'Oh well, maybe I can mine it out of whoami.h...'
6604                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6605                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6606                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6607                         else
6608                                 case "$myhostname" in
6609                                 '') echo "Does this machine have an identity crisis or something?"
6610                                         phostname='';;
6611                                 *)
6612                                         echo "Well, you said $myhostname before..."
6613                                         phostname='echo $myhostname';;
6614                                 esac
6615                         fi
6616                 fi
6617         fi
6618 fi
6619 : you do not want to know about this
6620 set $myhostname
6621 myhostname=$1
6622
6623 : verify guess
6624 if $test "$myhostname" ; then
6625         dflt=y
6626         rp='Your host name appears to be "'$myhostname'".'" Right?"
6627         . ./myread
6628         case "$ans" in
6629         y*) ;;
6630         *) myhostname='';;
6631         esac
6632 fi
6633
6634 : bad guess or no guess
6635 while $test "X$myhostname" = X ; do
6636         dflt=''
6637         rp="Please type the (one word) name of your host:"
6638         . ./myread
6639         myhostname="$ans"
6640 done
6641
6642 : translate upper to lower if necessary
6643 case "$myhostname" in
6644 *[A-Z]*)
6645         echo "(Normalizing case in your host name)"
6646         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6647         ;;
6648 esac
6649
6650 case "$myhostname" in
6651 *.*)
6652         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6653         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6654         echo "(Trimming domain name from host name--host name is now $myhostname)"
6655         ;;
6656 *) case "$mydomain" in
6657         '')
6658                 {
6659                         test "X$hostcat" = "Xypcat hosts" &&
6660                         ypmatch "$myhostname" hosts 2>/dev/null |\
6661                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
6662                         $test -s hosts
6663                 } || {
6664                         test "X$hostcat" != "X" &&
6665                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
6666                                         /[       ]$myhostname[  . ]/p" > hosts
6667                 }
6668                 tmp_re="[       . ]"
6669                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
6670                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
6671                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6672                         hosts | $sort | $uniq | \
6673                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6674                 case `$echo X$dflt` in
6675                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
6676                         dflt=.
6677                         ;;
6678                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6679                         ;;
6680                 esac
6681                 case "$dflt" in
6682                 .)
6683                         tans=`./loc resolv.conf X /etc /usr/etc`
6684                         if $test -f "$tans"; then
6685                                 echo "(Attempting domain name extraction from $tans)"
6686                                 dflt=.`$sed -n -e 's/   / /g' \
6687                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
6688                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6689                                 case "$dflt" in
6690                                 .) dflt=.`$sed -n -e 's/        / /g' \
6691                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
6692                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6693                                         ;;
6694                                 esac
6695                         fi
6696                         ;;
6697                 esac
6698                 case "$dflt" in
6699                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6700                         dflt=.`sh -c domainname 2>/dev/null`
6701                         case "$dflt" in
6702                         '') dflt='.';;
6703                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6704                         esac
6705                         ;;
6706                 esac
6707                 case "$dflt" in
6708                 .) echo "(Lost all hope -- silly guess then)"
6709                         dflt='.uucp'
6710                         ;;
6711                 esac
6712                 $rm -f hosts
6713                 ;;
6714         *) dflt="$mydomain";;
6715         esac;;
6716 esac
6717 echo " "
6718 rp="What is your domain name?"
6719 . ./myread
6720 tans="$ans"
6721 case "$ans" in
6722 '') ;;
6723 .*) ;;
6724 *) tans=".$tans";;
6725 esac
6726 mydomain="$tans"
6727
6728 : translate upper to lower if necessary
6729 case "$mydomain" in
6730 *[A-Z]*)
6731         echo "(Normalizing case in your domain name)"
6732         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6733         ;;
6734 esac
6735
6736 : a little sanity check here
6737 case "$phostname" in
6738 '') ;;
6739 *)
6740         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6741         $myhostname$mydomain|$myhostname) ;;
6742         *)
6743                 case "$phostname" in
6744                 sed*)
6745                         echo "(That doesn't agree with your whoami.h file, by the way.)"
6746                         ;;
6747                 *)
6748                         echo "(That doesn't agree with your $phostname command, by the way.)"
6749                         ;;
6750                 esac
6751         ;;
6752         esac
6753         ;;
6754 esac
6755
6756 $cat <<EOM
6757
6758 I need to get your e-mail address in Internet format if possible, i.e.
6759 something like user@host.domain. Please answer accurately since I have
6760 no easy means to double check it. The default value provided below
6761 is most probably close to reality but may not be valid from outside
6762 your organization...
6763
6764 EOM
6765 cont=x
6766 while test "$cont"; do
6767         case "$cf_email" in
6768         '') dflt="$cf_by@$myhostname$mydomain";;
6769         *) dflt="$cf_email";;
6770         esac
6771         rp='What is your e-mail address?'
6772         . ./myread
6773         cf_email="$ans"
6774         case "$cf_email" in
6775         *@*.*) cont='' ;;
6776         *)
6777                 rp='Address does not look like an Internet one.  Use it anyway?'
6778                 case "$fastread" in
6779                 yes) dflt=y ;;
6780                 *) dflt=n ;;
6781                 esac
6782                 . ./myread
6783                 case "$ans" in
6784                 y*) cont='' ;;
6785                 *) echo " " ;;
6786                 esac
6787                 ;;
6788         esac
6789 done
6790
6791 $cat <<EOM
6792
6793 If you or somebody else will be maintaining perl at your site, please
6794 fill in the correct e-mail address here so that they may be contacted
6795 if necessary. Currently, the "perlbug" program included with perl
6796 will send mail to this address in addition to perlbug@perl.com. You may
6797 enter "none" for no administrator.
6798
6799 EOM
6800 case "$perladmin" in
6801 '') dflt="$cf_email";;
6802 *) dflt="$perladmin";;
6803 esac
6804 rp='Perl administrator e-mail address'
6805 . ./myread
6806 perladmin="$ans"
6807
6808 : figure out how to guarantee perl startup
6809 case "$startperl" in
6810 '')
6811         case "$sharpbang" in
6812         *!)
6813                 $cat <<EOH
6814
6815 I can use the #! construct to start perl on your system. This will
6816 make startup of perl scripts faster, but may cause problems if you
6817 want to share those scripts and perl is not in a standard place
6818 ($binexp/perl) on all your platforms. The alternative is to force
6819 a shell by starting the script with a single ':' character.
6820
6821 EOH
6822                 dflt="$binexp/perl"
6823                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6824                 . ./myread
6825                 case "$ans" in
6826                 none)   startperl=": # use perl";;
6827                 *)      startperl="#!$ans"
6828                         if $test 30 -lt `echo "$ans" | wc -c`; then
6829                                 $cat >&4 <<EOM
6830
6831 WARNING:  Some systems limit the #! command to 32 characters.
6832 If you experience difficulty running Perl scripts with #!, try
6833 installing Perl in a directory with a shorter pathname.
6834
6835 EOM
6836                         fi ;;
6837                 esac
6838                 ;;
6839         *) startperl=": # use perl"
6840                 ;;
6841         esac
6842         ;;
6843 esac
6844 echo "I'll use $startperl to start perl scripts."
6845
6846 : figure best path for perl in scripts
6847 case "$perlpath" in
6848 '')
6849         perlpath="$binexp/perl"
6850         case "$startperl" in
6851         *!*) ;;
6852         *)
6853                 $cat <<EOH
6854
6855 I will use the "eval 'exec'" idiom to start Perl on your system.
6856 I can use the full path of your Perl binary for this purpose, but
6857 doing so may cause problems if you want to share those scripts and
6858 Perl is not always in a standard place ($binexp/perl).
6859
6860 EOH
6861                 dflt="$binexp/perl"
6862                 rp="What path shall I use in \"eval 'exec'\"?"
6863                 . ./myread
6864                 perlpath="$ans"
6865                 ;;
6866         esac
6867         ;;
6868 esac
6869 case "$startperl" in
6870 *!*)    ;;
6871 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6872 esac
6873
6874 : determine where public executable scripts go
6875 set scriptdir scriptdir
6876 eval $prefixit
6877 case "$scriptdir" in
6878 '')
6879         dflt="$bin"
6880         : guess some guesses
6881         $test -d /usr/share/scripts && dflt=/usr/share/scripts
6882         $test -d /usr/share/bin     && dflt=/usr/share/bin
6883         $test -d /usr/local/script  && dflt=/usr/local/script
6884         $test -d /usr/local/scripts && dflt=/usr/local/scripts
6885         $test -d $prefixexp/script  && dflt=$prefixexp/script
6886         set dflt
6887         eval $prefixup
6888         ;;
6889 *)  dflt="$scriptdir"
6890         ;;
6891 esac
6892 $cat <<EOM
6893  
6894 Some installations have a separate directory just for executable scripts so
6895 that they can mount it across multiple architectures but keep the scripts in
6896 one spot.  You might, for example, have a subdirectory of /usr/share for this.
6897 Or you might just lump your scripts in with all your other executables.
6898  
6899 EOM
6900 fn=d~
6901 rp='Where do you keep publicly executable scripts?'
6902 . ./getfile
6903 if $test "X$ansexp" != "X$scriptdirexp"; then
6904         installscript=''
6905 fi
6906 scriptdir="$ans"
6907 scriptdirexp="$ansexp"
6908 : Change installation prefix, if necessary.
6909 if $test X"$prefix" != X"$installprefix"; then
6910         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
6911 else
6912         installscript="$scriptdirexp"
6913 fi
6914
6915 : determine where site specific architecture-dependent libraries go.
6916 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6917 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6918 : sitelib may have an optional trailing /share.
6919 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6920 tdflt="$tdflt/$archname"
6921 set sitearch sitearch none
6922 eval $prefixit
6923 case "$sitearch" in
6924 '')     dflt="$tdflt" ;;
6925 *)      dflt="$sitearch" ;;
6926 esac
6927 $cat <<EOM
6928
6929 The installation process will also create a directory for
6930 architecture-dependent site-specific extensions and modules.
6931
6932 EOM
6933 fn=nd~+
6934 rp='Pathname for the site-specific architecture-dependent library files?'
6935 . ./getfile
6936 sitearch="$ans"
6937 sitearchexp="$ansexp"
6938 : Change installation prefix, if necessary.
6939 if $test X"$prefix" != X"$installprefix"; then
6940         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6941 else
6942         installsitearch="$sitearchexp"
6943 fi
6944
6945 : determine where add-on public executables go
6946 case "$sitebin" in
6947 '')     dflt=$siteprefix/bin ;;
6948 *)      dflt=$sitebin ;;
6949 esac
6950 fn=d~
6951 rp='Pathname where the add-on public executables should be installed?'
6952 . ./getfile
6953 sitebin="$ans"
6954 sitebinexp="$ansexp"
6955 : Change installation prefix, if necessary.
6956 if $test X"$prefix" != X"$installprefix"; then
6957         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
6958 else
6959         installsitebin="$sitebinexp"
6960 fi
6961
6962 cat <<EOM
6963
6964 Perl can be built to take advantage of long doubles which
6965 (if available) may give more accuracy and range for floating point numbers.
6966
6967 If this doesn't make any sense to you, just accept the default 'n'.
6968 EOM
6969
6970 case "$ccflags" in
6971 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
6972 esac
6973
6974 case "$uselongdouble" in
6975 $define|true|[yY]*)     dflt='y';;
6976 *) dflt='n';;
6977 esac
6978 rp='Try to use long doubles if available?'
6979 . ./myread
6980 case "$ans" in
6981 y|Y)    val="$define"   ;;
6982 *)      val="$undef"    ;;
6983 esac
6984 set uselongdouble
6985 eval $setvar
6986
6987 case "$uselongdouble" in
6988 true|[yY]*) uselongdouble="$define" ;;
6989 esac
6990
6991 case "$uselongdouble" in
6992 $define)
6993 : Look for a hint-file generated 'call-back-unit'.  If the
6994 : user has specified that long doubles should be used,
6995 : we may need to set or change some other defaults.
6996         if $test -f uselongdouble.cbu; then
6997                 echo "Your platform has some specific hints for long doubles, using them..."
6998                 . ./uselongdouble.cbu
6999         else
7000                 $cat <<EOM
7001 (Your platform doesn't have any specific hints for long doubles.)
7002 EOM
7003         fi
7004         ;;
7005 esac
7006
7007 cat <<EOM
7008
7009 Perl can be built to take advantage of long longs which
7010 (if available) may give more range for integer numbers.
7011
7012 If this doesn't make any sense to you, just accept the default 'n'.
7013 EOM
7014
7015 case "$ccflags" in
7016 *-DUSE_LONG_LONG*) uselonglong="$define" ;;
7017 esac
7018
7019 case "$uselonglong" in
7020 $define|true|[yY]*)     dflt='y';;
7021 *) dflt='n';;
7022 esac
7023 rp='Try to use long longs if available?'
7024 . ./myread
7025 case "$ans" in
7026 y|Y)    val="$define"   ;;
7027 *)      val="$undef"    ;;
7028 esac
7029 set uselonglong
7030 eval $setvar
7031
7032 case "$uselonglong" in
7033 true|[yY]*) uselonglong="$define" ;;
7034 esac
7035
7036 case "$uselonglong" in
7037 $define)
7038 : Look for a hint-file generated 'call-back-unit'.  If the
7039 : user has specified that long longs should be used,
7040 : we may need to set or change some other defaults.
7041         if $test -f uselonglong.cbu; then
7042                 echo "Your platform has some specific hints for long longs, using them..."
7043                 . ./uselonglong.cbu
7044         else
7045                 $cat <<EOM
7046 (Your platform doesn't have any specific hints for long longs.)
7047 EOM
7048         fi
7049         ;;
7050 esac
7051
7052 cat <<EOM
7053
7054 Previous version of $package used the standard IO mechanisms as defined
7055 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7056 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7057 the default.  This abstraction layer can use AT&T's sfio (if you already
7058 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7059 problems with some extension modules.  Using PerlIO with stdio is safe,
7060 but it is slower than plain stdio and therefore is not the default.
7061
7062 If this doesn't make any sense to you, just accept the default 'n'.
7063 EOM
7064 case "$useperlio" in
7065 $define|true|[yY]*)     dflt='y';;
7066 *) dflt='n';;
7067 esac
7068 rp='Use the experimental PerlIO abstraction layer?'
7069 . ./myread
7070 case "$ans" in
7071 y|Y) 
7072         val="$define"
7073         ;;     
7074 *)      
7075         echo "Ok, doing things the stdio way"
7076         val="$undef"
7077         ;;
7078 esac
7079 set useperlio
7080 eval $setvar 
7081
7082 case "$vendorprefix" in
7083 '')     d_vendorbin="$undef"
7084         vendorbin=''
7085         vendorbinexp=''
7086         ;;
7087 *)      d_vendorbin="$define"
7088         : determine where vendor-supplied executables go.
7089         dflt=$vendorprefix/bin
7090         fn=d~+
7091         rp='Pathname for the vendor-supplied executables directory?'
7092         . ./getfile
7093         vendorbin="$ans"
7094         vendorbinexp="$ansexp"
7095         : Change installation prefix, if necessary.
7096         if $test X"$prefix" != X"$installprefix"; then
7097                 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7098         else
7099                 installvendorbin="$vendorbinexp"
7100         fi
7101         ;;
7102 esac
7103
7104 : check for length of double
7105 echo " "
7106 case "$doublesize" in
7107 '')
7108         $echo $n "Checking to see how big your double precision numbers are...$c" >&4
7109         $cat >try.c <<'EOCP'
7110 #include <stdio.h>
7111 int main()
7112 {
7113     printf("%d\n", (int)sizeof(double));
7114     exit(0);
7115 }
7116 EOCP
7117         set try
7118         if eval $compile_ok; then
7119                 doublesize=`./try`
7120                 $echo " $doublesize bytes." >&4
7121         else
7122                 dflt='8'
7123                 echo "(I can't seem to compile the test program.  Guessing...)"
7124                 rp="What is the size of a double precision number (in bytes)?"
7125                 . ./myread
7126                 doublesize="$ans"
7127         fi
7128         ;;
7129 esac
7130 $rm -f try.c try
7131
7132 : check for long doubles
7133 echo " "
7134 $echo $n "Checking to see if your system supports long double..." $c >&4
7135 echo 'int main() { long double x = 7.0; }' > try.c
7136 set try
7137 if eval $compile; then
7138         val="$define"
7139         echo " Yes, it does." >&4
7140 else
7141         val="$undef"
7142         echo " No, it doesn't." >&4
7143 fi
7144 $rm try.*
7145 set d_longdbl
7146 eval $setvar
7147
7148 : check for length of long double
7149 case "${d_longdbl}${longdblsize}" in
7150 $define)
7151         echo " "
7152         $echo $n "Checking to see how big your long doubles are..." $c >&4
7153         $cat >try.c <<'EOCP'
7154 #include <stdio.h>
7155 int main()
7156 {
7157         printf("%d\n", sizeof(long double));
7158 }
7159 EOCP
7160         set try
7161         set try
7162         if eval $compile; then
7163                 longdblsize=`./try$exe_ext`
7164                 $echo " $longdblsize bytes." >&4
7165         else
7166                 dflt='8'
7167                 echo " "
7168                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7169                 rp="What is the size of a long double (in bytes)?"
7170                 . ./myread
7171                 longdblsize="$ans"
7172         fi
7173         if $test "X$doublesize" = "X$longdblsize"; then
7174                 echo "(That isn't any different from an ordinary double.)"
7175         fi      
7176         ;;
7177 esac
7178 $rm -f try.* try
7179
7180 : Check how to convert floats to strings.
7181 if test "X$d_Gconvert" = X; then
7182         echo " "
7183         echo "Checking for an efficient way to convert floats to strings."
7184         $cat >try.c <<EOP
7185 #ifdef TRY_gconvert
7186 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7187 char *myname = "gconvert";
7188 #endif
7189 #ifdef TRY_gcvt
7190 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7191 char *myname = "gcvt";
7192 #endif
7193 #ifdef TRY_qgcvt
7194 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7195 char *myname = "qgcvt";
7196 #define DOUBLETYPE long double
7197 #endif
7198 #ifdef TRY_sprintf
7199 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7200 char *myname = "sprintf";
7201 #endif
7202
7203 #ifndef DOUBLETYPE
7204 #define DOUBLETYPE double
7205 #endif
7206
7207 #include <stdio.h>
7208
7209 #ifdef I_STDLIB
7210 #include <stdlib.h>
7211 #endif
7212
7213 int
7214 checkit(expect, got)
7215 char *expect;
7216 char *got;
7217 {
7218     if (strcmp(expect, got)) {
7219                 printf("%s oddity:  Expected %s, got %s\n",
7220                         myname, expect, got);
7221                 exit(1);
7222         }
7223 }
7224
7225 int main()
7226
7227         char buf[64]; 
7228         buf[63] = '\0';
7229
7230         /* This must be 1st test on (which?) platform */
7231         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7232         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7233         checkit("0.1", buf);
7234
7235         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7236         checkit("1", buf);
7237
7238         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7239         checkit("0", buf);
7240
7241         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7242         checkit("-1", buf);
7243
7244         /* Some Linux gcvt's give 1.e+5 here. */
7245         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7246         checkit("100000", buf);
7247         
7248         /* Some Linux gcvt's give -1.e+5 here. */
7249         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7250         checkit("-100000", buf);
7251
7252         exit(0);
7253 }
7254 EOP
7255         case "$d_Gconvert" in
7256         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7257         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7258         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7259         *) xxx_list='gconvert gcvt sprintf' ;;
7260         esac
7261
7262         case "$d_longdbl$uselongdouble" in
7263         definedefine) xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7264         esac
7265
7266         for xxx_convert in $xxx_list; do
7267                 echo "Trying $xxx_convert..."
7268                 $rm -f try try$_o
7269                 set try -DTRY_$xxx_convert
7270                 if eval $compile; then
7271                         echo "$xxx_convert() found." >&4
7272                         if ./try; then
7273                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
7274                                 break;
7275                         else
7276                                 echo "...But $xxx_convert didn't work as I expected."
7277                         fi
7278                 else
7279                         echo "$xxx_convert NOT found." >&4
7280                 fi
7281         done
7282                 
7283         case "$xxx_convert" in
7284         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7285         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7286         qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7287         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7288         esac
7289 fi
7290
7291 echo " "
7292
7293 if $test X"$d_longdbl" = X"$define"; then
7294
7295 echo "Checking how to print long doubles..." >&4
7296
7297 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7298         $cat >try.c <<'EOCP'
7299 #include <sys/types.h>
7300 #include <stdio.h>
7301 int main() {
7302   double d = 123.456;
7303   printf("%.3f\n", d);
7304 }
7305 EOCP
7306         set try
7307         if eval $compile; then
7308                 yyy=`./try$exe_ext`
7309                 case "$yyy" in
7310                 123.456)
7311                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7312                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7313                         echo "We will use %f."
7314                         ;;
7315                 esac
7316         fi
7317 fi
7318
7319 if $test X"$sPRIfldbl" = X; then
7320         $cat >try.c <<'EOCP'
7321 #include <sys/types.h>
7322 #include <stdio.h>
7323 int main() {
7324   long double d = 123.456;
7325   printf("%.3llf\n", d);
7326 }
7327 EOCP
7328         set try
7329         if eval $compile; then
7330                 yyy=`./try$exe_ext`
7331                 case "$yyy" in
7332                 123.456)
7333                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7334                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7335                         echo "We will use %llf."
7336                         ;;
7337                 esac
7338         fi
7339 fi
7340
7341 if $test X"$sPRIfldbl" = X; then
7342         $cat >try.c <<'EOCP'
7343 #include <sys/types.h>
7344 #include <stdio.h>
7345 int main() {
7346   long double d = 123.456;
7347   printf("%.3Lf\n", d);
7348 }
7349 EOCP
7350         set try
7351         if eval $compile; then
7352                 yyy=`./try$exe_ext`
7353                 case "$yyy" in
7354                 123.456)
7355                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7356                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7357                         echo "We will use %Lf."
7358                         ;;
7359                 esac
7360         fi
7361 fi
7362
7363 if $test X"$sPRIfldbl" = X; then
7364         $cat >try.c <<'EOCP'
7365 #include <sys/types.h>
7366 #include <stdio.h>
7367 int main() {
7368   long double d = 123.456;
7369   printf("%.3lf\n", d);
7370 }
7371 EOCP
7372         set try
7373         if eval $compile; then
7374                 yyy=`./try$exe_ext`
7375                 case "$yyy" in
7376                 123.456)
7377                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7378                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7379                         echo "We will use %lf."
7380                         ;;
7381                 esac
7382         fi
7383 fi
7384
7385 if $test X"$sPRIfldbl" = X; then
7386         echo "Cannot figure out how to print long doubles." >&4
7387 fi
7388
7389 $rm -f try try.*
7390
7391 fi # d_longdbl
7392
7393 case "$sPRIfldbl" in
7394 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7395         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7396         ;;
7397 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7398         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7399         ;;
7400 esac
7401
7402 : Initialize h_fcntl
7403 h_fcntl=false
7404
7405 : Initialize h_sysfile
7406 h_sysfile=false
7407
7408 : access call always available on UNIX
7409 set access d_access
7410 eval $inlibc
7411
7412 : locate the flags for 'access()'
7413 case "$d_access" in
7414 "$define")
7415         echo " "
7416         $cat >access.c <<'EOCP'
7417 #include <sys/types.h>
7418 #ifdef I_FCNTL
7419 #include <fcntl.h>
7420 #endif
7421 #ifdef I_SYS_FILE
7422 #include <sys/file.h>
7423 #endif
7424 #ifdef I_UNISTD
7425 #include <unistd.h>
7426 #endif
7427 int main() {
7428         exit(R_OK);
7429 }
7430 EOCP
7431         : check sys/file.h first, no particular reason here
7432         if $test `./findhdr sys/file.h` && \
7433                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7434                 h_sysfile=true;
7435                 echo "<sys/file.h> defines the *_OK access constants." >&4
7436         elif $test `./findhdr fcntl.h` && \
7437                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7438                 h_fcntl=true;
7439                 echo "<fcntl.h> defines the *_OK access constants." >&4
7440         elif $test `./findhdr unistd.h` && \
7441                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7442                 echo "<unistd.h> defines the *_OK access constants." >&4
7443         else
7444                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7445         fi
7446         ;;
7447 esac
7448 $rm -f access*
7449
7450 : see if accessx exists
7451 set accessx d_accessx
7452 eval $inlibc
7453
7454 : see if alarm exists
7455 set alarm d_alarm
7456 eval $inlibc
7457
7458 : see if atolf exists
7459 set atolf d_atolf
7460 eval $inlibc
7461
7462 : see if atoll exists
7463 set atoll d_atoll
7464 eval $inlibc
7465
7466 : Look for GNU-cc style attribute checking
7467 echo " "
7468 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7469 $cat >attrib.c <<'EOCP'
7470 #include <stdio.h>
7471 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7472 EOCP
7473 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7474         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7475                 echo "Your C compiler doesn't fully support __attribute__."
7476                 val="$undef"
7477         else
7478                 echo "Your C compiler supports __attribute__."
7479                 val="$define"
7480         fi
7481 else
7482         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7483         val="$undef"
7484 fi
7485 set d_attribut
7486 eval $setvar
7487 $rm -f attrib*
7488
7489 : see if bcmp exists
7490 set bcmp d_bcmp
7491 eval $inlibc
7492
7493 : see if bcopy exists
7494 set bcopy d_bcopy
7495 eval $inlibc
7496
7497 : see if this is a unistd.h system
7498 set unistd.h i_unistd
7499 eval $inhdr
7500
7501 : see if getpgrp exists
7502 set getpgrp d_getpgrp
7503 eval $inlibc
7504
7505 case "$d_getpgrp" in
7506 "$define")
7507         echo " "
7508         echo "Checking to see which flavor of getpgrp is in use..."
7509         $cat >set.c <<EOP
7510 #$i_unistd I_UNISTD
7511 #include <sys/types.h>
7512 #ifdef I_UNISTD
7513 #  include <unistd.h>
7514 #endif
7515 int main()
7516 {
7517         if (getuid() == 0) {
7518                 printf("(I see you are running Configure as super-user...)\n");
7519                 setuid(1);
7520         }
7521 #ifdef TRY_BSD_PGRP
7522         if (getpgrp(1) == 0)
7523                 exit(0);
7524 #else
7525         if (getpgrp() > 0)
7526                 exit(0);
7527 #endif
7528         exit(1);
7529 }
7530 EOP
7531         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7532                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7533                 val="$define"
7534         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7535                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7536                 val="$undef"
7537         else
7538                 echo "I can't seem to compile and run the test program."
7539                 if ./usg; then
7540                         xxx="a USG one, i.e. you use getpgrp()."
7541                 else
7542                         # SVR4 systems can appear rather BSD-ish.
7543                         case "$i_unistd" in
7544                         $undef)
7545                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7546                                 val="$define"
7547                                 ;;
7548                         $define)
7549                                 xxx="probably a USG one, i.e. you use getpgrp()."
7550                                 val="$undef"
7551                                 ;;
7552                         esac
7553                 fi
7554                 echo "Assuming your getpgrp is $xxx" >&4
7555         fi
7556         ;;
7557 *) val="$undef";;
7558 esac
7559 set d_bsdgetpgrp
7560 eval $setvar
7561 $rm -f set set.c
7562
7563 : see if setpgrp exists
7564 set setpgrp d_setpgrp
7565 eval $inlibc
7566
7567 case "$d_setpgrp" in
7568 "$define")
7569         echo " "
7570         echo "Checking to see which flavor of setpgrp is in use..."
7571         $cat >set.c <<EOP
7572 #$i_unistd I_UNISTD
7573 #include <sys/types.h>
7574 #ifdef I_UNISTD
7575 #  include <unistd.h>
7576 #endif
7577 int main()
7578 {
7579         if (getuid() == 0) {
7580                 printf("(I see you are running Configure as super-user...)\n");
7581                 setuid(1);
7582         }
7583 #ifdef TRY_BSD_PGRP
7584         if (-1 == setpgrp(1, 1))
7585                 exit(0);
7586 #else
7587         if (setpgrp() != -1)
7588                 exit(0);
7589 #endif
7590         exit(1);
7591 }
7592 EOP
7593         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7594                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7595                 val="$define"
7596         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7597                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7598                 val="$undef"
7599         else
7600                 echo "(I can't seem to compile and run the test program.)"
7601                 if ./usg; then
7602                         xxx="a USG one, i.e. you use setpgrp()."
7603                 else
7604                         # SVR4 systems can appear rather BSD-ish.
7605                         case "$i_unistd" in
7606                         $undef)
7607                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7608                                 val="$define"
7609                                 ;;
7610                         $define)
7611                                 xxx="probably a USG one, i.e. you use setpgrp()."
7612                                 val="$undef"
7613                                 ;;
7614                         esac
7615                 fi
7616                 echo "Assuming your setpgrp is $xxx" >&4
7617         fi
7618         ;;
7619 *) val="$undef";;
7620 esac
7621 set d_bsdsetpgrp
7622 eval $setvar
7623 $rm -f set set.c
7624 : see if bzero exists
7625 set bzero d_bzero
7626 eval $inlibc
7627
7628 : see if signal is declared as pointer to function returning int or void
7629 echo " "
7630 xxx=`./findhdr signal.h`
7631 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7632 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7633         echo "You have int (*signal())() instead of void." >&4
7634         val="$undef"
7635 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
7636         echo "You have void (*signal())()." >&4
7637         val="$define"
7638 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7639         echo "You have int (*signal())() instead of void." >&4
7640         val="$undef"
7641 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7642         echo "You have void (*signal())()." >&4
7643         val="$define"
7644 else
7645         case "$d_voidsig" in
7646         '')
7647         echo "I can't determine whether signal handler returns void or int..." >&4
7648                 dflt=void
7649                 rp="What type does your signal handler return?"
7650                 . ./myread
7651                 case "$ans" in
7652                 v*) val="$define";;
7653                 *) val="$undef";;
7654                 esac;;
7655         "$define")
7656                 echo "As you already told me, signal handler returns void." >&4
7657                 val="$define"
7658                 ;;
7659         *)      echo "As you already told me, signal handler returns int." >&4
7660                 val="$undef"
7661                 ;;
7662         esac
7663 fi
7664 set d_voidsig
7665 eval $setvar
7666 case "$d_voidsig" in
7667 "$define") signal_t="void";;
7668 *) signal_t="int";;
7669 esac
7670 $rm -f $$.tmp
7671
7672 : check for ability to cast large floats to 32-bit ints.
7673 echo " "
7674 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7675 if $test "$intsize" -ge 4; then
7676         xxx=int
7677 else
7678         xxx=long
7679 fi
7680 $cat >try.c <<EOCP
7681 #include <stdio.h>
7682 #include <sys/types.h>
7683 #include <signal.h>
7684 $signal_t blech(s) int s; { exit(3); }
7685 int main()
7686 {
7687         $xxx i32;
7688         double f, g;
7689         int result = 0;
7690         char str[16];
7691         signal(SIGFPE, blech);
7692
7693         /* Don't let compiler optimize the test away.  Store the number 
7694            in a writable string for gcc to pass to sscanf under HP/UX.
7695         */
7696         sprintf(str, "2147483647");
7697         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7698         g = 10 * f;
7699         i32  = ($xxx) g;
7700
7701         /* x86 processors will probably give 0x8000 0000, which is a
7702        sign change.  We don't want that.  We want to mimic SPARC
7703            behavior here, which is to preserve the sign and give
7704            back 0x7fff ffff.
7705         */
7706         if (i32 != ($xxx) f)
7707                 result |= 1;
7708         exit(result);
7709 }
7710 EOCP
7711 set try
7712 if eval $compile_ok; then
7713         ./try
7714         yyy=$?
7715 else
7716         echo "(I can't seem to compile the test program--assuming it can't)"
7717         yyy=1
7718 fi
7719 case "$yyy" in
7720 0)      val="$define"
7721         echo "Yup, it can."
7722         ;;
7723 *)      val="$undef"
7724         echo "Nope, it can't."
7725         ;;
7726 esac
7727 set d_casti32
7728 eval $setvar
7729 $rm -f try try.*
7730
7731 : check for ability to cast negative floats to unsigned
7732 echo " "
7733 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7734 $cat >try.c <<EOCP
7735 #include <stdio.h>
7736 #include <sys/types.h>
7737 #include <signal.h>
7738 $signal_t blech(s) int s; { exit(7); }
7739 $signal_t blech_in_list(s) int s; { exit(4); }
7740 unsigned long dummy_long(p) unsigned long p; { return p; }
7741 unsigned int dummy_int(p) unsigned int p; { return p; }
7742 unsigned short dummy_short(p) unsigned short p; { return p; }
7743 int main()
7744 {
7745         double f;
7746         unsigned long along;
7747         unsigned int aint;
7748         unsigned short ashort;
7749         int result = 0;
7750         char str[16];
7751         
7752         /* Frustrate gcc-2.7.2's optimizer which failed this test with
7753            a direct f = -123. assignment.  gcc-2.8.0 reportedly
7754            optimized the whole file away
7755         */
7756         /* Store the number in a writable string for gcc to pass to 
7757            sscanf under HP/UX.
7758         */
7759         sprintf(str, "-123");
7760         sscanf(str, "%lf", &f);  /* f = -123.; */
7761
7762         signal(SIGFPE, blech);
7763         along = (unsigned long)f;
7764         aint = (unsigned int)f;
7765         ashort = (unsigned short)f;
7766         if (along != (unsigned long)-123)
7767                 result |= 1;
7768         if (aint != (unsigned int)-123)
7769                 result |= 1;
7770         if (ashort != (unsigned short)-123)
7771                 result |= 1;
7772         sprintf(str, "1073741824.");
7773         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
7774         f = f + f;
7775         along = 0;
7776         along = (unsigned long)f;
7777         if (along != 0x80000000)
7778                 result |= 2;
7779         f -= 1.;
7780         along = 0;
7781         along = (unsigned long)f;
7782         if (along != 0x7fffffff)
7783                 result |= 1;
7784         f += 2.;
7785         along = 0;
7786         along = (unsigned long)f;
7787         if (along != 0x80000001)
7788                 result |= 2;
7789         if (result)
7790                 exit(result);
7791         signal(SIGFPE, blech_in_list);
7792         sprintf(str, "123.");
7793         sscanf(str, "%lf", &f);  /* f = 123.; */
7794         along = dummy_long((unsigned long)f);
7795         aint = dummy_int((unsigned int)f);
7796         ashort = dummy_short((unsigned short)f);
7797         if (along != (unsigned long)123)
7798                 result |= 4;
7799         if (aint != (unsigned int)123)
7800                 result |= 4;
7801         if (ashort != (unsigned short)123)
7802                 result |= 4;
7803         exit(result);
7804
7805 }
7806 EOCP
7807 set try
7808 if eval $compile_ok; then
7809         ./try
7810         castflags=$?
7811 else
7812         echo "(I can't seem to compile the test program--assuming it can't)"
7813         castflags=7
7814 fi
7815 case "$castflags" in
7816 0)      val="$define"
7817         echo "Yup, it can."
7818         ;;
7819 *)      val="$undef"
7820         echo "Nope, it can't."
7821         ;;
7822 esac
7823 set d_castneg
7824 eval $setvar
7825 $rm -f try.*
7826
7827 : see if vprintf exists
7828 echo " "
7829 if set vprintf val -f d_vprintf; eval $csym; $val; then
7830         echo 'vprintf() found.' >&4
7831         val="$define"
7832         $cat >vprintf.c <<'EOF'
7833 #include <varargs.h>
7834
7835 int main() { xxx("foo"); }
7836
7837 xxx(va_alist)
7838 va_dcl
7839 {
7840         va_list args;
7841         char buf[10];
7842
7843         va_start(args);
7844         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
7845 }
7846 EOF
7847         set vprintf
7848         if eval $compile && ./vprintf; then
7849                 echo "Your vsprintf() returns (int)." >&4
7850                 val2="$undef"
7851         else
7852                 echo "Your vsprintf() returns (char*)." >&4
7853                 val2="$define"
7854         fi
7855 else
7856         echo 'vprintf() NOT found.' >&4
7857                 val="$undef"
7858                 val2="$undef"
7859 fi
7860 set d_vprintf
7861 eval $setvar
7862 val=$val2
7863 set d_charvspr
7864 eval $setvar
7865
7866 : see if chown exists
7867 set chown d_chown
7868 eval $inlibc
7869
7870 : see if chroot exists
7871 set chroot d_chroot
7872 eval $inlibc
7873
7874 : see if chsize exists
7875 set chsize d_chsize
7876 eval $inlibc
7877
7878 : check for const keyword
7879 echo " "
7880 echo 'Checking to see if your C compiler knows about "const"...' >&4
7881 $cat >const.c <<'EOCP'
7882 typedef struct spug { int drokk; } spug;
7883 int main()
7884 {
7885         const char *foo;
7886         const spug y;
7887 }
7888 EOCP
7889 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7890         val="$define"
7891         echo "Yup, it does."
7892 else
7893         val="$undef"
7894         echo "Nope, it doesn't."
7895 fi
7896 set d_const
7897 eval $setvar
7898
7899 : see if crypt exists
7900 echo " "
7901 if set crypt val -f d_crypt; eval $csym; $val; then
7902         echo 'crypt() found.' >&4
7903         val="$define"
7904         cryptlib=''
7905 else
7906         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7907         if $test -z "$cryptlib"; then
7908                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7909         else
7910                 cryptlib=-lcrypt
7911         fi
7912         if $test -z "$cryptlib"; then
7913                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7914         else
7915                 cryptlib=-lcrypt
7916         fi
7917         if $test -z "$cryptlib"; then
7918                 cryptlib=`./loc libcrypt$_a "" $libpth`
7919         else
7920                 cryptlib=-lcrypt
7921         fi
7922         if $test -z "$cryptlib"; then
7923                 echo 'crypt() NOT found.' >&4
7924                 val="$undef"
7925         else
7926                 val="$define"
7927         fi
7928 fi
7929 set d_crypt
7930 eval $setvar
7931
7932 : get csh whereabouts
7933 case "$csh" in
7934 'csh') val="$undef" ;;
7935 *) val="$define" ;;
7936 esac
7937 set d_csh
7938 eval $setvar
7939 : Respect a hint or command line value for full_csh.
7940 case "$full_csh" in
7941 '') full_csh=$csh ;;
7942 esac
7943
7944 : see if cuserid exists
7945 set cuserid d_cuserid
7946 eval $inlibc
7947
7948 : see if this is a limits.h system
7949 set limits.h i_limits
7950 eval $inhdr
7951
7952 : see if this is a float.h system
7953 set float.h i_float
7954 eval $inhdr
7955
7956 : See if number of significant digits in a double precision number is known
7957 echo " "
7958 $cat >dbl_dig.c <<EOM
7959 #$i_limits I_LIMITS
7960 #$i_float I_FLOAT
7961 #ifdef I_LIMITS
7962 #include <limits.h>
7963 #endif
7964 #ifdef I_FLOAT
7965 #include <float.h>
7966 #endif
7967 #ifdef DBL_DIG
7968 printf("Contains DBL_DIG");
7969 #endif
7970 EOM
7971 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7972 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7973         echo "DBL_DIG found." >&4
7974         val="$define"
7975 else
7976         echo "DBL_DIG NOT found." >&4
7977         val="$undef"
7978 fi
7979 $rm -f dbl_dig.?
7980 set d_dbl_dig
7981 eval $setvar
7982
7983 : see if difftime exists
7984 set difftime d_difftime
7985 eval $inlibc
7986
7987 : see if this is a dirent system
7988 echo " "
7989 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7990         val="$define"
7991         echo "<dirent.h> found." >&4
7992 else
7993         val="$undef"
7994         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7995                 echo "<sys/dir.h> found." >&4
7996                 echo " "
7997         else
7998                 xinc=`./findhdr sys/ndir.h`
7999         fi
8000         echo "<dirent.h> NOT found." >&4
8001 fi
8002 set i_dirent
8003 eval $setvar
8004
8005 : Look for type of directory structure.
8006 echo " "
8007 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8008
8009 case "$direntrytype" in
8010 ''|' ')
8011         case "$i_dirent" in
8012         $define) guess1='struct dirent' ;;
8013         *) guess1='struct direct'  ;;
8014         esac
8015         ;;
8016 *)      guess1="$direntrytype"
8017         ;;
8018 esac
8019
8020 case "$guess1" in
8021 'struct dirent') guess2='struct direct' ;;
8022 *) guess2='struct dirent' ;;
8023 esac
8024                 
8025 if $contains "$guess1" try.c >/dev/null 2>&1; then
8026         direntrytype="$guess1"
8027         echo "Your directory entries are $direntrytype." >&4
8028 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8029         direntrytype="$guess2"
8030         echo "Your directory entries seem to be $direntrytype." >&4
8031 else
8032         echo "I don't recognize your system's directory entries." >&4
8033         rp="What type is used for directory entries on this system?"
8034         dflt="$guess1"
8035         . ./myread
8036         direntrytype="$ans"
8037 fi
8038 $rm -f try.c
8039
8040
8041 : see if the directory entry stores field length
8042 echo " "
8043 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8044 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8045         echo "Good, your directory entry keeps length information in d_namlen." >&4
8046         val="$define"
8047 else
8048         echo "Your directory entry does not know about the d_namlen field." >&4
8049         val="$undef"
8050 fi
8051 set d_dirnamlen
8052 eval $setvar
8053 $rm -f try.c
8054
8055 : see if dlerror exists
8056 xxx_runnm="$runnm"
8057 runnm=false
8058 set dlerror d_dlerror
8059 eval $inlibc
8060 runnm="$xxx_runnm"
8061
8062 : see if dlfcn is available
8063 set dlfcn.h i_dlfcn
8064 eval $inhdr
8065
8066 case "$usedl" in
8067 $define|y|true)
8068         $cat << EOM
8069
8070 On a few systems, the dynamically loaded modules that perl generates and uses
8071 will need a different extension than shared libs. The default will probably
8072 be appropriate.
8073
8074 EOM
8075         case "$dlext" in
8076         '')     dflt="$so" ;;
8077         *)      dflt="$dlext" ;;
8078         esac
8079         rp='What is the extension of dynamically loaded modules'
8080         . ./myread
8081         dlext="$ans"
8082         ;;
8083 *)
8084         dlext="none"
8085         ;;
8086 esac
8087
8088 : Check if dlsym need a leading underscore
8089 echo " "
8090 val="$undef"
8091
8092 case "$dlsrc" in
8093 dl_dlopen.xs)
8094         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8095         $cat >dyna.c <<'EOM'
8096 fred () { }
8097 EOM
8098
8099 $cat >fred.c<<EOM
8100
8101 #include <stdio.h>
8102 #$i_dlfcn I_DLFCN
8103 #ifdef I_DLFCN
8104 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8105 #else
8106 #include <sys/types.h>
8107 #include <nlist.h>
8108 #include <link.h>
8109 #endif
8110
8111 extern int fred() ;
8112
8113 int main()
8114 {
8115     void * handle ;
8116     void * symbol ;
8117 #ifndef RTLD_LAZY
8118     int mode = 1 ;
8119 #else
8120     int mode = RTLD_LAZY ;
8121 #endif
8122     handle = dlopen("./dyna.$dlext", mode) ;
8123     if (handle == NULL) {
8124         printf ("1\n") ;
8125         fflush (stdout) ;
8126         exit(0);
8127     }
8128     symbol = dlsym(handle, "fred") ;
8129     if (symbol == NULL) {
8130         /* try putting a leading underscore */
8131         symbol = dlsym(handle, "_fred") ;
8132         if (symbol == NULL) {
8133             printf ("2\n") ;
8134             fflush (stdout) ;
8135             exit(0);
8136         }
8137         printf ("3\n") ;
8138     }
8139     else
8140         printf ("4\n") ;
8141     fflush (stdout) ;
8142     exit(0);
8143 }
8144 EOM
8145         : Call the object file tmp-dyna.o in case dlext=o.
8146         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8147                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8148                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8149                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8150                 xxx=`./fred`
8151                 case $xxx in
8152                 1)      echo "Test program failed using dlopen." >&4
8153                         echo "Perhaps you should not use dynamic loading." >&4;;
8154                 2)      echo "Test program failed using dlsym." >&4
8155                         echo "Perhaps you should not use dynamic loading." >&4;;
8156                 3)      echo "dlsym needs a leading underscore" >&4
8157                         val="$define" ;;
8158                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8159                 esac
8160         else
8161                 echo "I can't compile and run the test program." >&4
8162                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8163         fi
8164         ;;
8165 esac
8166                 
8167 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8168
8169 set d_dlsymun
8170 eval $setvar
8171
8172 hasproto='varname=$1; func=$2; shift; shift;
8173 while $test $# -ge 2; do
8174         case "$1" in
8175         $define) echo "#include <$2>";;
8176         esac ;
8177     shift 2;
8178 done > try.c;
8179 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8180 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8181         echo "$func() prototype found.";
8182         val="$define";
8183 else
8184         echo "$func() prototype NOT found.";
8185         val="$undef";
8186 fi;
8187 set $varname;
8188 eval $setvar;
8189 $rm -f try.c tryout.c'
8190
8191 : see if prototype for drand48 is available
8192 echo " "
8193 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8194 eval $hasproto
8195
8196 : see if dup2 exists
8197 set dup2 d_dup2
8198 eval $inlibc
8199
8200 : see if eaccess exists
8201 set eaccess d_eaccess
8202 eval $inlibc
8203
8204 : see if endgrent exists
8205 set endgrent d_endgrent
8206 eval $inlibc
8207
8208 : see if endhostent exists
8209 set endhostent d_endhent
8210 eval $inlibc
8211
8212 : see if endnetent exists
8213 set endnetent d_endnent
8214 eval $inlibc
8215
8216 : see if endprotoent exists
8217 set endprotoent d_endpent
8218 eval $inlibc
8219
8220 : see if endpwent exists
8221 set endpwent d_endpwent
8222 eval $inlibc
8223
8224 : see if endservent exists
8225 set endservent d_endsent
8226 eval $inlibc
8227
8228 : see if endspent exists
8229 set endspent d_endspent
8230 eval $inlibc
8231
8232 : Locate the flags for 'open()'
8233 echo " "
8234 $cat >open3.c <<'EOCP'
8235 #include <sys/types.h>
8236 #ifdef I_FCNTL
8237 #include <fcntl.h>
8238 #endif
8239 #ifdef I_SYS_FILE
8240 #include <sys/file.h>
8241 #endif
8242 int main() {
8243         if(O_RDONLY);
8244 #ifdef O_TRUNC
8245         exit(0);
8246 #else
8247         exit(1);
8248 #endif
8249 }
8250 EOCP
8251 : check sys/file.h first to get FREAD on Sun
8252 if $test `./findhdr sys/file.h` && \
8253                 set open3 -DI_SYS_FILE && eval $compile; then
8254         h_sysfile=true;
8255         echo "<sys/file.h> defines the O_* constants..." >&4
8256         if ./open3; then
8257                 echo "and you have the 3 argument form of open()." >&4
8258                 val="$define"
8259         else
8260                 echo "but not the 3 argument form of open().  Oh, well." >&4
8261                 val="$undef"
8262         fi
8263 elif $test `./findhdr fcntl.h` && \
8264                 set open3 -DI_FCNTL && eval $compile; then
8265         h_fcntl=true;
8266         echo "<fcntl.h> defines the O_* constants..." >&4
8267         if ./open3; then
8268                 echo "and you have the 3 argument form of open()." >&4
8269                 val="$define"
8270         else
8271                 echo "but not the 3 argument form of open().  Oh, well." >&4
8272                 val="$undef"
8273         fi
8274 else
8275         val="$undef"
8276         echo "I can't find the O_* constant definitions!  You got problems." >&4
8277 fi
8278 set d_open3
8279 eval $setvar
8280 $rm -f open3*
8281
8282 : see which of string.h or strings.h is needed
8283 echo " "
8284 strings=`./findhdr string.h`
8285 if $test "$strings" && $test -r "$strings"; then
8286         echo "Using <string.h> instead of <strings.h>." >&4
8287         val="$define"
8288 else
8289         val="$undef"
8290         strings=`./findhdr strings.h`
8291         if $test "$strings" && $test -r "$strings"; then
8292                 echo "Using <strings.h> instead of <string.h>." >&4
8293         else
8294                 echo "No string header found -- You'll surely have problems." >&4
8295         fi
8296 fi
8297 set i_string
8298 eval $setvar
8299 case "$i_string" in
8300 "$undef") strings=`./findhdr strings.h`;;
8301 *)        strings=`./findhdr string.h`;;
8302 esac
8303
8304 : check for non-blocking I/O stuff
8305 case "$h_sysfile" in
8306 true) echo "#include <sys/file.h>" > head.c;;
8307 *)
8308         case "$h_fcntl" in
8309         true) echo "#include <fcntl.h>" > head.c;;
8310         *) echo "#include <sys/fcntl.h>" > head.c;;
8311         esac
8312         ;;
8313 esac
8314 echo " "
8315 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8316 case "$o_nonblock" in
8317 '')
8318         $cat head.c > try.c
8319         $cat >>try.c <<'EOCP'
8320 #include <stdio.h>
8321 int main() {
8322 #ifdef O_NONBLOCK
8323         printf("O_NONBLOCK\n");
8324         exit(0);
8325 #endif
8326 #ifdef O_NDELAY
8327         printf("O_NDELAY\n");
8328         exit(0);
8329 #endif
8330 #ifdef FNDELAY
8331         printf("FNDELAY\n");
8332         exit(0);
8333 #endif
8334         exit(0);
8335 }
8336 EOCP
8337         set try
8338         if eval $compile_ok; then
8339                 o_nonblock=`./try`
8340                 case "$o_nonblock" in
8341                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8342                 *) echo "Seems like we can use $o_nonblock.";;
8343                 esac
8344         else
8345                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8346         fi
8347         ;;
8348 *) echo "Using $hint value $o_nonblock.";;
8349 esac
8350 $rm -f try try.* .out core
8351
8352 echo " "
8353 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8354 case "$eagain" in
8355 '')
8356         $cat head.c > try.c
8357         $cat >>try.c <<EOCP
8358 #include <errno.h>
8359 #include <sys/types.h>
8360 #include <signal.h>
8361 #include <stdio.h> 
8362 #define MY_O_NONBLOCK $o_nonblock
8363 #ifndef errno  /* XXX need better Configure test */
8364 extern int errno;
8365 #endif
8366 #$i_unistd I_UNISTD
8367 #ifdef I_UNISTD
8368 #include <unistd.h>
8369 #endif
8370 #ifdef $i_string
8371 #include <string.h>
8372 #else
8373 #include <strings.h>
8374 #endif
8375 $signal_t blech(x) int x; { exit(3); }
8376 EOCP
8377         $cat >> try.c <<'EOCP'
8378 int main()
8379 {
8380         int pd[2];
8381         int pu[2];
8382         char buf[1];
8383         char string[100];
8384
8385         pipe(pd);       /* Down: child -> parent */
8386         pipe(pu);       /* Up: parent -> child */
8387         if (0 != fork()) {
8388                 int ret;
8389                 close(pd[1]);   /* Parent reads from pd[0] */
8390                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8391                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8392                         exit(1);
8393                 signal(SIGALRM, blech);
8394                 alarm(5);
8395                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8396                         exit(2);
8397                 sprintf(string, "%d\n", ret);
8398                 write(2, string, strlen(string));
8399                 alarm(0);
8400 #ifdef EAGAIN
8401                 if (errno == EAGAIN) {
8402                         printf("EAGAIN\n");
8403                         goto ok;
8404                 }
8405 #endif
8406 #ifdef EWOULDBLOCK
8407                 if (errno == EWOULDBLOCK)
8408                         printf("EWOULDBLOCK\n");
8409 #endif
8410         ok:
8411                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8412                 sleep(2);                               /* Give it time to close our pipe */
8413                 alarm(5);
8414                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8415                 alarm(0);
8416                 sprintf(string, "%d\n", ret);
8417                 write(3, string, strlen(string));
8418                 exit(0);
8419         }
8420
8421         close(pd[0]);                   /* We write to pd[1] */
8422         close(pu[1]);                   /* We read from pu[0] */
8423         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8424         close(pd[1]);                   /* Pipe pd is now fully closed! */
8425         exit(0);                                /* Bye bye, thank you for playing! */
8426 }
8427 EOCP
8428         set try
8429         if eval $compile_ok; then
8430                 echo "$startsh" >mtry
8431                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8432                 chmod +x mtry
8433                 ./mtry >/dev/null 2>&1
8434                 case $? in
8435                 0) eagain=`$cat try.out`;;
8436                 1) echo "Could not perform non-blocking setting!";;
8437                 2) echo "I did a successful read() for something that was not there!";;
8438                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8439                 *) echo "Something terribly wrong happened during testing.";;
8440                 esac
8441                 rd_nodata=`$cat try.ret`
8442                 echo "A read() system call with no data present returns $rd_nodata."
8443                 case "$rd_nodata" in
8444                 0|-1) ;;
8445                 *)
8446                         echo "(That's peculiar, fixing that to be -1.)"
8447                         rd_nodata=-1
8448                         ;;
8449                 esac
8450                 case "$eagain" in
8451                 '')
8452                         echo "Forcing errno EAGAIN on read() with no data available."
8453                         eagain=EAGAIN
8454                         ;;
8455                 *)
8456                         echo "Your read() sets errno to $eagain when no data is available."
8457                         ;;
8458                 esac
8459                 status=`$cat try.err`
8460                 case "$status" in
8461                 0) echo "And it correctly returns 0 to signal EOF.";;
8462                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8463                 *) echo "However, your read() returns '$status' on EOF??";;
8464                 esac
8465                 val="$define"
8466                 if test "$status" = "$rd_nodata"; then
8467                         echo "WARNING: you can't distinguish between EOF and no data!"
8468                         val="$undef"
8469                 fi
8470         else
8471                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8472                 eagain=EAGAIN
8473         fi
8474         set d_eofnblk
8475         eval $setvar
8476         ;;
8477 *)
8478         echo "Using $hint value $eagain."
8479         echo "Your read() returns $rd_nodata when no data is present."
8480         case "$d_eofnblk" in
8481         "$define") echo "And you can see EOF because read() returns 0.";;
8482         "$undef") echo "But you can't see EOF status from read() returned value.";;
8483         *)
8484                 echo "(Assuming you can't see EOF status from read anyway.)"
8485                 d_eofnblk=$undef
8486                 ;;
8487         esac
8488         ;;
8489 esac
8490 $rm -f try try.* .out core head.c mtry
8491
8492 : see if fchmod exists
8493 set fchmod d_fchmod
8494 eval $inlibc
8495
8496 : see if fchown exists
8497 set fchown d_fchown
8498 eval $inlibc
8499
8500 : see if this is an fcntl system
8501 set fcntl d_fcntl
8502 eval $inlibc
8503
8504 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8505 while $test $# -ge 2; do
8506         case "$1" in
8507         $define) echo "#include <$2>";;
8508         esac ;
8509     shift 2;
8510 done > try.c;
8511 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8512 set try;
8513 if eval $compile; then
8514         val="$define";
8515 else
8516         val="$undef";
8517 fi;
8518 set $varname;
8519 eval $setvar;
8520 $rm -f try.c try.o'
8521
8522 socketlib=''
8523 sockethdr=''
8524 : see whether socket exists
8525 echo " "
8526 $echo $n "Hmm... $c" >&4
8527 if set socket val -f d_socket; eval $csym; $val; then
8528         echo "Looks like you have Berkeley networking support." >&4
8529         d_socket="$define"
8530         if set setsockopt val -f; eval $csym; $val; then
8531                 d_oldsock="$undef"
8532         else
8533                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8534                 d_oldsock="$define"
8535         fi
8536 else
8537         if $contains socklib libc.list >/dev/null 2>&1; then
8538                 echo "Looks like you have Berkeley networking support." >&4
8539                 d_socket="$define"
8540                 : we will have to assume that it supports the 4.2 BSD interface
8541                 d_oldsock="$undef"
8542         else
8543                 echo "You don't have Berkeley networking in libc$_a..." >&4
8544                 if test "X$d_socket" = "X$define"; then
8545                    echo "...but you seem to believe that you have sockets." >&4
8546                 else
8547                         for net in net socket
8548                         do
8549                                 if test -f /usr/lib/lib$net$_a; then
8550                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8551                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8552                                         if $contains socket libc.list >/dev/null 2>&1; then
8553                                                 d_socket="$define"
8554                                                 socketlib="-l$net"
8555                                                 case "$net" in
8556                                                 net)
8557                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8558                                                         sockethdr="-I/usr/netinclude"
8559                                                         ;;
8560                                                 esac
8561                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8562                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8563                                                         d_oldsock="$undef"
8564                                                 else
8565                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8566                                                         d_oldsock="$define"
8567                                                 fi
8568                                                 break
8569                                         fi
8570                                 fi
8571                         done
8572                         if test "X$d_socket" != "X$define"; then
8573                            echo "or anywhere else I see." >&4
8574                            d_socket="$undef"
8575                            d_oldsock="$undef"
8576                         fi
8577                 fi
8578         fi
8579 fi
8580
8581 : see if socketpair exists
8582 set socketpair d_sockpair
8583 eval $inlibc
8584
8585
8586 echo " "
8587 echo "Checking the availability of certain socket constants..." >& 4
8588 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8589         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8590         $cat >try.c <<EOF
8591 #include <sys/types.h>
8592 #include <sys/socket.h>
8593 int main() {
8594     int i = $ENUM;
8595 }
8596 EOF
8597         val="$undef"
8598         set try; if eval $compile; then
8599                 val="$define"
8600         fi
8601         set d_${enum}; eval $setvar
8602         $rm -f try.c try
8603 done
8604
8605 : see if sys/select.h has to be included
8606 set sys/select.h i_sysselct
8607 eval $inhdr
8608
8609 : see if we should include time.h, sys/time.h, or both
8610 echo " "
8611 if test "X$timeincl" = X; then
8612         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8613         $echo $n "I'm now running the test program...$c"
8614         $cat >try.c <<'EOCP'
8615 #include <sys/types.h>
8616 #ifdef I_TIME
8617 #include <time.h>
8618 #endif
8619 #ifdef I_SYSTIME
8620 #ifdef SYSTIMEKERNEL
8621 #define KERNEL
8622 #endif
8623 #include <sys/time.h>
8624 #endif
8625 #ifdef I_SYSSELECT
8626 #include <sys/select.h>
8627 #endif
8628 int main()
8629 {
8630         struct tm foo;
8631 #ifdef S_TIMEVAL
8632         struct timeval bar;
8633 #endif
8634 #ifdef S_TIMEZONE
8635         struct timezone tzp;
8636 #endif
8637         if (foo.tm_sec == foo.tm_sec)
8638                 exit(0);
8639 #ifdef S_TIMEVAL
8640         if (bar.tv_sec == bar.tv_sec)
8641                 exit(0);
8642 #endif
8643         exit(1);
8644 }
8645 EOCP
8646         flags=''
8647         for s_timezone in '-DS_TIMEZONE' ''; do
8648         sysselect=''
8649         for s_timeval in '-DS_TIMEVAL' ''; do
8650         for i_systimek in '' '-DSYSTIMEKERNEL'; do
8651         for i_time in '' '-DI_TIME'; do
8652         for i_systime in '-DI_SYSTIME' ''; do
8653                 case "$flags" in
8654                 '') $echo $n ".$c"
8655                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8656                         if eval $compile; then
8657                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8658                                 shift
8659                                 flags="$*"
8660                                 echo " "
8661                                 $echo $n "Succeeded with $flags$c"
8662                         fi
8663                         ;;
8664                 esac
8665         done
8666         done
8667         done
8668         done
8669         done
8670         timeincl=''
8671         echo " "
8672         case "$flags" in
8673         *SYSTIMEKERNEL*) i_systimek="$define"
8674                 timeincl=`./findhdr sys/time.h`
8675                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8676         *) i_systimek="$undef";;
8677         esac
8678         case "$flags" in
8679         *I_TIME*) i_time="$define"
8680                 timeincl=`./findhdr time.h`" $timeincl"
8681                 echo "We'll include <time.h>." >&4;;
8682         *) i_time="$undef";;
8683         esac
8684         case "$flags" in
8685         *I_SYSTIME*) i_systime="$define"
8686                 timeincl=`./findhdr sys/time.h`" $timeincl"
8687                 echo "We'll include <sys/time.h>." >&4;;
8688         *) i_systime="$undef";;
8689         esac
8690         $rm -f try.c try
8691 fi
8692
8693 : check for fd_set items
8694 $cat <<EOM
8695
8696 Checking to see how well your C compiler handles fd_set and friends ...
8697 EOM
8698 $cat >fd_set.c <<EOCP
8699 #$i_systime I_SYS_TIME
8700 #$i_sysselct I_SYS_SELECT
8701 #$d_socket HAS_SOCKET
8702 #include <sys/types.h>
8703 #ifdef HAS_SOCKET
8704 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8705 #endif
8706 #ifdef I_SYS_TIME
8707 #include <sys/time.h>
8708 #endif
8709 #ifdef I_SYS_SELECT
8710 #include <sys/select.h>
8711 #endif
8712 int main() {
8713         fd_set fds;
8714
8715 #ifdef TRYBITS
8716         if(fds.fds_bits);
8717 #endif
8718
8719 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8720         exit(0);
8721 #else
8722         exit(1);
8723 #endif
8724 }
8725 EOCP
8726 set fd_set -DTRYBITS
8727 if eval $compile; then
8728         d_fds_bits="$define"
8729         d_fd_set="$define"
8730         echo "Well, your system knows about the normal fd_set typedef..." >&4
8731         if ./fd_set; then
8732                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8733                 d_fd_macros="$define"
8734         else
8735                 $cat >&4 <<'EOM'
8736 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
8737 EOM
8738                 d_fd_macros="$undef"
8739         fi
8740 else
8741         $cat <<'EOM'
8742 Hmm, your compiler has some difficulty with fd_set.  Checking further...
8743 EOM
8744         set fd_set
8745         if eval $compile; then
8746                 d_fds_bits="$undef"
8747                 d_fd_set="$define"
8748                 echo "Well, your system has some sort of fd_set available..." >&4
8749                 if ./fd_set; then
8750                         echo "and you have the normal fd_set macros." >&4
8751                         d_fd_macros="$define"
8752                 else
8753                         $cat <<'EOM'
8754 but not the normal fd_set macros!  Gross!  More work for me...
8755 EOM
8756                         d_fd_macros="$undef"
8757                 fi
8758         else
8759         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
8760                 d_fd_set="$undef"
8761                 d_fds_bits="$undef"
8762                 d_fd_macros="$undef"
8763         fi
8764 fi
8765 $rm -f fd_set*
8766
8767 : see if fgetpos exists
8768 set fgetpos d_fgetpos
8769 eval $inlibc
8770
8771 : see if flock exists
8772 set flock d_flock
8773 eval $inlibc
8774
8775 : see if fork exists
8776 set fork d_fork
8777 eval $inlibc
8778
8779 : see if pathconf exists
8780 set pathconf d_pathconf
8781 eval $inlibc
8782
8783 : see if fpathconf exists
8784 set fpathconf d_fpathconf
8785 eval $inlibc
8786
8787
8788 : check for off64_t
8789 echo " "
8790 echo "Checking to see if your system supports off64_t..." >&4
8791 $cat >try.c <<EOCP
8792 #include <sys/types.h>
8793 #include <unistd.h>
8794 int main() { off64_t x = 7; }'
8795 EOCP
8796 set try
8797 if eval $compile; then
8798         val="$define"
8799         echo "Yes, it does."
8800 else
8801         val="$undef"
8802         echo "No, it doesn't."
8803         case "$lseeksize" in
8804         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
8805         esac
8806 fi
8807 $rm -f try.* try
8808 set d_off64_t
8809 eval $setvar
8810
8811 : check for fpos64_t
8812 echo " "
8813 echo "Checking to see if your system supports fpos64_t..." >&4
8814 $cat >try.c <<EOCP
8815 #include <sys/stdio.h>
8816 int main() { fpos64_t x x = 7; }'
8817 EOCP
8818 set try
8819 if eval $compile; then
8820         val="$define"
8821         echo "Yes, it does."
8822 else
8823         val="$undef"
8824         echo "No, it doesn't."
8825         case "$fpossize" in
8826         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
8827         esac
8828 fi
8829 $rm -f try.* try
8830 set d_fpos64_t
8831 eval $setvar
8832
8833 hasstruct='varname=$1; struct=$2; shift; shift;
8834 while $test $# -ge 2; do
8835         case "$1" in
8836         $define) echo "#include <$2>";;
8837         esac ;
8838     shift 2;
8839 done > try.c;
8840 echo "int main () { struct $struct foo; }" >> try.c;
8841 set try;
8842 if eval $compile; then
8843         val="$define";
8844 else
8845         val="$undef";
8846 fi;
8847 set $varname;
8848 eval $setvar;
8849 $rm -f try.c try.o'
8850
8851 : see if this is a sys/param system
8852 set sys/param.h i_sysparam
8853 eval $inhdr
8854
8855 : see if this is a sys/mount.h system
8856 set sys/mount.h i_sysmount
8857 eval $inhdr
8858
8859 : see if sys/types.h has to be included
8860 set sys/types.h i_systypes
8861 eval $inhdr
8862
8863
8864 echo " "
8865 echo "Checking to see if your system supports struct fs_data..." >&4
8866 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
8867 eval $hasstruct
8868 case "$d_fs_data_s" in
8869 "$define")      echo "Yes, it does."   ;;
8870 *)              echo "No, it doesn't." ;;
8871 esac
8872
8873 : see if fseeko exists
8874 set fseeko d_fseeko
8875 eval $inlibc
8876 case "$longsize" in
8877 8) echo "(Your long is 64 bits, so in a pinch you could use fseek.)" ;;
8878 esac
8879
8880 : see if fsetpos exists
8881 set fsetpos d_fsetpos
8882 eval $inlibc
8883
8884
8885 : see if fstatfs exists
8886 set fstatfs d_fstatfs
8887 eval $inlibc
8888
8889
8890 : see if statvfs exists
8891 set statvfs d_statvfs
8892 eval $inlibc
8893
8894 : see if fstatvfs exists
8895 set fstatvfs d_fstatvfs
8896 eval $inlibc
8897
8898
8899 : see if ftello exists
8900 set ftello d_ftello
8901 eval $inlibc
8902 case "$longsize" in
8903 8) echo "(Your long is 64 bits, so in a pinch you could use ftell.)" ;;
8904 esac
8905
8906 : see if getgrent exists
8907 set getgrent d_getgrent
8908 eval $inlibc
8909
8910 : see if gethostbyaddr exists
8911 set gethostbyaddr d_gethbyaddr
8912 eval $inlibc
8913
8914 : see if gethostbyname exists
8915 set gethostbyname d_gethbyname
8916 eval $inlibc
8917
8918 : see if gethostent exists
8919 set gethostent d_gethent
8920 eval $inlibc
8921
8922 : see how we will look up host name
8923 echo " "
8924 call=''
8925 if set gethostname val -f d_gethname; eval $csym; $val; then
8926         echo 'gethostname() found.' >&4
8927         d_gethname="$define"
8928         call=gethostname
8929 fi
8930 if set uname val -f d_uname; eval $csym; $val; then
8931         if ./xenix; then
8932                 $cat <<'EOM'
8933 uname() was found, but you're running xenix, and older versions of xenix
8934 have a broken uname(). If you don't really know whether your xenix is old
8935 enough to have a broken system call, use the default answer.
8936
8937 EOM
8938                 dflt=y
8939                 case "$d_uname" in
8940                 "$define") dflt=n;;
8941                 esac
8942                 rp='Is your uname() broken?'
8943                 . ./myread
8944                 case "$ans" in
8945                 n*) d_uname="$define"; call=uname;;
8946                 esac
8947         else
8948                 echo 'uname() found.' >&4
8949                 d_uname="$define"
8950                 case "$call" in
8951                 '') call=uname ;;
8952                 esac
8953         fi
8954 fi
8955 case "$d_gethname" in
8956 '') d_gethname="$undef";;
8957 esac
8958 case "$d_uname" in
8959 '') d_uname="$undef";;
8960 esac
8961 case "$d_uname$d_gethname" in
8962 *define*)
8963         dflt=n
8964         cat <<EOM
8965  
8966 Every now and then someone has a $call() that lies about the hostname
8967 but can't be fixed for political or economic reasons.  If you wish, I can
8968 pretend $call() isn't there and maybe compute hostname at run-time
8969 thanks to the '$phostname' command.
8970
8971 EOM
8972         rp="Shall I ignore $call() from now on?"
8973         . ./myread
8974         case "$ans" in
8975         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8976         esac;;
8977 esac
8978 case "$phostname" in
8979 '') aphostname='';;
8980 *) case "$aphostname" in
8981         /*) ;;
8982         *) set X $phostname
8983                 shift
8984                 file=$1
8985                 shift
8986                 file=`./loc $file $file $pth`
8987                 aphostname=`echo $file $*`
8988                 ;;
8989         esac
8990         ;;
8991 esac
8992 case "$d_uname$d_gethname" in
8993 *define*) ;;
8994 *)
8995         case "$phostname" in
8996         '')
8997                 echo "There will be no way for $package to get your hostname." >&4;;
8998         *)
8999         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9000                 ;;
9001         esac;;
9002 esac
9003 case "$d_phostname" in
9004 '') d_phostname="$undef";;
9005 esac
9006
9007 : see if this is a netdb.h system
9008 set netdb.h i_netdb
9009 eval $inhdr
9010
9011 : see if prototypes for various gethostxxx netdb.h functions are available
9012 echo " "
9013 set d_gethostprotos gethostent $i_netdb netdb.h
9014 eval $hasproto
9015
9016 : see if getlogin exists
9017 set getlogin d_getlogin
9018 eval $inlibc
9019
9020 : see if getmnt exists
9021 set getmnt d_getmnt
9022 eval $inlibc
9023
9024 : see if getmntent exists
9025 set getmntent d_getmntent
9026 eval $inlibc
9027
9028 : see if getnetbyaddr exists
9029 set getnetbyaddr d_getnbyaddr
9030 eval $inlibc
9031
9032 : see if getnetbyname exists
9033 set getnetbyname d_getnbyname
9034 eval $inlibc
9035
9036 : see if getnetent exists
9037 set getnetent d_getnent
9038 eval $inlibc
9039
9040 : see if prototypes for various getnetxxx netdb.h functions are available
9041 echo " "
9042 set d_getnetprotos getnetent $i_netdb netdb.h
9043 eval $hasproto
9044
9045
9046 : see if getprotobyname exists
9047 set getprotobyname d_getpbyname
9048 eval $inlibc
9049
9050 : see if getprotobynumber exists
9051 set getprotobynumber d_getpbynumber
9052 eval $inlibc
9053
9054 : see if getprotoent exists
9055 set getprotoent d_getpent
9056 eval $inlibc
9057
9058 : see if getpgid exists
9059 set getpgid d_getpgid
9060 eval $inlibc
9061
9062 : see if getpgrp2 exists
9063 set getpgrp2 d_getpgrp2
9064 eval $inlibc
9065
9066 : see if getppid exists
9067 set getppid d_getppid
9068 eval $inlibc
9069
9070 : see if getpriority exists
9071 set getpriority d_getprior
9072 eval $inlibc
9073
9074 : see if prototypes for various getprotoxxx netdb.h functions are available
9075 echo " "
9076 set d_getprotoprotos getprotoent $i_netdb netdb.h
9077 eval $hasproto
9078
9079 : see if getpwent exists
9080 set getpwent d_getpwent
9081 eval $inlibc
9082
9083
9084 : see if getservbyname exists
9085 set getservbyname d_getsbyname
9086 eval $inlibc
9087
9088 : see if getservbyport exists
9089 set getservbyport d_getsbyport
9090 eval $inlibc
9091
9092 : see if getservent exists
9093 set getservent d_getsent
9094 eval $inlibc
9095
9096 : see if prototypes for various getservxxx netdb.h functions are available
9097 echo " "
9098 set d_getservprotos getservent $i_netdb netdb.h
9099 eval $hasproto
9100
9101 : see if getspent exists
9102 set getspent d_getspent
9103 eval $inlibc
9104
9105 : see if getspnam exists
9106 set getspnam d_getspnam
9107 eval $inlibc
9108
9109 : see if gettimeofday or ftime exists
9110 set gettimeofday d_gettimeod
9111 eval $inlibc
9112 case "$d_gettimeod" in
9113 "$undef")
9114         set ftime d_ftime 
9115         eval $inlibc
9116         ;;
9117 *)
9118         val="$undef"; set d_ftime; eval $setvar
9119         ;;
9120 esac
9121 case "$d_gettimeod$d_ftime" in
9122 "$undef$undef")
9123         echo " "
9124         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9125         ;;
9126 esac
9127
9128 : see if this is an grp system
9129 set grp.h i_grp
9130 eval $inhdr
9131
9132 case "$i_grp" in
9133 $define)
9134         xxx=`./findhdr grp.h`
9135         $cppstdin $cppflags $cppminus < $xxx >$$.h
9136
9137         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9138                 val="$define"
9139         else
9140                 val="$undef"
9141         fi
9142         set d_grpasswd
9143         eval $setvar
9144
9145         $rm -f $$.h
9146         ;;
9147 *)
9148         val="$undef";
9149         set d_grpasswd; eval $setvar
9150         ;;
9151 esac
9152
9153 : see if hasmntopt exists
9154 set hasmntopt d_hasmntopt
9155 eval $inlibc
9156
9157 : see if this is a netinet/in.h or sys/in.h system
9158 set netinet/in.h i_niin sys/in.h i_sysin
9159 eval $inhdr
9160
9161 : see if arpa/inet.h has to be included
9162 set arpa/inet.h i_arpainet
9163 eval $inhdr
9164
9165 : see if htonl --and friends-- exists
9166 val=''
9167 set htonl val
9168 eval $inlibc
9169
9170 : Maybe they are macros.
9171 case "$val" in
9172 $undef)
9173         $cat >htonl.c <<EOM
9174 #include <stdio.h>
9175 #include <sys/types.h>
9176 #$i_niin I_NETINET_IN
9177 #$i_sysin I_SYS_IN
9178 #$i_arpainet I_ARPA_INET
9179 #ifdef I_NETINET_IN
9180 #include <netinet/in.h>
9181 #endif
9182 #ifdef I_SYS_IN
9183 #include <sys/in.h>
9184 #endif
9185 #ifdef I_ARPA_INET
9186 #include <arpa/inet.h>
9187 #endif
9188 #ifdef htonl
9189 printf("Defined as a macro.");
9190 #endif
9191 EOM
9192         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9193         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9194                 val="$define"
9195                 echo "But it seems to be defined as a macro." >&4
9196         fi
9197         $rm -f htonl.?
9198         ;;
9199 esac
9200 set d_htonl
9201 eval $setvar
9202
9203 : index or strchr
9204 echo " "
9205 if set index val -f; eval $csym; $val; then
9206         if set strchr val -f d_strchr; eval $csym; $val; then
9207                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9208                         val="$define"
9209                         vali="$undef"
9210                         echo "strchr() found." >&4
9211                 else
9212                         val="$undef"
9213                         vali="$define"
9214                         echo "index() found." >&4
9215                 fi
9216         else
9217                 val="$undef"
9218                 vali="$define"
9219                 echo "index() found." >&4
9220         fi
9221 else
9222         if set strchr val -f d_strchr; eval $csym; $val; then
9223                 val="$define"
9224                 vali="$undef"
9225                 echo "strchr() found." >&4
9226         else
9227                 echo "No index() or strchr() found!" >&4
9228                 val="$undef"
9229                 vali="$undef"
9230         fi
9231 fi
9232 set d_strchr; eval $setvar
9233 val="$vali"
9234 set d_index; eval $setvar
9235
9236 : check whether inet_aton exists
9237 set inet_aton d_inetaton
9238 eval $inlibc
9239
9240 : Look for isascii
9241 echo " "
9242 $cat >isascii.c <<'EOCP'
9243 #include <stdio.h>
9244 #include <ctype.h>
9245 int main() {
9246         int c = 'A';
9247         if (isascii(c))
9248                 exit(0);
9249         else
9250                 exit(1);
9251 }
9252 EOCP
9253 set isascii
9254 if eval $compile; then
9255         echo "isascii() found." >&4
9256         val="$define"
9257 else
9258         echo "isascii() NOT found." >&4
9259         val="$undef"
9260 fi
9261 set d_isascii
9262 eval $setvar
9263 $rm -f isascii*
9264
9265 : see if killpg exists
9266 set killpg d_killpg
9267 eval $inlibc
9268
9269 : see if lchown exists
9270 echo " "
9271 $cat > try.c <<'EOCP'
9272 /* System header to define __stub macros and hopefully few prototypes,
9273     which can conflict with char lchown(); below.  */
9274 #include <assert.h>
9275 /* Override any gcc2 internal prototype to avoid an error.  */
9276 /* We use char because int might match the return type of a gcc2
9277    builtin and then its argument prototype would still apply.  */
9278 char lchown();
9279 int main() {
9280     /*  The GNU C library defines this for functions which it implements
9281         to always fail with ENOSYS.  Some functions are actually named
9282         something starting with __ and the normal name is an alias.  */
9283 #if defined (__stub_lchown) || defined (__stub___lchown)
9284 choke me
9285 #else
9286 lchown();
9287 #endif
9288 ; return 0; }
9289 EOCP
9290 set try
9291 if eval $compile; then
9292     $echo "lchown() found." >&4
9293     val="$define"
9294 else
9295     $echo "lchown() NOT found." >&4
9296     val="$undef"
9297 fi
9298 set d_lchown
9299 eval $setvar
9300
9301 : See if number of significant digits in a double precision number is known
9302 echo " "
9303 $cat >ldbl_dig.c <<EOM
9304 #$i_limits I_LIMITS
9305 #$i_float I_FLOAT
9306 #ifdef I_LIMITS
9307 #include <limits.h>
9308 #endif
9309 #ifdef I_FLOAT
9310 #include <float.h>
9311 #endif
9312 #ifdef LDBL_DIG
9313 printf("Contains LDBL_DIG");
9314 #endif
9315 EOM
9316 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9317 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9318         echo "LDBL_DIG found." >&4
9319         val="$define"
9320 else
9321         echo "LDBL_DIG NOT found." >&4
9322         val="$undef"
9323 fi
9324 $rm -f ldbl_dig.?
9325 set d_ldbl_dig
9326 eval $setvar
9327
9328 : see if link exists
9329 set link d_link
9330 eval $inlibc
9331
9332 : see if localeconv exists
9333 set localeconv d_locconv
9334 eval $inlibc
9335
9336 : see if lockf exists
9337 set lockf d_lockf
9338 eval $inlibc
9339
9340 : check for long long
9341 echo " "
9342 $echo $n "Checking to see if your system supports long long..." $c >&4
9343 echo 'int main() { long long x = 7; return 0; }' > try.c
9344 set try
9345 if eval $compile; then
9346         val="$define"
9347         echo " Yes, it does." >&4
9348 else
9349         val="$undef"
9350         echo " No, it doesn't." >&4
9351 fi
9352 $rm try.*
9353 set d_longlong
9354 eval $setvar
9355
9356 : check for length of long long
9357 case "${d_longlong}${longlongsize}" in
9358 $define)
9359         echo " "
9360         $echo $n "Checking to see how big your long longs are..." $c >&4
9361         $cat >try.c <<'EOCP'
9362 #include <stdio.h>
9363 int main()
9364 {
9365     printf("%d\n", (int)sizeof(long long));
9366     return(0);
9367 }
9368 EOCP
9369         set try
9370         if eval $compile_ok; then
9371                 longlongsize=`./try$exe_ext`
9372                 $echo " $longlongsize bytes." >&4
9373         else
9374                 dflt='8'
9375                 echo " "
9376                 echo "(I can't seem to compile the test program.  Guessing...)"
9377                 rp="What is the size of a long long (in bytes)?"
9378                 . ./myread
9379                 longlongsize="$ans"
9380         fi
9381         if $test "X$longsize" = "X$longlongsize"; then
9382                 echo "(That isn't any different from an ordinary long.)"
9383         fi      
9384         ;;
9385 esac
9386 $rm -f try.* try
9387
9388 : see if lstat exists
9389 set lstat d_lstat
9390 eval $inlibc
9391
9392 : see if mblen exists
9393 set mblen d_mblen
9394 eval $inlibc
9395
9396 : see if mbstowcs exists
9397 set mbstowcs d_mbstowcs
9398 eval $inlibc
9399
9400 : see if mbtowc exists
9401 set mbtowc d_mbtowc
9402 eval $inlibc
9403
9404 : see if memchr exists
9405 set memchr d_memchr
9406 eval $inlibc
9407
9408 : see if memcmp exists
9409 set memcmp d_memcmp
9410 eval $inlibc
9411
9412 : see if memcpy exists
9413 set memcpy d_memcpy
9414 eval $inlibc
9415
9416 : see if memmove exists
9417 set memmove d_memmove
9418 eval $inlibc
9419
9420 : see if memset exists
9421 set memset d_memset
9422 eval $inlibc
9423
9424 : see if mkdir exists
9425 set mkdir d_mkdir
9426 eval $inlibc
9427
9428 : see if mkfifo exists
9429 set mkfifo d_mkfifo
9430 eval $inlibc
9431
9432 : see if mktime exists
9433 set mktime d_mktime
9434 eval $inlibc
9435
9436 : see if msgctl exists
9437 set msgctl d_msgctl
9438 eval $inlibc
9439
9440 : see if msgget exists
9441 set msgget d_msgget
9442 eval $inlibc
9443
9444 : see if msgsnd exists
9445 set msgsnd d_msgsnd
9446 eval $inlibc
9447
9448 : see if msgrcv exists
9449 set msgrcv d_msgrcv
9450 eval $inlibc
9451
9452 : see how much of the 'msg*(2)' library is present.
9453 h_msg=true
9454 echo " "
9455 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9456 *"$undef"*) h_msg=false;;
9457 esac
9458 case "$osname" in
9459 freebsd)
9460     case "`ipcs 2>&1`" in
9461     "SVID messages"*"not configured"*)
9462         echo "Your $osname does not have the msg*(2) configured." >&4
9463         h_msg=false
9464         val="$undef"
9465         set msgctl d_msgctl
9466         eval $setvar
9467         set msgget d_msgget
9468         eval $setvar
9469         set msgsnd d_msgsnd
9470         eval $setvar
9471         set msgrcv d_msgrcv
9472         eval $setvar
9473         ;;
9474     esac
9475     ;;
9476 esac
9477 : we could also check for sys/ipc.h ...
9478 if $h_msg && $test `./findhdr sys/msg.h`; then
9479         echo "You have the full msg*(2) library." >&4
9480         val="$define"
9481 else
9482         echo "You don't have the full msg*(2) library." >&4
9483         val="$undef"
9484 fi
9485 set d_msg
9486 eval $setvar
9487
9488 : see if nice exists
9489 set nice d_nice
9490 eval $inlibc
9491
9492 : see if inttypes.h is available
9493 : we want a real compile instead of Inhdr because some systems
9494 : have an inttypes.h which includes non-existent headers
9495 echo " "
9496 $cat >try.c <<EOCP
9497 #include <inttypes.h>
9498 int main() {
9499         static int32_t foo32 = 0x12345678;
9500 }
9501 EOCP
9502 set try
9503 if eval $compile; then
9504         echo "<inttypes.h> found." >&4
9505         val="$define"
9506 else
9507         echo "<inttypes.h> NOT found." >&4
9508         val="$undef"
9509 fi
9510 $rm -f try.c try
9511 set i_inttypes
9512 eval $setvar
9513
9514 : check for int64_t
9515 echo " "
9516 $echo $n "Checking to see if your system supports int64_t...$c" >&4
9517 $cat >try.c <<EOCP
9518 #include <sys/types.h>
9519 #$i_inttypes I_INTTYPES
9520 #ifdef I_INTTYPES
9521 #include <inttypes.h>
9522 #endif
9523 int main() { int64_t x = 7; }
9524 EOCP
9525 set try
9526 if eval $compile; then
9527         val="$define"
9528         echo " Yes, it does." >&4
9529 else
9530         val="$undef"
9531         echo " No, it doesn't." >&4
9532 fi
9533 $rm -f try try.*
9534 set d_int64t
9535 eval $setvar
9536
9537
9538 echo " "
9539 echo "Checking which 64-bit integer type we could use..." >&4
9540
9541 case "$intsize" in
9542 8) val=int
9543    set quadtype
9544    eval $setvar
9545    val='"unsigned int"'
9546    set uquadtype
9547    eval $setvar
9548    quadkind=1
9549    ;;
9550 *) case "$longsize" in
9551    8) val=long
9552       set quadtype
9553       eval $setvar
9554       val='"unsigned long"'
9555       set uquadtype
9556       eval $setvar
9557       quadkind=2
9558       ;;
9559    *) case "$uselonglong:$d_longlong:$longlongsize" in
9560       define:define:8)
9561         val='"long long"'
9562         set quadtype
9563         eval $setvar
9564         val='"unsigned long long"'
9565         set uquadtype
9566         eval $setvar
9567         quadkind=3
9568         ;;
9569       *) case "$d_int64t" in
9570          define)
9571            val=int64_t
9572            set quadtype
9573            eval $setvar
9574            val=uint64_t
9575            set uquadtype
9576            eval $setvar
9577            quadkind=4
9578            ;;
9579          esac
9580          ;;
9581       esac
9582       ;;
9583    esac
9584    ;;
9585 esac
9586
9587 case "$quadtype" in
9588 '')     case "$uselonglong:$d_longlong:$longlongsize" in
9589         undef:define:8)
9590            echo "(You would have 'long long', but you are not using it.)" >&4 ;;
9591         *) echo "Alas, no 64-bit integer types in sight." >&4 ;;
9592         esac
9593         d_quad="$undef"
9594         ;;
9595 *)      if test X"$use64bits" = Xdefine -o X"$longsize" = X8; then
9596             verb="will"
9597         else
9598             verb="could"
9599         fi
9600         echo "We $verb use '$quadtype' for 64-bit integers." >&4
9601         d_quad="$define"
9602         ;;
9603 esac
9604
9605 : check for length of character
9606 echo " "
9607 case "$charsize" in
9608 '')
9609         echo "Checking to see how big your characters are (hey, you never know)..." >&4
9610         $cat >try.c <<'EOCP'
9611 #include <stdio.h>
9612 int main()
9613 {
9614     printf("%d\n", (int)sizeof(char));
9615     exit(0);
9616 }
9617 EOCP
9618         set try
9619         if eval $compile_ok; then
9620                 dflt=`./try`
9621         else
9622                 dflt='1'
9623                 echo "(I can't seem to compile the test program.  Guessing...)"
9624         fi
9625         ;;
9626 *)
9627         dflt="$charsize"
9628         ;;
9629 esac
9630 rp="What is the size of a character (in bytes)?"
9631 . ./myread
9632 charsize="$ans"
9633 $rm -f try.c try
9634
9635
9636 echo " "
9637 $echo "Choosing the C types to be used for Perl's internal types..." >&4
9638
9639 case "$use64bits:$d_quad:$quadtype" in
9640 define:define:?*)
9641         ivtype="$quadtype"
9642         uvtype="$uquadtype"
9643         ivsize=8
9644         uvsize=8
9645         ;;
9646 *)      ivtype="long"
9647         uvtype="unsigned long"
9648         ivsize=$longsize
9649         uvsize=$longsize
9650         ;;
9651 esac
9652
9653 case "$uselongdouble:$d_longdbl" in
9654 define:define)
9655         nvtype="long double"
9656         nvsize=$longdblsize
9657         ;;
9658 *)      nvtype=double
9659         nvsize=$doublesize
9660         ;;
9661 esac
9662
9663 $echo "(IV will be "$ivtype", $ivsize bytes)"
9664 $echo "(UV will be "$uvtype", $uvsize bytes)"
9665 $echo "(NV will be "$nvtype", $nvsize bytes)"
9666
9667 $cat >try.c <<EOCP
9668 #$i_inttypes I_INTTYPES
9669 #ifdef I_INTTYPES
9670 #include <inttypes.h>
9671 #endif
9672 #include <stdio.h>
9673 int main() {
9674 #ifdef INT8
9675    int8_t i =  INT8_MAX;
9676   uint8_t u = UINT8_MAX;
9677   printf("int8_t\n");
9678 #endif
9679 #ifdef INT16
9680    int16_t i =  INT16_MAX;
9681   uint16_t i = UINT16_MAX;
9682   printf("int16_t\n");
9683 #endif
9684 #ifdef INT32
9685    int32_t i =  INT32_MAX;
9686   uint32_t u = UINT32_MAX;
9687   printf("int32_t\n");
9688 #endif
9689 }
9690 EOCP
9691
9692 case "$i8type" in
9693 '')     case "$charsize" in
9694         1)      i8type=char
9695                 u8type="unsigned char"
9696                 i8size=$charsize
9697                 u8size=$charsize
9698                 ;;
9699         esac
9700         ;;
9701 esac
9702 case "$i8type" in
9703 '')     set try -DINT8
9704         if eval $compile; then
9705                 case "`./try$exe_ext`" in
9706                 int8_t) i8type=int8_t
9707                         u8type=uint8_t
9708                         i8size=1
9709                         u8size=1
9710                         ;;
9711                 esac
9712         fi
9713         ;;
9714 esac
9715 case "$i8type" in
9716 '')     if $test $charsize -ge 1; then
9717                 i8type=char
9718                 u8type="unsigned char"
9719                 i8size=$charsize
9720                 u8size=$charsize
9721         fi
9722         ;;
9723 esac
9724
9725 case "$i16type" in
9726 '')     case "$shortsize" in
9727         2)      i16type=short
9728                 u16type="unsigned short"
9729                 i16size=$shortsize
9730                 u16size=$shortsize
9731                 ;;
9732         esac
9733         ;;
9734 esac
9735 case "$i16type" in
9736 '')     set try -DINT16
9737         if eval $compile; then
9738                 case "`./try$exe_ext`" in
9739                 int16_t)
9740                         i16type=int16_t
9741                         u16type=uint16_t
9742                         i16size=2
9743                         u16size=2
9744                         ;;
9745                 esac
9746         fi
9747         ;;
9748 esac
9749 case "$i16type" in
9750 '')     if $test $shortsize -ge 2; then
9751                 i16type=short
9752                 u16type="unsigned short"
9753                 i16size=$shortsize
9754                 u16size=$shortsize
9755         fi
9756         ;;
9757 esac
9758
9759 case "$i32type" in
9760 '')     case "$longsize" in
9761         4)      i32type=long
9762                 u32type="unsigned long"
9763                 i32size=$longsize
9764                 u32size=$longsize
9765                 ;;
9766         *)      case "$intsize" in
9767                 4)      i32type=int
9768                         u32type="unsigned int"
9769                         i32size=$intsize
9770                         u32size=$intsize
9771                         ;;
9772                 esac
9773                 ;;
9774         esac
9775         ;;
9776 esac
9777 case "$i32type" in
9778 '')     set try -DINT32
9779         if eval $compile; then
9780                 case "`./try$exe_ext`" in
9781                 int32_t)
9782                         i32type=int32_t
9783                         u32type=uint32_t
9784                         i32size=4
9785                         u32size=4
9786                         ;;
9787                 esac
9788         fi
9789         ;;
9790 esac
9791 case "$i32type" in
9792 '')     if $test $intsize -ge 4; then
9793                 i32type=int
9794                 u32type="unsigned int"
9795                 i32size=$intsize
9796                 u32size=$intsize
9797         fi
9798         ;;
9799 esac
9800
9801 case "$i64type" in
9802 '')     case "$d_quad:$quadtype" in
9803         define:?*)
9804                 i64type="$quadtype"
9805                 u64type="$uquadtype"
9806                 i64size=8
9807                 u64size=8
9808                 ;;
9809         esac
9810         ;;
9811 esac
9812
9813 $echo "Checking whether your NVs can preserve your UVs..." >&4
9814 $cat <<EOP >try.c
9815 #include <stdio.h>
9816 int main() {
9817     $uvtype k = ($uvtype)~0, l;
9818     $nvtype d;
9819     l = k;
9820     d = ($nvtype)l;
9821     l = ($uvtype)d;
9822     if (l == k)
9823        printf("preserve\n");
9824     exit(0);
9825 }
9826 EOP
9827 set try
9828 if eval $compile; then
9829         case "`./try$exe_ext`" in
9830         preserve) d_nv_preserves_uv="$define" ;;
9831         esac
9832 fi      
9833 case "$d_nv_preserves_uv" in
9834 $define) $echo "Yes, they can."  2>&1 ;;
9835 *)       $echo "No, they can't." 2>&1
9836          d_nv_preserves_uv="$undef"
9837          ;;
9838 esac
9839
9840 $rm -f try.* try
9841
9842 : see if POSIX threads are available
9843 set pthread.h i_pthread
9844 eval $inhdr
9845
9846
9847
9848
9849 : how to create joinable pthreads
9850 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
9851         echo " "
9852         echo "Checking what constant to use for creating joinable pthreads..." >&4 
9853         $cat >try.c <<'EOCP'
9854 #include <pthread.h>
9855 int main() {
9856     int detachstate = JOINABLE;
9857 }
9858 EOCP
9859         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
9860         if eval $compile; then
9861                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
9862                 val="$undef" # Yes, undef.
9863                 set d_old_pthread_create_joinable
9864                 eval $setvar
9865                 val=""
9866                 set old_pthread_create_joinable
9867                 eval $setvar
9868         else
9869                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
9870                 if eval $compile; then
9871                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
9872                         val="$define"
9873                         set d_old_pthread_create_joinable
9874                         eval $setvar
9875                         val=PTHREAD_CREATE_UNDETACHED
9876                         set old_pthread_create_joinable
9877                         eval $setvar
9878                 else            
9879                         set try -DJOINABLE=__UNDETACHED
9880                         if eval $compile; then
9881                                 echo "You seem to use __UNDETACHED." >&4
9882                                 val="$define"
9883                                 set d_old_pthread_create_joinable
9884                                 eval $setvar
9885                                 val=__UNDETACHED
9886                                 set old_pthread_create_joinable
9887                                 eval $setvar
9888                         else
9889                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
9890                                 val="$define"
9891                                 set d_old_pthread_create_joinable
9892                                 eval $setvar
9893                                 val=0
9894                                 set old_pthread_create_joinable
9895                                 eval $setvar
9896                         fi
9897                 fi
9898         fi
9899         $rm -f try try.*
9900 else
9901     d_old_pthread_create_joinable="$undef"
9902     old_pthread_create_joinable=""
9903 fi
9904
9905 : see if pause exists
9906 set pause d_pause
9907 eval $inlibc
9908
9909 : see if pipe exists
9910 set pipe d_pipe
9911 eval $inlibc
9912
9913 : see if poll exists
9914 set poll d_poll
9915 eval $inlibc
9916
9917
9918 : see whether the various POSIXish _yields exist
9919 $cat >try.c <<EOP
9920 #include <pthread.h>
9921 #include <stdio.h>
9922 int main() {
9923 #ifdef SCHED_YIELD
9924         sched_yield();
9925 #else
9926 #ifdef PTHREAD_YIELD
9927         pthread_yield();
9928 #else
9929 #ifdef PTHREAD_YIELD_NULL
9930         pthread_yield(NULL);
9931 #endif
9932 #endif
9933 #endif
9934 }
9935 EOP
9936 : see if sched_yield exists
9937 set try -DSCHED_YIELD
9938 if eval $compile; then
9939     val="$define"
9940     sched_yield='sched_yield()'
9941 else
9942     val="$undef"
9943 fi
9944 case "$usethreads" in
9945 $define)
9946         case "$val" in
9947         $define) echo 'sched_yield() found.' >&4        ;;
9948         *)       echo 'sched_yield() NOT found.' >&4    ;;
9949         esac
9950 esac
9951 set d_sched_yield
9952 eval $setvar
9953
9954 : see if pthread_yield exists
9955 set try -DPTHREAD_YIELD
9956 if eval $compile; then
9957     val="$define"
9958     case "$sched_yield" in
9959     '') sched_yield='pthread_yield()' ;;
9960     esac
9961 else
9962     set try -DPTHREAD_YIELD_NULL
9963     if eval $compile; then
9964         val="$define"
9965         case "$sched_yield" in
9966         '') sched_yield='pthread_yield(NULL)' ;;
9967         esac
9968     else
9969         val="$undef"
9970     fi
9971 fi
9972 case "$usethreads" in
9973 $define)
9974         case "$val" in
9975         $define) echo 'pthread_yield() found.' >&4      ;;
9976         *)       echo 'pthread_yield() NOT found.' >&4  ;;
9977         esac
9978         ;;
9979 esac
9980 set d_pthread_yield
9981 eval $setvar
9982
9983 case "$sched_yield" in
9984 '') sched_yield=undef ;;
9985 esac
9986
9987 $rm -f try try.*
9988
9989 : see if this is a pwd.h system
9990 set pwd.h i_pwd
9991 eval $inhdr
9992
9993 case "$i_pwd" in
9994 $define)
9995         xxx=`./findhdr pwd.h`
9996         $cppstdin $cppflags $cppminus < $xxx >$$.h
9997
9998         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
9999                 val="$define"
10000         else
10001                 val="$undef"
10002         fi
10003         set d_pwquota
10004         eval $setvar
10005
10006         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10007                 val="$define"
10008         else
10009                 val="$undef"
10010         fi
10011         set d_pwage
10012         eval $setvar
10013
10014         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10015                 val="$define"
10016         else
10017                 val="$undef"
10018         fi
10019         set d_pwchange
10020         eval $setvar
10021
10022         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10023                 val="$define"
10024         else
10025                 val="$undef"
10026         fi
10027         set d_pwclass
10028         eval $setvar
10029
10030         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10031                 val="$define"
10032         else
10033                 val="$undef"
10034         fi
10035         set d_pwexpire
10036         eval $setvar
10037
10038         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10039                 val="$define"
10040         else
10041                 val="$undef"
10042         fi
10043         set d_pwcomment
10044         eval $setvar
10045
10046         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10047                 val="$define"
10048         else
10049                 val="$undef"
10050         fi
10051         set d_pwgecos
10052         eval $setvar
10053
10054         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10055                 val="$define"
10056         else
10057                 val="$undef"
10058         fi
10059         set d_pwpasswd
10060         eval $setvar
10061
10062         $rm -f $$.h
10063         ;;
10064 *)
10065         val="$undef"; 
10066         set d_pwquota; eval $setvar
10067         set d_pwage; eval $setvar
10068         set d_pwchange; eval $setvar
10069         set d_pwclass; eval $setvar
10070         set d_pwexpire; eval $setvar
10071         set d_pwcomment; eval $setvar
10072         set d_pwgecos; eval $setvar
10073         set d_pwpasswd; eval $setvar
10074         ;;
10075 esac
10076
10077 : see if readdir and friends exist
10078 set readdir d_readdir
10079 eval $inlibc
10080 set seekdir d_seekdir
10081 eval $inlibc
10082 set telldir d_telldir
10083 eval $inlibc
10084 set rewinddir d_rewinddir
10085 eval $inlibc
10086
10087 : see if readlink exists
10088 set readlink d_readlink
10089 eval $inlibc
10090
10091 : see if rename exists
10092 set rename d_rename
10093 eval $inlibc
10094
10095 : see if rmdir exists
10096 set rmdir d_rmdir
10097 eval $inlibc
10098
10099 : see if memory.h is available.
10100 val=''
10101 set memory.h val
10102 eval $inhdr
10103
10104 : See if it conflicts with string.h
10105 case "$val" in
10106 $define)
10107         case "$strings" in
10108         '') ;;
10109         *)
10110                 $cppstdin $cppflags $cppminus < $strings > mem.h
10111                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10112                         echo " "
10113                         echo "We won't be including <memory.h>."
10114                         val="$undef"
10115                 fi
10116                 $rm -f mem.h
10117                 ;;
10118         esac
10119 esac
10120 set i_memory
10121 eval $setvar
10122
10123 : can bcopy handle overlapping blocks?
10124 val="$undef"
10125 case "$d_bcopy" in
10126 "$define")
10127         echo " "
10128         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10129         $cat >try.c <<EOCP
10130 #$i_memory I_MEMORY
10131 #$i_stdlib I_STDLIB
10132 #$i_string I_STRING
10133 #$i_unistd I_UNISTD
10134 EOCP
10135         $cat >>try.c <<'EOCP'
10136 #include <stdio.h>
10137 #ifdef I_MEMORY
10138 #  include <memory.h>
10139 #endif
10140 #ifdef I_STDLIB
10141 #  include <stdlib.h>
10142 #endif
10143 #ifdef I_STRING
10144 #  include <string.h>
10145 #else
10146 #  include <strings.h>
10147 #endif
10148 #ifdef I_UNISTD
10149 #  include <unistd.h>  /* Needed for NetBSD */
10150 #endif
10151 int main()
10152 {
10153 char buf[128], abc[128];
10154 char *b;
10155 int len;
10156 int off;
10157 int align;
10158
10159 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10160
10161 for (align = 7; align >= 0; align--) {
10162         for (len = 36; len; len--) {
10163                 b = buf+align;
10164                 bcopy(abc, b, len);
10165                 for (off = 1; off <= len; off++) {
10166                         bcopy(b, b+off, len);
10167                         bcopy(b+off, b, len);
10168                         if (bcmp(b, abc, len))
10169                                 exit(1);
10170                 }
10171         }
10172 }
10173 exit(0);
10174 }
10175 EOCP
10176         set try
10177         if eval $compile_ok; then
10178                 if ./try 2>/dev/null; then
10179                         echo "Yes, it can."
10180                         val="$define"
10181                 else
10182                         echo "It can't, sorry."
10183                         case "$d_memmove" in
10184                         "$define") echo "But that's Ok since you have memmove()." ;;
10185                         esac
10186                 fi
10187         else
10188                 echo "(I can't compile the test program, so we'll assume not...)"
10189                 case "$d_memmove" in
10190                 "$define") echo "But that's Ok since you have memmove()." ;;
10191                 esac
10192         fi
10193         ;;
10194 esac
10195 $rm -f try.* try core
10196 set d_safebcpy
10197 eval $setvar
10198
10199 : can memcpy handle overlapping blocks?
10200 val="$undef"
10201 case "$d_memcpy" in
10202 "$define")
10203         echo " "
10204         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10205         $cat >try.c <<EOCP
10206 #$i_memory I_MEMORY
10207 #$i_stdlib I_STDLIB
10208 #$i_string I_STRING
10209 #$i_unistd I_UNISTD
10210 EOCP
10211         $cat >>try.c <<'EOCP'
10212 #include <stdio.h>
10213 #ifdef I_MEMORY
10214 #  include <memory.h>
10215 #endif
10216 #ifdef I_STDLIB
10217 #  include <stdlib.h>
10218 #endif
10219 #ifdef I_STRING
10220 #  include <string.h>
10221 #else
10222 #  include <strings.h>
10223 #endif
10224 #ifdef I_UNISTD
10225 #  include <unistd.h>  /* Needed for NetBSD */
10226 #endif
10227 int main()
10228 {
10229 char buf[128], abc[128];
10230 char *b;
10231 int len;
10232 int off;
10233 int align;
10234
10235 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10236    try to store the string in read-only memory. */
10237 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10238
10239 for (align = 7; align >= 0; align--) {
10240         for (len = 36; len; len--) {
10241                 b = buf+align;
10242                 memcpy(b, abc, len);
10243                 for (off = 1; off <= len; off++) {
10244                         memcpy(b+off, b, len);
10245                         memcpy(b, b+off, len);
10246                         if (memcmp(b, abc, len))
10247                                 exit(1);
10248                 }
10249         }
10250 }
10251 exit(0);
10252 }
10253 EOCP
10254         set try
10255         if eval $compile_ok; then
10256                 if ./try 2>/dev/null; then
10257                         echo "Yes, it can."
10258                         val="$define"
10259                 else
10260                         echo "It can't, sorry."
10261                         case "$d_memmove" in
10262                         "$define") echo "But that's Ok since you have memmove()." ;;
10263                         esac
10264                 fi
10265         else
10266                 echo "(I can't compile the test program, so we'll assume not...)"
10267                 case "$d_memmove" in
10268                 "$define") echo "But that's Ok since you have memmove()." ;;
10269                 esac
10270         fi
10271         ;;
10272 esac
10273 $rm -f try.* try core
10274 set d_safemcpy
10275 eval $setvar
10276
10277 : can memcmp be trusted to compare relative magnitude?
10278 val="$undef"
10279 case "$d_memcmp" in
10280 "$define")
10281         echo " "
10282         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10283         $cat >try.c <<EOCP
10284 #$i_memory I_MEMORY
10285 #$i_stdlib I_STDLIB
10286 #$i_string I_STRING
10287 #$i_unistd I_UNISTD
10288 EOCP
10289         $cat >>try.c <<'EOCP'
10290 #include <stdio.h>
10291 #ifdef I_MEMORY
10292 #  include <memory.h>
10293 #endif
10294 #ifdef I_STDLIB
10295 #  include <stdlib.h>
10296 #endif
10297 #ifdef I_STRING
10298 #  include <string.h>
10299 #else
10300 #  include <strings.h>
10301 #endif
10302 #ifdef I_UNISTD
10303 #  include <unistd.h>  /* Needed for NetBSD */
10304 #endif
10305 int main()
10306 {
10307 char a = -1;
10308 char b = 0;
10309 if ((a < b) && memcmp(&a, &b, 1) < 0)
10310         exit(1);
10311 exit(0);
10312 }
10313 EOCP
10314         set try
10315         if eval $compile_ok; then
10316                 if ./try 2>/dev/null; then
10317                         echo "Yes, it can."
10318                         val="$define"
10319                 else
10320                         echo "No, it can't (it uses signed chars)."
10321                 fi
10322         else
10323                 echo "(I can't compile the test program, so we'll assume not...)"
10324         fi
10325         ;;
10326 esac
10327 $rm -f try.* try core
10328 set d_sanemcmp
10329 eval $setvar
10330
10331 : see if select exists
10332 set select d_select
10333 eval $inlibc
10334
10335 : see if semctl exists
10336 set semctl d_semctl
10337 eval $inlibc
10338
10339 : see if semget exists
10340 set semget d_semget
10341 eval $inlibc
10342
10343 : see if semop exists
10344 set semop d_semop
10345 eval $inlibc
10346
10347 : see how much of the 'sem*(2)' library is present.
10348 h_sem=true
10349 echo " "
10350 case "$d_semctl$d_semget$d_semop" in
10351 *"$undef"*) h_sem=false;;
10352 esac
10353 case "$osname" in
10354 freebsd)
10355     case "`ipcs 2>&1`" in
10356     "SVID messages"*"not configured"*)
10357         echo "Your $osname does not have the sem*(2) configured." >&4
10358         h_sem=false
10359         val="$undef"
10360         set semctl d_semctl
10361         eval $setvar
10362         set semget d_semget
10363         eval $setvar
10364         set semop d_semop
10365         eval $setvar
10366         ;;
10367     esac
10368     ;;
10369 esac
10370 : we could also check for sys/ipc.h ...
10371 if $h_sem && $test `./findhdr sys/sem.h`; then
10372         echo "You have the full sem*(2) library." >&4
10373         val="$define"
10374 else
10375         echo "You don't have the full sem*(2) library." >&4
10376         val="$undef"
10377 fi
10378 set d_sem
10379 eval $setvar
10380
10381 : see whether sys/sem.h defines union semun
10382 echo " "
10383 $cat > try.c <<'END'
10384 #include <sys/types.h>
10385 #include <sys/ipc.h>
10386 #include <sys/sem.h>
10387 int main () { union semun semun; semun.buf = 0; }
10388 END
10389 set try
10390 if eval $compile; then
10391     echo "You have union semun in <sys/sem.h>." >&4
10392     val="$define"
10393 else
10394     echo "You do not have union semun in <sys/sem.h>." >&4
10395     val="$undef"
10396 fi
10397 $rm -f try try.c try.h
10398 set d_union_semun
10399 eval $setvar
10400
10401 : see how to do semctl IPC_STAT
10402 case "$d_sem" in
10403 $define)
10404     : see whether semctl IPC_STAT can use union semun
10405     echo " "
10406     $cat > try.h <<END
10407 #ifndef S_IRUSR
10408 #   ifdef S_IREAD
10409 #       define S_IRUSR S_IREAD
10410 #       define S_IWUSR S_IWRITE
10411 #       define S_IXUSR S_IEXEC
10412 #   else
10413 #       define S_IRUSR 0400
10414 #       define S_IWUSR 0200
10415 #       define S_IXUSR 0100
10416 #   endif
10417 #   define S_IRGRP (S_IRUSR>>3)
10418 #   define S_IWGRP (S_IWUSR>>3)
10419 #   define S_IXGRP (S_IXUSR>>3)
10420 #   define S_IROTH (S_IRUSR>>6)
10421 #   define S_IWOTH (S_IWUSR>>6)
10422 #   define S_IXOTH (S_IXUSR>>6)
10423 #endif
10424 #ifndef S_IRWXU
10425 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10426 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10427 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10428 #endif
10429 END
10430
10431     $cat > try.c <<END
10432 #include <sys/types.h>
10433 #include <sys/ipc.h>
10434 #include <sys/sem.h>
10435 #include <sys/stat.h>
10436 #include <stdio.h>
10437 #include <errno.h>
10438 #include "try.h"
10439 #ifndef errno
10440 extern int errno;
10441 #endif
10442 #$d_union_semun HAS_UNION_SEMUN
10443 int main() {
10444     union semun
10445 #ifndef HAS_UNION_SEMUN
10446     {
10447         int val;
10448         struct semid_ds *buf;
10449         unsigned short *array;
10450     }
10451 #endif
10452     arg;
10453     int sem, st;
10454
10455 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10456     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10457     if (sem > -1) {
10458         struct semid_ds argbuf;
10459         arg.buf = &argbuf;
10460 #       ifdef IPC_STAT
10461         st = semctl(sem, 0, IPC_STAT, arg);
10462         if (st == 0)
10463             printf("semun\n");
10464         else
10465 #       endif /* IPC_STAT */
10466             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10467 #       ifdef IPC_RMID
10468         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10469 #       endif /* IPC_RMID */
10470             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10471     } else
10472 #endif /* IPC_PRIVATE && ... */
10473         printf("semget failed: errno = %d\n", errno);
10474   return 0;
10475 }
10476 END
10477     val="$undef"
10478     set try
10479     if eval $compile; then
10480         xxx=`./try`
10481         case "$xxx" in
10482         semun) val="$define" ;;
10483         esac
10484     fi
10485     $rm -f try try.c
10486     set d_semctl_semun
10487     eval $setvar
10488     case "$d_semctl_semun" in
10489     $define)
10490         echo "You can use union semun for semctl IPC_STAT." >&4
10491         also='also'
10492         ;;
10493     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10494         also=''
10495         ;;
10496     esac
10497
10498     : see whether semctl IPC_STAT can use struct semid_ds pointer
10499     $cat > try.c <<'END'
10500 #include <sys/types.h>
10501 #include <sys/ipc.h>
10502 #include <sys/sem.h>
10503 #include <sys/stat.h>
10504 #include "try.h"
10505 #include <stdio.h>
10506 #include <errno.h>
10507 #ifndef errno
10508 extern int errno;
10509 #endif
10510 int main() {
10511     struct semid_ds arg;
10512     int sem, st;
10513
10514 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
10515     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10516     if (sem > -1) {
10517 #       ifdef IPC_STAT
10518         st = semctl(sem, 0, IPC_STAT, &arg);
10519         if (st == 0)
10520             printf("semid_ds\n");
10521         else
10522 #       endif /* IPC_STAT */
10523             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10524 #       ifdef IPC_RMID
10525         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10526 #       endif /* IPC_RMID */
10527             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10528     } else
10529 #endif /* IPC_PRIVATE && ... */
10530         printf("semget failed: errno = %d\n", errno);
10531
10532     return 0;
10533 }
10534 END
10535     val="$undef"
10536     set try
10537     if eval $compile; then
10538         xxx=`./try`
10539         case "$xxx" in
10540         semid_ds) val="$define" ;;
10541         esac
10542     fi
10543     $rm -f try try.c
10544     set d_semctl_semid_ds
10545     eval $setvar
10546     case "$d_semctl_semid_ds" in
10547     $define)
10548         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10549         ;;
10550     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10551         ;;
10552     esac
10553     $rm -f try.h
10554     ;;
10555 *)  val="$undef"
10556
10557     # We do not have the full sem*(2) library, so assume we can not
10558     # use either.
10559
10560     set d_semctl_semun
10561     eval $setvar
10562
10563     set d_semctl_semid_ds
10564     eval $setvar
10565     ;;
10566 esac
10567
10568 : see if setegid exists
10569 set setegid d_setegid
10570 eval $inlibc
10571
10572 : see if seteuid exists
10573 set seteuid d_seteuid
10574 eval $inlibc
10575
10576 : see if setgrent exists
10577 set setgrent d_setgrent
10578 eval $inlibc
10579
10580 : see if sethostent exists
10581 set sethostent d_sethent
10582 eval $inlibc
10583
10584 : see if setlinebuf exists
10585 set setlinebuf d_setlinebuf
10586 eval $inlibc
10587
10588 : see if setlocale exists
10589 set setlocale d_setlocale
10590 eval $inlibc
10591
10592 : see if setnetent exists
10593 set setnetent d_setnent
10594 eval $inlibc
10595
10596 : see if setprotoent exists
10597 set setprotoent d_setpent
10598 eval $inlibc
10599
10600 : see if setpgid exists
10601 set setpgid d_setpgid
10602 eval $inlibc
10603
10604 : see if setpgrp2 exists
10605 set setpgrp2 d_setpgrp2
10606 eval $inlibc
10607
10608 : see if setpriority exists
10609 set setpriority d_setprior
10610 eval $inlibc
10611
10612 : see if setpwent exists
10613 set setpwent d_setpwent
10614 eval $inlibc
10615
10616 : see if setregid exists
10617 set setregid d_setregid
10618 eval $inlibc
10619 set setresgid d_setresgid
10620 eval $inlibc
10621
10622 : see if setreuid exists
10623 set setreuid d_setreuid
10624 eval $inlibc
10625 set setresuid d_setresuid
10626 eval $inlibc
10627
10628 : see if setrgid exists
10629 set setrgid d_setrgid
10630 eval $inlibc
10631
10632 : see if setruid exists
10633 set setruid d_setruid
10634 eval $inlibc
10635
10636 : see if setservent exists
10637 set setservent d_setsent
10638 eval $inlibc
10639
10640 : see if setsid exists
10641 set setsid d_setsid
10642 eval $inlibc
10643
10644 : see if setspent exists
10645 set setspent d_setspent
10646 eval $inlibc
10647
10648 : see if setvbuf exists
10649 set setvbuf d_setvbuf
10650 eval $inlibc
10651
10652 : see if sfio.h is available
10653 set sfio.h i_sfio
10654 eval $inhdr
10655
10656
10657 : see if sfio library is available
10658 case "$i_sfio" in
10659 $define)
10660         val=''
10661         set sfreserve val
10662         eval $inlibc
10663         ;;
10664 *)
10665         val="$undef"
10666         ;;
10667 esac
10668 : Ok, but do we want to use it.
10669 case "$val" in
10670 $define)
10671         case "$usesfio" in
10672         true|$define|[yY]*) dflt='y';;
10673         *) dflt='n';;
10674         esac
10675         echo "$package can use the sfio library, but it is experimental."
10676         rp="You seem to have sfio available, do you want to try using it?"
10677         . ./myread
10678         case "$ans" in
10679         y|Y) ;;
10680         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
10681                 val="$undef"
10682                 : Remove sfio from list of libraries to use
10683                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
10684                 shift
10685                 libs="$*"
10686                 echo "libs = $libs" >&4
10687                 ;;
10688         esac
10689         ;;
10690 *)      case "$usesfio" in
10691         true|$define|[yY]*)
10692                 echo "Sorry, cannot find sfio on this machine" >&4
10693                 echo "Ignoring your setting of usesfio=$usesfio" >&4
10694                 ;;
10695         esac
10696         ;;
10697 esac
10698 set d_sfio
10699 eval $setvar
10700 case "$d_sfio" in
10701 $define) usesfio='true';;
10702 *) usesfio='false';;
10703 esac
10704
10705 : see if shmctl exists
10706 set shmctl d_shmctl
10707 eval $inlibc
10708
10709 : see if shmget exists
10710 set shmget d_shmget
10711 eval $inlibc
10712
10713 : see if shmat exists
10714 set shmat d_shmat
10715 eval $inlibc
10716 : see what shmat returns
10717 case "$d_shmat" in
10718 "$define")
10719         $cat >shmat.c <<'END'
10720 #include <sys/shm.h>
10721 void *shmat();
10722 END
10723         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
10724                 shmattype='void *'
10725         else
10726                 shmattype='char *'
10727         fi
10728         echo "and it returns ($shmattype)." >&4
10729         : see if a prototype for shmat is available
10730         xxx=`./findhdr sys/shm.h`
10731         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
10732         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
10733                 val="$define"
10734         else
10735                 val="$undef"
10736         fi
10737         $rm -f shmat.[co]
10738         ;;
10739 *)
10740         val="$undef"
10741         ;;
10742 esac
10743 set d_shmatprototype
10744 eval $setvar
10745
10746 : see if shmdt exists
10747 set shmdt d_shmdt
10748 eval $inlibc
10749
10750 : see how much of the 'shm*(2)' library is present.
10751 h_shm=true
10752 echo " "
10753 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
10754 *"$undef"*) h_shm=false;;
10755 esac
10756 case "$osname" in
10757 freebsd)
10758     case "`ipcs 2>&1`" in
10759     "SVID shared memory"*"not configured"*)
10760         echo "Your $osname does not have the shm*(2) configured." >&4
10761         h_shm=false
10762         val="$undef"
10763         set shmctl d_shmctl
10764         evat $setvar
10765         set shmget d_shmget
10766         evat $setvar
10767         set shmat d_shmat
10768         evat $setvar
10769         set shmdt d_shmdt
10770         evat $setvar
10771         ;;
10772     esac
10773     ;;
10774 esac
10775 : we could also check for sys/ipc.h ...
10776 if $h_shm && $test `./findhdr sys/shm.h`; then
10777         echo "You have the full shm*(2) library." >&4
10778         val="$define"
10779 else
10780         echo "You don't have the full shm*(2) library." >&4
10781         val="$undef"
10782 fi
10783 set d_shm
10784 eval $setvar
10785
10786 echo " "
10787 : see if we have sigaction
10788 if set sigaction val -f d_sigaction; eval $csym; $val; then
10789         echo 'sigaction() found.' >&4
10790         $cat > try.c <<'EOP'
10791 #include <stdio.h>
10792 #include <sys/types.h>
10793 #include <signal.h>
10794 int main()
10795 {
10796     struct sigaction act, oact;
10797     act.sa_flags = 0;
10798     oact.sa_handler = 0;
10799     /* so that act and oact are used */
10800     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
10801 }
10802 EOP
10803         set try
10804         if eval $compile_ok; then
10805                 val="$define"
10806         else
10807                 echo "But you don't seem to have a useable struct sigaction." >&4
10808                 val="$undef"
10809         fi
10810 else
10811         echo 'sigaction NOT found.' >&4
10812         val="$undef"
10813 fi
10814 set d_sigaction; eval $setvar
10815 $rm -f try try$_o try.c
10816
10817 : see if sigsetjmp exists
10818 echo " "
10819 case "$d_sigsetjmp" in
10820 '')
10821         $cat >try.c <<'EOP'
10822 #include <setjmp.h>
10823 sigjmp_buf env;
10824 int set = 1;
10825 int main()
10826 {
10827         if (sigsetjmp(env,1))
10828                 exit(set);
10829         set = 0;
10830         siglongjmp(env, 1);
10831         exit(1);
10832 }
10833 EOP
10834         set try
10835         if eval $compile; then
10836                 if ./try >/dev/null 2>&1; then
10837                         echo "POSIX sigsetjmp found." >&4
10838                         val="$define"
10839                 else
10840                         $cat >&4 <<EOM
10841 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
10842 I'll ignore them.
10843 EOM
10844                         val="$undef"
10845                 fi
10846         else
10847                 echo "sigsetjmp not found." >&4
10848                 val="$undef"
10849         fi
10850         ;;
10851 *) val="$d_sigsetjmp"
10852         case "$d_sigsetjmp" in
10853         $define) echo "POSIX sigsetjmp found." >&4;;
10854         $undef) echo "sigsetjmp not found." >&4;;
10855         esac
10856         ;;
10857 esac
10858 set d_sigsetjmp
10859 eval $setvar
10860 $rm -f try.c try
10861
10862 : see if sqrtl exists
10863 set sqrtl d_sqrtl
10864 eval $inlibc
10865
10866 : see if sys/stat.h is available
10867 set sys/stat.h i_sysstat
10868 eval $inhdr
10869
10870
10871 : see if stat knows about block sizes
10872 echo " "
10873 echo "Checking to see if your struct stat has st_blocks field..." >&4
10874 set d_statblks stat st_blocks $i_sysstat sys/stat.h
10875 eval $hasfield
10876
10877
10878 : see if this is a sys/vfs.h system
10879 set sys/vfs.h i_sysvfs
10880 eval $inhdr
10881
10882
10883 : see if this is a sys/statfs.h system
10884 set sys/statfs.h i_sysstatfs
10885 eval $inhdr
10886
10887
10888 echo " "
10889 echo "Checking to see if your system supports struct statfs..." >&4
10890 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
10891 eval $hasstruct
10892 case "$d_statfs_s" in
10893 "$define")      echo "Yes, it does."   ;;
10894 *)              echo "No, it doesn't." ;;
10895 esac
10896
10897
10898
10899 : see if struct statfs knows about f_flags
10900 case "$d_statfs_s" in
10901 define) 
10902         echo " "
10903         echo "Checking to see if your struct statfs has f_flags field..." >&4
10904         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
10905         eval $hasfield
10906         ;;
10907 *)      val="$undef"
10908         set d_statfs_f_flags
10909         eval $setvar
10910         ;;
10911 esac
10912 case "$d_statfs_f_flags" in
10913 "$define")      echo "Yes, it does."   ;;
10914 *)              echo "No, it doesn't." ;;
10915 esac
10916
10917 : see if _ptr and _cnt from stdio act std
10918 echo " "
10919 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
10920         echo "(Looks like you have stdio.h from Linux.)"
10921         case "$stdio_ptr" in
10922         '') stdio_ptr='((fp)->_IO_read_ptr)'
10923                 ptr_lval=$define
10924                 ;;
10925         *)      ptr_lval=$d_stdio_ptr_lval;;
10926         esac
10927         case "$stdio_cnt" in
10928         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
10929                 cnt_lval=$undef
10930                 ;;
10931         *)      cnt_lval=$d_stdio_cnt_lval;;
10932         esac
10933         case "$stdio_base" in
10934         '') stdio_base='((fp)->_IO_read_base)';;
10935         esac
10936         case "$stdio_bufsiz" in
10937         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
10938         esac
10939 else
10940         case "$stdio_ptr" in
10941         '') stdio_ptr='((fp)->_ptr)'
10942                 ptr_lval=$define
10943                 ;;
10944         *)      ptr_lval=$d_stdio_ptr_lval;;
10945         esac
10946         case "$stdio_cnt" in
10947         '') stdio_cnt='((fp)->_cnt)'
10948                 cnt_lval=$define
10949                 ;;
10950         *)      cnt_lval=$d_stdio_cnt_lval;;
10951         esac
10952         case "$stdio_base" in
10953         '') stdio_base='((fp)->_base)';;
10954         esac
10955         case "$stdio_bufsiz" in
10956         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
10957         esac
10958 fi
10959 : test whether _ptr and _cnt really work
10960 echo "Checking how std your stdio is..." >&4
10961 $cat >try.c <<EOP
10962 #include <stdio.h>
10963 #define FILE_ptr(fp)    $stdio_ptr
10964 #define FILE_cnt(fp)    $stdio_cnt
10965 int main() {
10966         FILE *fp = fopen("try.c", "r");
10967         char c = getc(fp);
10968         if (
10969                 18 <= FILE_cnt(fp) &&
10970                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
10971         )
10972                 exit(0);
10973         exit(1);
10974 }
10975 EOP
10976 val="$undef"
10977 set try
10978 if eval $compile; then
10979         if ./try; then
10980                 echo "Your stdio acts pretty std."
10981                 val="$define"
10982         else
10983                 echo "Your stdio isn't very std."
10984         fi
10985 else
10986         echo "Your stdio doesn't appear very std."
10987 fi
10988 $rm -f try.c try
10989 set d_stdstdio
10990 eval $setvar
10991
10992 : Can _ptr be used as an lvalue?
10993 case "$d_stdstdio$ptr_lval" in
10994 $define$define) val=$define ;;
10995 *) val=$undef ;;
10996 esac
10997 set d_stdio_ptr_lval
10998 eval $setvar
10999
11000 : Can _cnt be used as an lvalue?
11001 case "$d_stdstdio$cnt_lval" in
11002 $define$define) val=$define ;;
11003 *) val=$undef ;;
11004 esac
11005 set d_stdio_cnt_lval
11006 eval $setvar
11007
11008 : see if _base is also standard
11009 val="$undef"
11010 case "$d_stdstdio" in
11011 $define)
11012         $cat >try.c <<EOP
11013 #include <stdio.h>
11014 #define FILE_base(fp)   $stdio_base
11015 #define FILE_bufsiz(fp) $stdio_bufsiz
11016 int main() {
11017         FILE *fp = fopen("try.c", "r");
11018         char c = getc(fp);
11019         if (
11020                 19 <= FILE_bufsiz(fp) &&
11021                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11022         )
11023                 exit(0);
11024         exit(1);
11025 }
11026 EOP
11027         set try
11028         if eval $compile; then
11029                 if ./try; then
11030                         echo "And its _base field acts std."
11031                         val="$define"
11032                 else
11033                         echo "But its _base field isn't std."
11034                 fi
11035         else
11036                 echo "However, it seems to be lacking the _base field."
11037         fi
11038         $rm -f try.c try
11039         ;;
11040 esac
11041 set d_stdiobase
11042 eval $setvar
11043
11044 $cat >&4 <<EOM
11045 Checking how to access stdio streams by file descriptor number...
11046 EOM
11047 case "$stdio_stream_array" in
11048 '')     $cat >try.c <<EOCP
11049 #include <stdio.h>
11050 int main() {
11051   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11052     printf("yes\n");
11053 }
11054 EOCP
11055         for s in _iob __iob __sF
11056         do
11057                 set try -DSTDIO_STREAM_ARRAY=$s
11058                 if eval $compile; then
11059                         case "`./try$exe_ext`" in
11060                         yes)    stdio_stream_array=$s; break ;;
11061                         esac
11062                 fi
11063         done
11064         $rm -f try.* try$exe_ext
11065 esac
11066 case "$stdio_stream_array" in
11067 '')     $cat >&4 <<EOM
11068 I can't figure out how to access stdio streams by file descriptor number.
11069 EOM
11070         d_stdio_stream_array="$undef"
11071         ;;
11072 *)      $cat >&4 <<EOM
11073 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11074 EOM
11075         d_stdio_stream_array="$define"
11076         ;;
11077 esac
11078
11079 : see if strcoll exists
11080 set strcoll d_strcoll
11081 eval $inlibc
11082
11083 : check for structure copying
11084 echo " "
11085 echo "Checking to see if your C compiler can copy structs..." >&4
11086 $cat >try.c <<'EOCP'
11087 int main()
11088 {
11089         struct blurfl {
11090                 int dyick;
11091         } foo, bar;
11092
11093         foo = bar;
11094 }
11095 EOCP
11096 if $cc -c try.c >/dev/null 2>&1 ; then
11097         val="$define"
11098         echo "Yup, it can."
11099 else
11100         val="$undef"
11101         echo "Nope, it can't."
11102 fi
11103 set d_strctcpy
11104 eval $setvar
11105 $rm -f try.*
11106
11107 : see if strerror and/or sys_errlist[] exist
11108 echo " "
11109 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11110     if set strerror val -f d_strerror; eval $csym; $val; then
11111                 echo 'strerror() found.' >&4
11112                 d_strerror="$define"
11113                 d_strerrm='strerror(e)'
11114                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11115                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11116                         d_syserrlst="$define"
11117                 else
11118                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11119                         d_syserrlst="$undef"
11120                 fi
11121     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11122                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11123                 echo 'strerror() found in string header.' >&4
11124                 d_strerror="$define"
11125                 d_strerrm='strerror(e)'
11126                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11127                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11128                                 d_syserrlst="$define"
11129                 else
11130                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11131                         d_syserrlst="$undef"
11132                 fi
11133     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11134                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11135                 d_strerror="$undef"
11136                 d_syserrlst="$define"
11137                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11138     else
11139                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11140                 d_strerror="$undef"
11141                 d_syserrlst="$undef"
11142                 d_strerrm='"unknown"'
11143     fi
11144 fi
11145
11146 : see if strtod exists
11147 set strtod d_strtod
11148 eval $inlibc
11149
11150 : see if strtol exists
11151 set strtol d_strtol
11152 eval $inlibc
11153
11154 : see if strtold exists
11155 set strtold d_strtold
11156 eval $inlibc
11157
11158 : see if strtoll exists
11159 set strtoll d_strtoll
11160 eval $inlibc
11161
11162 : see if strtoul exists
11163 set strtoul d_strtoul
11164 eval $inlibc
11165
11166 : see if strtoull exists
11167 set strtoull d_strtoull
11168 eval $inlibc
11169
11170 : see if strtouq exists
11171 set strtouq d_strtouq
11172 eval $inlibc
11173
11174 : see if strxfrm exists
11175 set strxfrm d_strxfrm
11176 eval $inlibc
11177
11178 : see if symlink exists
11179 set symlink d_symlink
11180 eval $inlibc
11181
11182 : see if syscall exists
11183 set syscall d_syscall
11184 eval $inlibc
11185
11186 : see if sysconf exists
11187 set sysconf d_sysconf
11188 eval $inlibc
11189
11190 : see if system exists
11191 set system d_system
11192 eval $inlibc
11193
11194 : see if tcgetpgrp exists
11195 set tcgetpgrp d_tcgetpgrp
11196 eval $inlibc
11197
11198 : see if tcsetpgrp exists
11199 set tcsetpgrp d_tcsetpgrp
11200 eval $inlibc
11201
11202 : see if prototype for telldir is available
11203 echo " "
11204 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11205 eval $hasproto
11206
11207 : see if this is a sys/times.h system
11208 set sys/times.h i_systimes
11209 eval $inhdr
11210
11211 : see if times exists
11212 echo " "
11213 if set times val -f d_times; eval $csym; $val; then
11214         echo 'times() found.' >&4
11215         d_times="$define"
11216         inc=''
11217         case "$i_systimes" in
11218         "$define") inc='sys/times.h';;
11219         esac
11220         rp="What is the type returned by times() on this system?"
11221         set clock_t clocktype long stdio.h sys/types.h $inc
11222         eval $typedef_ask
11223 else
11224         echo 'times() NOT found, hope that will do.' >&4
11225         d_times="$undef"
11226         clocktype='int'
11227 fi
11228
11229 : see if truncate exists
11230 set truncate d_truncate
11231 eval $inlibc
11232
11233 : see if tzname[] exists
11234 echo " "
11235 if set tzname val -a d_tzname; eval $csym; $val; then
11236         val="$define"
11237         echo 'tzname[] found.' >&4
11238 else
11239         val="$undef"
11240         echo 'tzname[] NOT found.' >&4
11241 fi
11242 set d_tzname
11243 eval $setvar
11244
11245 : see if umask exists
11246 set umask d_umask
11247 eval $inlibc
11248
11249 : see if ustat exists
11250 set ustat d_ustat
11251 eval $inlibc
11252
11253 : backward compatibility for d_hvfork
11254 if test X$d_hvfork != X; then
11255         d_vfork="$d_hvfork"
11256         d_hvfork=''
11257 fi
11258 : see if there is a vfork
11259 val=''
11260 set vfork val
11261 eval $inlibc
11262
11263 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11264 : perl on Solaris 2.x, and probably elsewhere.
11265 case "$val" in
11266 $define)
11267         echo " "
11268         case "$usevfork" in
11269         false) dflt='n';;
11270         *) dflt='y';;
11271         esac
11272         cat <<'EOM'
11273  
11274 Perl can only use a vfork() that doesn't suffer from strict
11275 restrictions on calling functions or modifying global data in
11276 the child.  For example, glibc-2.1 contains such a vfork()
11277 that is unsuitable.  If your system provides a proper fork()
11278 call, chances are that you do NOT want perl to use vfork().
11279
11280 EOM
11281         rp="Do you still want to use vfork()?"
11282         . ./myread
11283         case "$ans" in
11284         y|Y) ;;
11285         *)
11286                 echo "Ok, we won't use vfork()."
11287                 val="$undef"
11288                 ;;
11289         esac
11290         ;;
11291 esac
11292 set d_vfork
11293 eval $setvar
11294 case "$d_vfork" in
11295 $define) usevfork='true';;
11296 *) usevfork='false';;
11297 esac
11298
11299 : see if this is an sysdir system
11300 set sys/dir.h i_sysdir
11301 eval $inhdr
11302
11303 : see if this is an sysndir system
11304 set sys/ndir.h i_sysndir
11305 eval $inhdr
11306
11307 : see if closedir exists
11308 set closedir d_closedir
11309 eval $inlibc
11310
11311 case "$d_closedir" in
11312 "$define")
11313         echo " "
11314         echo "Checking whether closedir() returns a status..." >&4
11315         cat > closedir.c <<EOM
11316 #$i_dirent I_DIRENT             /**/
11317 #$i_sysdir I_SYS_DIR            /**/
11318 #$i_sysndir I_SYS_NDIR          /**/
11319 #$i_systypes I_SYS_TYPES        /**/
11320
11321 #if defined(I_SYS_TYPES)
11322 #include <sys/types.h>
11323 #endif
11324 #if defined(I_DIRENT)
11325 #include <dirent.h>
11326 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11327 #include <sys/dir.h>
11328 #endif
11329 #else
11330 #ifdef I_SYS_NDIR
11331 #include <sys/ndir.h>
11332 #else
11333 #ifdef I_SYS_DIR
11334 #ifdef hp9000s500
11335 #include <ndir.h>       /* may be wrong in the future */
11336 #else
11337 #include <sys/dir.h>
11338 #endif
11339 #endif
11340 #endif
11341 #endif 
11342 int main() { return closedir(opendir(".")); }
11343 EOM
11344         set closedir
11345         if eval $compile_ok; then
11346                 if ./closedir > /dev/null 2>&1 ; then
11347                         echo "Yes, it does."
11348                         val="$undef"
11349                 else
11350                         echo "No, it doesn't."
11351                         val="$define"
11352                 fi
11353         else
11354                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11355                 val="$define"
11356         fi
11357         ;;
11358 *)
11359         val="$undef";
11360         ;;
11361 esac
11362 set d_void_closedir
11363 eval $setvar
11364 $rm -f closedir*
11365 : check for volatile keyword
11366 echo " "
11367 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11368 $cat >try.c <<'EOCP'
11369 int main()
11370 {
11371         typedef struct _goo_struct goo_struct;
11372         goo_struct * volatile goo = ((goo_struct *)0);
11373         struct _goo_struct {
11374                 long long_int;
11375                 int reg_int;
11376                 char char_var;
11377         };
11378         typedef unsigned short foo_t;
11379         char *volatile foo;
11380         volatile int bar;
11381         volatile foo_t blech;
11382         foo = foo;
11383 }
11384 EOCP
11385 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11386         val="$define"
11387         echo "Yup, it does."
11388 else
11389         val="$undef"
11390         echo "Nope, it doesn't."
11391 fi
11392 set d_volatile
11393 eval $setvar
11394 $rm -f try.*
11395
11396 : see if there is a wait4
11397 set wait4 d_wait4
11398 eval $inlibc
11399
11400 : see if waitpid exists
11401 set waitpid d_waitpid
11402 eval $inlibc
11403
11404 : see if wcstombs exists
11405 set wcstombs d_wcstombs
11406 eval $inlibc
11407
11408 : see if wctomb exists
11409 set wctomb d_wctomb
11410 eval $inlibc
11411
11412 : preserve RCS keywords in files with variable substitution, grrr
11413 Date='$Date'
11414 Id='$Id'
11415 Log='$Log'
11416 RCSfile='$RCSfile'
11417 Revision='$Revision'
11418
11419 case "$crosscompile" in
11420 ''|[nN]*) crosscompile="$undef" ;;
11421 esac
11422
11423 case "$osname" in
11424 next|rhapsody) multiarch="$define" ;;
11425 esac
11426 case "$multiarch" in
11427 ''|[nN]*) multiarch="$undef" ;;
11428 esac
11429
11430 : check for alignment requirements
11431 echo " "
11432 case "$crosscompile$multiarch" in
11433 *$define*)
11434         $cat <<EOM
11435 You seem to be either cross-compiling or doing a multiarchitecture build,
11436 skipping the memory alignment check.
11437
11438 EOM
11439         case "$alignbytes" in
11440         '') alignbytes=8 ;;
11441         esac
11442         ;;
11443 *)
11444         case "$alignbytes" in
11445         '') echo "Checking alignment constraints..." >&4
11446                 $cat >try.c <<'EOCP'
11447 #include <stdio.h>
11448 struct foobar {
11449         char foo;
11450         double bar;
11451 } try_algn;
11452 int main()
11453 {
11454     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11455     return(0);
11456 }
11457 EOCP
11458                 set try
11459                 if eval $compile_ok; then
11460                         dflt=`./try`
11461                 else
11462                         dflt='8'
11463                         echo "(I can't seem to compile the test program...)"
11464                 fi
11465                 ;;
11466         *) dflt="$alignbytes"
11467                 ;;
11468         esac
11469         rp="Doubles must be aligned on a how-many-byte boundary?"
11470         . ./myread
11471         alignbytes="$ans"
11472         $rm -f try.c try
11473         ;;
11474 esac
11475
11476
11477 : check for ordering of bytes in a long
11478 echo " "
11479 case "$crosscompile$multiarch" in
11480 *$define*)
11481         $cat <<EOM
11482 You seem to be either cross-compiling or doing a multiarchitecture build,
11483 skipping the byteorder check.
11484
11485 EOM
11486         byteorder='0xffff'
11487         ;;
11488 *)
11489         case "$byteorder" in
11490         '')
11491                 $cat <<'EOM'
11492 In the following, larger digits indicate more significance.  A big-endian
11493 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11494 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11495 machines may have weird orders like 3412.  A Cray will report 87654321,
11496 an Alpha will report 12345678. If the test program works the default is
11497 probably right.
11498 I'm now running the test program...
11499 EOM
11500                 $cat >try.c <<'EOCP'
11501 #include <stdio.h>
11502 int main()
11503 {
11504         int i;
11505         union {
11506                 unsigned long l;
11507                 char c[sizeof(long)];
11508         } u;
11509
11510         if (sizeof(long) > 4)
11511                 u.l = (0x08070605L << 32) | 0x04030201L;
11512         else
11513                 u.l = 0x04030201L;
11514         for (i = 0; i < sizeof(long); i++)
11515                 printf("%c", u.c[i]+'0');
11516         printf("\n");
11517         exit(0);
11518 }
11519 EOCP
11520                 xxx_prompt=y
11521                 set try
11522                 if eval $compile && ./try > /dev/null; then
11523                         dflt=`./try`
11524                         case "$dflt" in
11525                         [1-4][1-4][1-4][1-4]|12345678|87654321)
11526                                 echo "(The test program ran ok.)"
11527                                 echo "byteorder=$dflt"
11528                                 xxx_prompt=n
11529                         ;;
11530                         ????|????????) echo "(The test program ran ok.)" ;;
11531                         *) echo "(The test program didn't run right for some reason.)" ;;
11532                         esac
11533                 else
11534                         dflt='4321'
11535                         cat <<'EOM'
11536 (I can't seem to compile the test program.  Guessing big-endian...)
11537 EOM
11538                 fi
11539                 case "$xxx_prompt" in
11540                 y)
11541                         rp="What is the order of bytes in a long?"
11542                         . ./myread
11543                         byteorder="$ans"
11544                         ;;
11545                 *)      byteorder=$dflt
11546                         ;;
11547                 esac
11548                 ;;
11549         esac
11550         $rm -f try.c try
11551         ;;
11552 esac
11553
11554
11555 : how do we catenate cpp tokens here?
11556 echo " "
11557 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11558 $cat >cpp_stuff.c <<'EOCP'
11559 #define RCAT(a,b)a/**/b
11560 #define ACAT(a,b)a ## b
11561 RCAT(Rei,ser)
11562 ACAT(Cir,cus)
11563 EOCP
11564 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
11565 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
11566         echo "Oh!  Smells like ANSI's been here." >&4
11567         echo "We can catify or stringify, separately or together!"
11568         cpp_stuff=42
11569 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
11570         echo "Ah, yes!  The good old days!" >&4
11571         echo "However, in the good old days we don't know how to stringify and"
11572         echo "catify at the same time."
11573         cpp_stuff=1
11574 else
11575         $cat >&4 <<EOM
11576 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
11577 to have to edit the values of CAT[2-5] in config.h...
11578 EOM
11579         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
11580 fi
11581 $rm -f cpp_stuff.*
11582
11583 : see if this is a db.h system
11584 set db.h i_db
11585 eval $inhdr
11586
11587 case "$i_db" in
11588 $define)
11589         : Check db version.
11590         echo " "
11591         echo "Checking Berkeley DB version ..." >&4
11592         $cat >try.c <<EOCP
11593 #$d_const HASCONST
11594 #ifndef HASCONST
11595 #define const
11596 #endif
11597 #include <sys/types.h>
11598 #include <stdio.h>
11599 #include <db.h>
11600 int main()
11601 {
11602 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
11603     int Major, Minor, Patch ;
11604     unsigned long Version ;
11605     (void)db_version(&Major, &Minor, &Patch) ;
11606     printf("You have Berkeley DB Version 2 or greater\n");
11607
11608     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
11609                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
11610     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
11611                 Major, Minor, Patch) ;
11612
11613     /* check that db.h & libdb are compatible */
11614     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
11615         printf("db.h and libdb are incompatible\n") ;
11616         exit(3);        
11617     }
11618
11619     printf("db.h and libdb are compatible\n") ;
11620
11621     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
11622                 + DB_VERSION_PATCH ;
11623
11624     /* needs to be >= 2.3.4 */
11625     if (Version < 2003004) {
11626     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
11627         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
11628         exit(2);        
11629     }
11630
11631     exit(0);
11632 #else
11633 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
11634     printf("You have Berkeley DB Version 1\n");
11635     exit(0);    /* DB version < 2: the coast is clear. */
11636 #else
11637     exit(1);    /* <db.h> not Berkeley DB? */
11638 #endif
11639 #endif
11640 }
11641 EOCP
11642         set try
11643         if eval $compile_ok && ./try; then
11644                 echo 'Looks OK.' >&4
11645         else
11646                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
11647                 i_db=$undef
11648                 case " $libs " in
11649                 *"-ldb "*)
11650                         : Remove db from list of libraries to use
11651                         echo "Removing unusable -ldb from library list" >&4
11652                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
11653                         shift
11654                         libs="$*"
11655                         echo "libs = $libs" >&4
11656                         ;;
11657                 esac
11658         fi
11659         $rm -f try.*
11660         ;;
11661 esac
11662
11663 case "$i_db" in
11664 define)
11665         : Check the return type needed for hash 
11666         echo " "
11667         echo "Checking return type needed for hash for Berkeley DB ..." >&4
11668         $cat >try.c <<EOCP
11669 #$d_const HASCONST
11670 #ifndef HASCONST
11671 #define const
11672 #endif
11673 #include <sys/types.h>
11674 #include <db.h>
11675
11676 #ifndef DB_VERSION_MAJOR
11677 u_int32_t hash_cb (ptr, size)
11678 const void *ptr;
11679 size_t size;
11680 {
11681 }
11682 HASHINFO info;
11683 int main()
11684 {
11685         info.hash = hash_cb;
11686 }
11687 #endif
11688 EOCP
11689         if $cc $ccflags -c try.c >try.out 2>&1 ; then
11690                 if $contains warning try.out >>/dev/null 2>&1 ; then
11691                         db_hashtype='int'
11692                 else
11693                         db_hashtype='u_int32_t'
11694                 fi
11695         else
11696                 : XXX Maybe we should just give up here.
11697                 db_hashtype=u_int32_t
11698                 $cat try.out >&4
11699                 echo "Help:  I can't seem to compile the db test program." >&4
11700                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
11701         fi
11702         $rm -f try.*
11703         echo "Your version of Berkeley DB uses $db_hashtype for hash."
11704         ;;
11705 *)      db_hashtype=u_int32_t
11706         ;;
11707 esac
11708 case "$i_db" in
11709 define)
11710         : Check the return type needed for prefix 
11711         echo " "
11712         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
11713         cat >try.c <<EOCP
11714 #$d_const HASCONST
11715 #ifndef HASCONST
11716 #define const
11717 #endif
11718 #include <sys/types.h>
11719 #include <db.h>
11720
11721 #ifndef DB_VERSION_MAJOR
11722 size_t prefix_cb (key1, key2)
11723 const DBT *key1;
11724 const DBT *key2;
11725 {
11726 }
11727 BTREEINFO info;
11728 int main()
11729 {
11730         info.prefix = prefix_cb;
11731 }
11732 #endif
11733 EOCP
11734         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
11735                 if $contains warning try.out >>/dev/null 2>&1 ; then
11736                         db_prefixtype='int'
11737                 else
11738                         db_prefixtype='size_t'
11739                 fi
11740         else
11741                 db_prefixtype='size_t'
11742                 : XXX Maybe we should just give up here.
11743                 $cat try.out >&4
11744                 echo "Help:  I can't seem to compile the db test program." >&4
11745                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
11746         fi
11747         $rm -f try.*
11748         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
11749         ;;
11750 *)      db_prefixtype='size_t'
11751         ;;
11752 esac
11753
11754 : check for void type
11755 echo " "
11756 echo "Checking to see how well your C compiler groks the void type..." >&4
11757 case "$voidflags" in
11758 '')
11759         $cat >try.c <<'EOCP'
11760 #if TRY & 1
11761 void sub() {
11762 #else
11763 sub() {
11764 #endif
11765         extern void moo();      /* function returning void */
11766         void (*goo)();          /* ptr to func returning void */
11767 #if TRY & 8
11768         void *hue;              /* generic ptr */
11769 #endif
11770 #if TRY & 2
11771         void (*foo[10])();
11772 #endif
11773
11774 #if TRY & 4
11775         if(goo == moo) {
11776                 exit(0);
11777         }
11778 #endif
11779         exit(0);
11780 }
11781 int main() { sub(); }
11782 EOCP
11783         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
11784                 voidflags=$defvoidused
11785         echo "Good.  It appears to support void to the level $package wants.">&4
11786                 if $contains warning .out >/dev/null 2>&1; then
11787                         echo "However, you might get some warnings that look like this:"
11788                         $cat .out
11789                 fi
11790         else
11791 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
11792                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
11793                         echo "It supports 1..."
11794                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
11795                                 echo "It also supports 2..."
11796                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
11797                                         voidflags=7
11798                                         echo "And it supports 4 but not 8 definitely."
11799                                 else
11800                                         echo "It doesn't support 4..."
11801                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
11802                                                 voidflags=11
11803                                                 echo "But it supports 8."
11804                                         else
11805                                                 voidflags=3
11806                                                 echo "Neither does it support 8."
11807                                         fi
11808                                 fi
11809                         else
11810                                 echo "It does not support 2..."
11811                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
11812                                         voidflags=13
11813                                         echo "But it supports 4 and 8."
11814                                 else
11815                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
11816                                                 voidflags=5
11817                                                 echo "And it supports 4 but has not heard about 8."
11818                                         else
11819                                                 echo "However it supports 8 but not 4."
11820                                         fi
11821                                 fi
11822                         fi
11823                 else
11824                         echo "There is no support at all for void."
11825                         voidflags=0
11826                 fi
11827         fi
11828 esac
11829 case "$voidflags" in
11830 "$defvoidused") ;;
11831 *)      $cat >&4 <<'EOM'
11832   Support flag bits are:
11833     1: basic void declarations.
11834     2: arrays of pointers to functions returning void.
11835     4: operations between pointers to and addresses of void functions.
11836     8: generic void pointers.
11837 EOM
11838         dflt="$voidflags";
11839         rp="Your void support flags add up to what?"
11840         . ./myread
11841         voidflags="$ans"
11842         ;;
11843 esac
11844 $rm -f try.* .out
11845
11846
11847 : How can we generate normalized random numbers ?
11848 echo " "
11849 echo "Looking for a random number function..." >&4
11850 case "$randfunc" in
11851 '')
11852         if set drand48 val -f; eval $csym; $val; then
11853                 dflt="drand48"
11854                 echo "Good, found drand48()." >&4
11855         elif set random val -f; eval $csym; $val; then
11856                 dflt="random"
11857                 echo "OK, found random()." >&4
11858         else
11859                 dflt="rand"
11860                 echo "Yick, looks like I have to use rand()." >&4
11861         fi
11862         echo " "
11863         ;;
11864 *)
11865         dflt="$randfunc"
11866         ;;
11867 esac
11868 cont=true
11869
11870 case "$ccflags" in
11871 *-Dmy_rand=*|*-Dmy_srand=*)
11872         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
11873         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
11874         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
11875         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
11876         ;;
11877 esac
11878
11879 while $test "$cont"; do
11880         rp="Use which function to generate random numbers?"
11881         . ./myread
11882         if $test "$ans" = "$dflt"; then
11883                 : null
11884         else
11885                 randbits=''
11886         fi
11887         randfunc="$ans"
11888         if set $ans val -f; eval $csym; $val; then
11889                 cont=''
11890         else
11891                 dflt=y
11892                 rp="I cannot find function $ans. Use that name anyway?"
11893                 . ./myread
11894                 dflt=rand
11895                 case "$ans" in
11896                         [yY]*) cont='';;
11897                 esac
11898         fi
11899         case "$cont" in
11900         '')
11901                 case "$randfunc" in
11902                 drand48)
11903                         drand01="drand48()"
11904                         seedfunc="srand48"
11905                         randbits=48
11906                         randseedtype=long
11907                         ;;
11908                 rand|random)
11909                         case "$randbits" in
11910                         '')
11911 echo "Checking to see how many bits your $randfunc() function produces..." >&4
11912                                 $cat >try.c <<EOCP
11913 #$i_unistd I_UNISTD
11914 #$i_stdlib I_STDLIB
11915 #include <stdio.h>
11916 #ifdef I_UNISTD
11917 #  include <unistd.h>
11918 #endif
11919 #ifdef I_STDLIB
11920 #  include <stdlib.h>
11921 #endif
11922 int main()
11923 {
11924         register int i;
11925         register unsigned long tmp;
11926         register unsigned long max = 0L;
11927
11928         for (i = 1000; i; i--) {
11929                 tmp = (unsigned long) $randfunc();
11930                 if (tmp > max) max = tmp;
11931         }
11932         for (i = 0; max; i++)
11933                 max /= 2;
11934         printf("%d\n",i);
11935 }
11936 EOCP
11937                                 set try
11938                                 if eval $compile_ok; then
11939                                         dflt=`try`
11940                                 else
11941                                         dflt='?'
11942                                         echo "(I can't seem to compile the test program...)"
11943                                 fi
11944                                 ;;
11945                         *)
11946                                 dflt="$randbits"
11947                                 ;;
11948                         esac
11949                         rp="How many bits does your $randfunc() function produce?"
11950                         . ./myread
11951                         randbits="$ans"
11952                         $rm -f try.c try
11953                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
11954                         seedfunc="s$randfunc"
11955                         randseedtype=unsigned
11956                         ;;
11957                 *)
11958                         dflt="31"
11959                         rp="How many bits does your $randfunc() function produce?"
11960                         . ./myread
11961                         randbits="$ans"
11962                         seedfunc="s$randfunc"
11963                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
11964                         if set $seedfunc val -f; eval $csym; $val; then
11965                                 echo "(Using $seedfunc() to seed random generator)"
11966                         else
11967                                 echo "(Warning: no $seedfunc() to seed random generator)"
11968                                 seedfunc=rand
11969                         fi
11970                         randseedtype=unsigned
11971                         ;;
11972                 esac
11973                 ;;
11974         esac
11975 done
11976
11977 echo " "
11978 echo "Determining whether or not we are on an EBCDIC system..." >&4
11979 $cat >tebcdic.c <<'EOM'
11980 int main()
11981 {
11982   if ('M'==0xd4) return 0;
11983   return 1;
11984 }
11985 EOM
11986
11987 val=$undef
11988 set tebcdic
11989 if eval $compile_ok; then
11990         if ./tebcdic; then
11991                 echo "You have EBCDIC." >&4
11992                 val="$define"
11993         else
11994                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
11995         fi
11996 else
11997         echo "I'm unable to compile the test program." >&4
11998         echo "I'll assume ASCII or some ISO Latin." >&4
11999 fi
12000 $rm -f tebcdic.c tebcdic
12001 set ebcdic
12002 eval $setvar
12003
12004 echo " "
12005 $cat >&4 <<EOM
12006 Checking how to flush all pending stdio output...
12007 EOM
12008 # I only know how to find the first 32 possibly open files on SunOS.
12009 # See also hints/sunos_4_1.sh and util.c  --AD
12010 case "$osname" in
12011 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12012 esac
12013 $cat >>try.c <<EOCP
12014 #include <stdio.h>
12015 #$i_unistd I_UNISTD
12016 #ifdef I_UNISTD
12017 # include <unistd.h>
12018 #endif
12019 #$d_sysconf HAS_SYSCONF
12020 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12021 #ifdef HAS_STDIO_STREAM_ARRAY
12022 # define STDIO_STREAM_ARRAY $stdio_stream_array
12023 #endif
12024 int main() {
12025   FILE* p = fopen("try.out", "w");
12026 #ifdef TRY_FPUTC
12027   fputc('x', p);
12028 #else
12029 # ifdef TRY_FPRINTF
12030   fprintf(p, "x");
12031 # endif
12032 #endif
12033 #ifdef TRY_FFLUSH_NULL
12034   fflush(NULL);
12035 #endif
12036 #ifdef TRY_FFLUSH_ALL
12037   {
12038     long open_max = -1;
12039 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12040     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12041 # else
12042 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12043     open_max = sysconf(_SC_OPEN_MAX);
12044 #  else
12045 #   ifdef FOPEN_MAX
12046     open_max = FOPEN_MAX;
12047 #   else
12048 #    ifdef OPEN_MAX
12049     open_max = OPEN_MAX;
12050 #    else
12051 #     ifdef _NFILE
12052     open_max = _NFILE;
12053 #     endif
12054 #    endif
12055 #   endif
12056 #  endif
12057 # endif 
12058 # ifdef HAS_STDIO_STREAM_ARRAY
12059     if (open_max > 0) {
12060       long i;
12061       for (i = 0; i < open_max; i++)
12062             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12063                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12064                 STDIO_STREAM_ARRAY[i]._flag)
12065                 fflush(&STDIO_STREAM_ARRAY[i]);
12066     }   
12067   }
12068 # endif
12069 #endif
12070   _exit(42);
12071 }
12072 EOCP
12073 : first we have to find out how _not_ to flush
12074 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12075     output=''
12076     set try -DTRY_FPUTC
12077     if eval $compile; then
12078             $rm -f try.out
12079             ./try$exe_ext 2>/dev/null
12080             if $test ! -s try.out -a "X$?" = X42; then
12081                 output=-DTRY_FPUTC
12082             fi
12083     fi
12084     case "$output" in
12085     '')
12086             set try -DTRY_FPRINTF
12087             $rm -f try.out
12088             if eval $compile; then
12089                     $rm -f try.out
12090                     ./try$exe_ext 2>/dev/null
12091                     if $test ! -s try.out -a "X$?" = X42; then
12092                         output=-DTRY_FPRINTF
12093                     fi
12094             fi
12095         ;;
12096     esac
12097 fi
12098 : check for fflush NULL behaviour
12099 case "$fflushNULL" in
12100 '')     set try -DTRY_FFLUSH_NULL $output
12101         if eval $compile; then
12102                 $rm -f try.out
12103                 ./try$exe_ext 2>/dev/null
12104                 code="$?"
12105                 if $test -s try.out -a "X$code" = X42; then
12106                         fflushNULL="`$cat try.out`"
12107                 else
12108                         if $test "X$code" != X42; then
12109                                 $cat >&4 <<EOM
12110 (If this test failed, don't worry, we'll try another method shortly.)
12111 EOM
12112                         fi
12113                 fi
12114         fi
12115         $rm -f core try.core core.try.*
12116         case "$fflushNULL" in
12117         x)      $cat >&4 <<EOM
12118 Your fflush(NULL) works okay.
12119 EOM
12120                 fflushNULL="$define"
12121                 ;;
12122         '')     $cat >&4 <<EOM
12123 Your fflush(NULL) isn't working (contrary to ANSI C).
12124 EOM
12125                 fflushNULL="$undef"
12126                 ;;
12127         *)      $cat >&4 <<EOM
12128 Cannot figure out whether your fflush(NULL) works or not.
12129 I'm assuming it doesn't (contrary to ANSI C).
12130 EOM
12131                 fflushNULL="$undef"
12132                 ;;
12133         esac
12134         ;;
12135 $define|true|[yY]*)
12136         fflushNULL="$define"
12137         ;;
12138 *)
12139         fflushNULL="$undef"
12140         ;;
12141 esac
12142 : check explicit looping only if NULL did not work
12143 case "$fflushNULL" in
12144 "$undef")
12145         : check for fflush all behaviour
12146         case "$fflushall" in
12147         '')     set try -DTRY_FFLUSH_ALL $output
12148                 if eval $compile; then
12149                         $cat >&4 <<EOM
12150 (Now testing the other method--but note that also this may fail.)
12151 EOM
12152                         $rm -f try.out
12153                         ./try$exe_ext 2>/dev/null
12154                         if $test -s try.out -a "X$?" = X42; then
12155                                 fflushall="`$cat try.out`"
12156                         fi
12157                 fi
12158                 $rm -f core try.core core.try.*
12159                 case "$fflushall" in
12160                 x)      $cat >&4 <<EOM
12161 Whew. Flushing explicitly all the stdio streams works.
12162 EOM
12163                         fflushall="$define"
12164                         ;;
12165                 '')     $cat >&4 <<EOM
12166 Sigh. Flushing explicitly all the stdio streams doesn't work.
12167 EOM
12168                         fflushall="$undef"
12169                         ;;
12170                 *)      $cat >&4 <<EOM
12171 Cannot figure out whether flushing stdio streams explicitly works or not.
12172 I'm assuming it doesn't.
12173 EOM
12174                         fflushall="$undef"
12175                         ;;
12176                 esac
12177                 ;;
12178         "$define"|true|[yY]*)
12179                 fflushall="$define"
12180                 ;;
12181         *)
12182                 fflushall="$undef"
12183                 ;;
12184         esac
12185         ;;
12186 *)      fflushall="$undef"      
12187         ;;
12188 esac
12189 case "$fflushNULL$fflushall" in
12190 undefundef)
12191         $cat <<EOM
12192 I cannot figure out how to flush pending stdio output.
12193 EOM
12194         ;;
12195 esac
12196 $rm -f try.* try$exe_ext
12197
12198 : Store the full pathname to the ar program for use in the C program
12199 : Respect a hint or command line value for full_ar.
12200 case "$full_ar" in
12201 '') full_ar=$ar ;;
12202 esac
12203
12204 : Store the full pathname to the sed program for use in the C program
12205 full_sed=$sed
12206
12207 : see what type gids are declared as in the kernel
12208 echo " "
12209 echo "Looking for the type for group ids returned by getgid()."
12210 set gid_t gidtype xxx stdio.h sys/types.h
12211 eval $typedef
12212 case "$gidtype" in
12213 xxx)
12214         xxx=`./findhdr sys/user.h`
12215         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12216         case $1 in
12217         unsigned) dflt="$1 $2" ;;
12218         *) dflt="$1" ;;
12219         esac
12220         ;;
12221 *) dflt="$gidtype";;
12222 esac
12223 case "$gidtype" in
12224 gid_t) echo "gid_t found." ;;
12225 *)      rp="What is the type for group ids returned by getgid()?"
12226         . ./myread
12227         gidtype="$ans"
12228         ;;
12229 esac
12230
12231 echo " "
12232 case "$gidtype" in
12233 *_t) zzz="$gidtype"     ;;
12234 *)   zzz="gid"          ;;
12235 esac
12236 echo "Checking the size of $zzz..." >&4 
12237 cat > try.c <<EOCP
12238 #include <sys/types.h>
12239 #include <stdio.h>
12240 int main() {
12241     printf("%d\n", (int)sizeof($gidtype));
12242     exit(0);
12243 }
12244 EOCP
12245 set try
12246 if eval $compile_ok; then
12247         yyy=`./try`
12248         case "$yyy" in
12249         '')     gidsize=4
12250                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12251                 ;;
12252         *)      gidsize=$yyy
12253                 echo "Your $zzz size is $gidsize bytes."
12254                 ;;
12255         esac
12256 else
12257         gidsize=4
12258         echo "(I can't compile the test program--guessing $gidsize.)" >&4
12259 fi
12260
12261
12262 echo " "
12263 case "$gidtype" in
12264 *_t) zzz="$gidtype"     ;;
12265 *)   zzz="gid"          ;;
12266 esac
12267 echo "Checking the sign of $zzz..." >&4 
12268 cat > try.c <<EOCP
12269 #include <sys/types.h>
12270 #include <stdio.h>
12271 int main() {
12272         $gidtype foo = -1;
12273         if (foo < 0)
12274                 printf("-1\n");
12275         else
12276                 printf("1\n");
12277 }
12278 EOCP
12279 set try
12280 if eval $compile; then
12281         yyy=`./try`
12282         case "$yyy" in
12283         '')     gidsign=1
12284                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12285                 ;;
12286         *)      gidsign=$yyy
12287                 case "$gidsign" in
12288                  1) echo "Your $zzz is unsigned." ;;
12289                 -1) echo "Your $zzz is signed."   ;;
12290                 esac
12291                 ;;
12292         esac
12293 else
12294         gidsign=1
12295         echo "(I can't compile the test program--guessing unsigned.)" >&4
12296 fi
12297
12298
12299 echo " "
12300
12301 if $test X"$quadtype" != X; then
12302
12303 echo "Checking how to print 64-bit integers..." >&4
12304
12305 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12306         $cat >try.c <<'EOCP'
12307 #include <sys/types.h>
12308 #include <stdio.h>
12309 int main() {
12310   int q = 12345678901;
12311   printf("%ld\n", q);
12312 }
12313 EOCP
12314         set try
12315         if eval $compile; then
12316                 yyy=`./try$exe_ext`
12317                 case "$yyy" in
12318                 12345678901)
12319                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12320                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12321                         echo "We will use %d."
12322                         ;;
12323                 esac
12324         fi
12325 fi
12326
12327 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12328         $cat >try.c <<'EOCP'
12329 #include <sys/types.h>
12330 #include <stdio.h>
12331 int main() {
12332   long q = 12345678901;
12333   printf("%ld\n", q);
12334 }
12335 EOCP
12336         set try
12337         if eval $compile; then
12338                 yyy=`./try$exe_ext`
12339                 case "$yyy" in
12340                 12345678901)
12341                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12342                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12343                         echo "We will use %ld."
12344                         ;;
12345                 esac
12346         fi
12347 fi
12348
12349 if $test X"$sPRId64" = X -a X"$i_inttypes.h" = X"$define" -a X"$quadtype" = Xint64_t; then
12350         $cat >try.c <<'EOCP'
12351 #include <sys/types.h>
12352 #include <inttypes.h>
12353 #include <stdio.h>
12354 int main() {
12355   int64_t q = 12345678901;
12356   printf("%" PRId64 "\n", q);
12357 }
12358 EOCP
12359         set try
12360         if eval $compile; then
12361                 yyy=`./try$exe_ext`
12362                 case "$yyy" in
12363                 12345678901)
12364                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12365                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12366                         echo "We will use the C9X style."
12367                         ;;
12368                 esac
12369         fi
12370 fi
12371
12372 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12373         $cat >try.c <<'EOCP'
12374 #include <sys/types.h>
12375 #include <stdio.h>
12376 int main() {
12377   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12378   printf("%lld\n", q);
12379 }
12380 EOCP
12381         set try
12382         if eval $compile; then
12383                 yyy=`./try$exe_ext`
12384                 case "$yyy" in
12385                 12345678901)
12386                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12387                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12388                         echo "We will use the %lld style."
12389                         ;;
12390                 esac
12391         fi
12392 fi
12393
12394 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12395         $cat >try.c <<EOCP
12396 #include <sys/types.h>
12397 #include <stdio.h>
12398 int main() {
12399   $quadtype q = 12345678901;
12400   printf("%Ld\n", q);
12401 }
12402 EOCP
12403         set try
12404         if eval $compile; then
12405                 yyy=`./try$exe_ext`
12406                 case "$yyy" in
12407                 12345678901)
12408                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12409                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12410                         echo "We will use %Ld."
12411                         ;;
12412                 esac
12413         fi
12414 fi
12415
12416 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12417         $cat >try.c <<EOCP
12418 #include <sys/types.h>
12419 #include <stdio.h>
12420 int main() {
12421   $quadtype q = 12345678901;
12422   printf("%qd\n", q);
12423 }
12424 EOCP
12425         set try
12426         if eval $compile; then
12427                 yyy=`./try$exe_ext`
12428                 case "$yyy" in
12429                 12345678901)
12430                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12431                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12432                         echo "We will use %qd."
12433                         ;;
12434                 esac
12435         fi
12436 fi
12437
12438 if $test X"$sPRId64" = X; then
12439         echo "Cannot figure out how to print 64-bit integers." >&4
12440 fi
12441
12442 $rm -f try try.*
12443
12444 fi
12445
12446 case "$sPRId64" in
12447 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
12448         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
12449         ;;
12450 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
12451         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
12452         ;;
12453 esac
12454
12455
12456 echo " "
12457 $echo "Checking the format strings to be used for Perl's internal types..." >&4
12458
12459 if $test X"$ivsize" = X8; then
12460         ivdformat="$sPRId64"
12461         uvuformat="$sPRIu64"
12462         uvoformat="$sPRIo64"
12463         uvxformat="$sPRIx64"
12464 else
12465         if $test X"$ivsize" = X"$longsize"; then
12466                 ivdformat='"ld"'
12467                 uvuformat='"lu"'
12468                 uvoformat='"lo"'
12469                 uvxformat='"lx"'
12470         else
12471                 if $test X"$ivsize" = X"$intsize"; then
12472                         ivdformat='"d"'
12473                         uvuformat='"u"'
12474                         uvoformat='"o"'
12475                         uvxformat='"x"'
12476                 else
12477                         : far out
12478                         if $test X"$ivsize" = X"$shortsize"; then
12479                                 ivdformat='"hd"'
12480                                 uvuformat='"hu"'
12481                                 uvoformat='"ho"'
12482                                 uvxformat='"hx"'
12483                         fi
12484                 fi
12485         fi
12486 fi
12487
12488 case "$ivdformat" in
12489 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
12490     exit 1
12491     ;;
12492 esac
12493
12494
12495 echo " "
12496 $echo "Checking the format string to be used for gids..." >&4
12497
12498 case "$gidsign" in
12499 -1)     if $test X"$gidsize" = X"$ivsize"; then
12500                 gidformat="$ivdformat"
12501         else
12502                 if $test X"$gidsize" = X"$longsize"; then
12503                         gidformat='"ld"'
12504                 else
12505                         if $test X"$gidsize" = X"$intsize"; then
12506                                 gidformat='"d"'
12507                         else
12508                                 if $test X"$gidsize" = X"$shortsize"; then
12509                                         gidformat='"hd"'
12510                                 fi
12511                         fi
12512                 fi
12513         fi
12514         ;;
12515 *)      if $test X"$gidsize" = X"$uvsize"; then
12516                 gidformat="$uvuformat"
12517         else
12518                 if $test X"$gidsize" = X"$longsize"; then
12519                         gidformat='"lu"'
12520                 else
12521                         if $test X"$gidsize" = X"$intsize"; then
12522                                 gidformat='"u"'
12523                         else
12524                                 if $test X"$gidsize" = X"$shortsize"; then
12525                                         gidformat='"hu"'
12526                                 fi
12527                         fi
12528                 fi
12529         fi
12530         ;;
12531 esac
12532
12533 : see if getgroups exists
12534 set getgroups d_getgrps
12535 eval $inlibc
12536
12537 : see if setgroups exists
12538 set setgroups d_setgrps
12539 eval $inlibc
12540
12541
12542 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
12543 echo " "
12544 case "$d_getgrps$d_setgrps" in
12545 *define*)
12546         case "$groupstype" in
12547         '') dflt="$gidtype" ;;
12548         *)  dflt="$groupstype" ;;
12549         esac
12550         $cat <<EOM
12551 What type of pointer is the second argument to getgroups() and setgroups()?
12552 Usually this is the same as group ids, $gidtype, but not always.
12553
12554 EOM
12555         rp='What type pointer is the second argument to getgroups() and setgroups()?'
12556         . ./myread
12557         groupstype="$ans"
12558         ;;
12559 *)  groupstype="$gidtype";;
12560 esac
12561
12562 echo " "
12563 echo "Checking if your $make program sets \$(MAKE)..." >&4
12564 case "$make_set_make" in
12565 '')
12566         $sed 's/^X //' > testmake.mak << 'EOF'
12567 Xall:
12568 X       @echo 'maketemp="$(MAKE)"'
12569 EOF
12570         case "`$make -f testmake.mak 2>/dev/null`" in
12571         *maketemp=*) make_set_make='#' ;;
12572         *)      make_set_make="MAKE=$make" ;;
12573         esac
12574         $rm -f testmake.mak
12575         ;;
12576 esac
12577 case "$make_set_make" in
12578 '#') echo "Yup, it does.";;
12579 *) echo "Nope, it doesn't.";;
12580 esac
12581
12582 : see what type is used for mode_t
12583 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
12584 set mode_t modetype int stdio.h sys/types.h
12585 eval $typedef_ask
12586
12587 : define a fucntion to check prototypes
12588 $cat > protochk <<EOSH
12589 $startsh
12590 cc="$cc"
12591 optimize="$optimize"
12592 ccflags="$ccflags"
12593 prototype="$prototype"
12594 define="$define"
12595 rm=$rm
12596 EOSH
12597
12598 $cat >> protochk <<'EOSH'
12599
12600 $rm -f try.c
12601 foo="$1"
12602 shift
12603 while test $# -ge 2; do
12604         case "$1" in
12605                 $define) echo "#include <$2>" >> try.c ;;
12606                 literal) echo "$2" >> try.c ;;
12607         esac
12608     shift 2
12609 done
12610 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
12611 cat >> try.c <<'EOCP'
12612 #ifdef CAN_PROTOTYPE
12613 #define _(args) args
12614 #else
12615 #define _(args) ()
12616 #endif
12617 EOCP
12618 echo "$foo" >> try.c
12619 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
12620 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
12621 status=$?
12622 $rm -f try.[co]
12623 exit $status
12624 EOSH
12625 chmod +x protochk
12626 $eunicefix protochk
12627
12628 : see what type is used for size_t
12629 rp="What is the type used for the length parameter for string functions?"
12630 set size_t sizetype 'unsigned int' stdio.h sys/types.h
12631 eval $typedef_ask
12632
12633 : check for type of arguments to gethostbyaddr. 
12634 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
12635         case "$d_gethbyaddr" in
12636         $define)
12637                 $cat <<EOM
12638
12639 Checking to see what type of arguments are accepted by gethostbyaddr().
12640 EOM
12641                 hdrs="$define sys/types.h
12642                         $d_socket sys/socket.h 
12643                         $i_niin netinet/in.h 
12644                         $i_netdb netdb.h
12645                         $i_unistd unistd.h"
12646                 : The first arg can 'char *' or 'void *'
12647                 : The second arg is some of integral type
12648                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
12649                         for yyy in size_t long int; do
12650                                 case "$netdb_host_type" in
12651                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
12652                                         if ./protochk "$try" $hdrs; then
12653                                                 echo "Your system accepts $xxx for the first arg."
12654                                                 echo "...and $yyy for the second arg."
12655                                                 netdb_host_type="$xxx"
12656                                                 netdb_hlen_type="$yyy"
12657                                         fi
12658                                         ;;
12659                                 esac
12660                         done
12661                 done
12662                 : In case none of those worked, prompt the user.
12663                 case "$netdb_host_type" in
12664                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
12665                         dflt='char *'
12666                         . ./myread
12667                         netdb_host_type=$ans
12668                         rp='What is the type for the 2nd argument to gethostbyaddr?'
12669                         dflt="$sizetype"
12670                         . ./myread
12671                         netdb_hlen_type=$ans
12672                         ;;
12673                 esac
12674                 ;;
12675         *)      : no gethostbyaddr, so pick harmless defaults
12676                 netdb_host_type='char *'
12677                 netdb_hlen_type="$sizetype"
12678                 ;;
12679         esac
12680         # Remove the "const" if needed. -- but then we'll have a 
12681         # prototype clash!
12682         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
12683 fi
12684
12685 : check for type of argument to gethostbyname. 
12686 if test "X$netdb_name_type" = X ; then
12687         case "$d_gethbyname" in
12688         $define)
12689                 $cat <<EOM
12690
12691 Checking to see what type of argument is accepted by gethostbyname().
12692 EOM
12693                 hdrs="$define sys/types.h
12694                         $d_socket sys/socket.h 
12695                         $i_niin netinet/in.h 
12696                         $i_netdb netdb.h
12697                         $i_unistd unistd.h"
12698                 for xxx in "const char *" "char *"; do
12699                         case "$netdb_name_type" in
12700                         '')     try="extern struct hostent *gethostbyname($xxx);"
12701                                 if ./protochk "$try" $hdrs; then
12702                                         echo "Your system accepts $xxx."
12703                                         netdb_name_type="$xxx"
12704                                 fi
12705                                 ;;
12706                         esac
12707                 done
12708                 : In case none of those worked, prompt the user.
12709                 case "$netdb_name_type" in
12710                 '')     rp='What is the type for the 1st argument to gethostbyname?'
12711                         dflt='char *'
12712                         . ./myread
12713                         netdb_name_type=$ans
12714                         ;;
12715                 esac
12716                 ;;
12717         *)      : no gethostbyname, so pick harmless default
12718                 netdb_name_type='char *'
12719                 ;;
12720         esac
12721 fi
12722
12723 : check for type of 1st argument to getnetbyaddr. 
12724 if test "X$netdb_net_type" = X ; then
12725         case "$d_getnbyaddr" in
12726         $define)
12727                 $cat <<EOM
12728
12729 Checking to see what type of 1st argument is accepted by getnetbyaddr().
12730 EOM
12731                 hdrs="$define sys/types.h
12732                         $d_socket sys/socket.h 
12733                         $i_niin netinet/in.h 
12734                         $i_netdb netdb.h
12735                         $i_unistd unistd.h"
12736                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
12737                         case "$netdb_net_type" in
12738                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
12739                                 if ./protochk "$try" $hdrs; then
12740                                         echo "Your system accepts $xxx."
12741                                         netdb_net_type="$xxx"
12742                                 fi
12743                                 ;;
12744                         esac
12745                 done
12746                 : In case none of those worked, prompt the user.
12747                 case "$netdb_net_type" in
12748                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
12749                         dflt='long'
12750                         . ./myread
12751                         netdb_net_type=$ans
12752                         ;;
12753                 esac
12754                 ;;
12755         *)      : no getnetbyaddr, so pick harmless default
12756                 netdb_net_type='long'
12757                 ;;
12758         esac
12759 fi
12760 : locate the preferred pager for this system
12761 case "$pager" in
12762 '')
12763         dflt=''
12764         case "$pg" in
12765         /*) dflt=$pg;;
12766         esac
12767         case "$more" in
12768         /*) dflt=$more;;
12769         esac
12770         case "$less" in
12771         /*) dflt=$less;;
12772         esac
12773         case "$dflt" in
12774         '') dflt=/usr/ucb/more;;
12775         esac
12776         ;;
12777 *) dflt="$pager";;
12778 esac
12779 echo " "
12780 fn=f/
12781 rp='What pager is used on your system?'
12782 . ./getfile
12783 pager="$ans"
12784
12785 : see what type pids are declared as in the kernel
12786 rp="What is the type of process ids on this system?"
12787 set pid_t pidtype int stdio.h sys/types.h
12788 eval $typedef_ask
12789
12790 : check for length of pointer
12791 echo " "
12792 case "$ptrsize" in
12793 '')
12794         $echo $n "Checking to see how big your pointers are...$c" >&4
12795         if test "$voidflags" -gt 7; then
12796                 echo '#define VOID_PTR char *' > try.c
12797         else
12798                 echo '#define VOID_PTR void *' > try.c
12799         fi
12800         $cat >>try.c <<'EOCP'
12801 #include <stdio.h>
12802 int main()
12803 {
12804     printf("%d\n", (int)sizeof(VOID_PTR));
12805     exit(0);
12806 }
12807 EOCP
12808         set try
12809         if eval $compile_ok; then
12810                 ptrsize=`./try`
12811                 $echo " $ptrsize bytes." >&4
12812         else
12813                 dflt='4'
12814                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
12815                 rp="What is the size of a pointer (in bytes)?"
12816                 . ./myread
12817                 ptrsize="$ans"
12818         fi
12819         ;;
12820 esac
12821 $rm -f try.c try
12822
12823 : see if ar generates random libraries by itself
12824 echo " "
12825 echo "Checking how to generate random libraries on your machine..." >&4
12826 echo 'int bar1() { return bar2(); }' > bar1.c
12827 echo 'int bar2() { return 2; }' > bar2.c
12828 $cat > foo.c <<'EOP'
12829 int main() { printf("%d\n", bar1()); exit(0); }
12830 EOP
12831 $cc $ccflags -c bar1.c >/dev/null 2>&1
12832 $cc $ccflags -c bar2.c >/dev/null 2>&1
12833 $cc $ccflags -c foo.c >/dev/null 2>&1
12834 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
12835 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12836         ./foobar >/dev/null 2>&1; then
12837         echo "$ar appears to generate random libraries itself."
12838         orderlib=false
12839         ranlib=":"
12840 elif $ar ts bar$_a >/dev/null 2>&1 &&
12841         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12842         ./foobar >/dev/null 2>&1; then
12843                 echo "a table of contents needs to be added with '$ar ts'."
12844                 orderlib=false
12845                 ranlib="$ar ts"
12846 else
12847         case "$ranlib" in
12848         :) ranlib='';;
12849         '')
12850                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
12851                 $test -f $ranlib || ranlib=''
12852                 ;;
12853         esac
12854         if $test -n "$ranlib"; then
12855                 echo "your system has '$ranlib'; we'll use that."
12856                 orderlib=false
12857         else
12858                 echo "your system doesn't seem to support random libraries"
12859                 echo "so we'll use lorder and tsort to order the libraries."
12860                 orderlib=true
12861                 ranlib=":"
12862         fi
12863 fi
12864 $rm -f foo* bar* 
12865
12866 : check for type of arguments to select. 
12867 case "$selecttype" in
12868 '') case "$d_select" in
12869         $define)
12870                 echo " "
12871                 $cat <<EOM
12872 Checking to see what type of arguments are accepted by select().
12873 EOM
12874                 hdrs="$define sys/types.h
12875                         $i_systime sys/time.h 
12876                         $i_sysselct sys/select.h
12877                         $d_socket sys/socket.h"
12878                 : The first arg can be int, unsigned, or size_t
12879                 : The last arg may or may not be 'const'
12880                 val=''
12881                 : void pointer has been seen but using that
12882                 : breaks the selectminbits test
12883                 for xxx in 'fd_set *' 'int *'; do
12884                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
12885                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
12886                                         case "$val" in
12887                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
12888                                                 if ./protochk "$try" $hdrs; then
12889                                                         echo "Your system accepts $xxx."
12890                                                         val="$xxx"
12891                                                 fi
12892                                                 ;;
12893                                         esac
12894                                 done
12895                         done
12896                 done
12897                 case "$val" in
12898                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
12899                         case "$d_fd_set" in
12900                                 $define) dflt="fd_set *" ;;
12901                                 *)              dflt="int *" ;;
12902                         esac
12903                         . ./myread
12904                         val=$ans
12905                         ;;
12906                 esac
12907                 selecttype="$val"
12908                 ;;
12909         *)      : no select, so pick a harmless default
12910                 selecttype='int *'
12911                 ;;
12912         esac
12913         ;;
12914 esac
12915
12916 : check for the select 'width'
12917 case "$selectminbits" in
12918 '') case "$d_select" in
12919         $define)
12920                 $cat <<EOM
12921
12922 Checking to see on how many bits at a time your select() operates...
12923 EOM
12924                 $cat >try.c <<EOCP
12925 #include <sys/types.h>
12926 #$i_time I_TIME
12927 #$i_systime I_SYS_TIME
12928 #$i_systimek I_SYS_TIME_KERNEL
12929 #ifdef I_TIME
12930 #   include <time.h>
12931 #endif
12932 #ifdef I_SYS_TIME
12933 #   ifdef I_SYS_TIME_KERNEL
12934 #       define KERNEL
12935 #   endif
12936 #   include <sys/time.h>
12937 #   ifdef I_SYS_TIME_KERNEL
12938 #       undef KERNEL
12939 #   endif
12940 #endif
12941 #$i_sysselct I_SYS_SELECT
12942 #ifdef I_SYS_SELECT
12943 #include <sys/select.h>
12944 #endif
12945 #$d_socket HAS_SOCKET
12946 #ifdef HAS_SOCKET
12947 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12948 #endif
12949 #include <stdio.h>
12950 $selecttype b;
12951 #define S sizeof(*(b))
12952 #define MINBITS 64
12953 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
12954 #define NBITS  (NBYTES * 8)
12955 int main() {
12956     char s[NBYTES];
12957     struct timeval t;
12958     int i;
12959     FILE* fp;
12960     int fd;
12961
12962     fclose(stdin);
12963     fp = fopen("try.c", "r");
12964     if (fp == 0)
12965       exit(1);
12966     fd = fileno(fp);
12967     if (fd < 0)
12968       exit(2);
12969     b = ($selecttype)s;
12970     for (i = 0; i < NBITS; i++)
12971         FD_SET(i, b);
12972     t.tv_sec  = 0;
12973     t.tv_usec = 0;
12974     select(fd + 1, b, 0, 0, &t);
12975     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
12976     printf("%d\n", i + 1);
12977     return 0;
12978 }
12979 EOCP
12980                 set try
12981                 if eval $compile_ok; then
12982                         selectminbits=`./try`
12983                         case "$selectminbits" in
12984                         '')     cat >&4 <<EOM
12985 Cannot figure out on how many bits at a time your select() operates.
12986 I'll play safe and guess it is 32 bits.
12987 EOM
12988                                 selectminbits=32
12989                                 bits="32 bits"
12990                                 ;;
12991                         1)      bits="1 bit" ;;
12992                         *)      bits="$selectminbits bits" ;;
12993                         esac
12994                         echo "Your select() operates on $bits at a time." >&4
12995                 else
12996                         rp='What is the minimum number of bits your select() operates on?'
12997                         case "$byteorder" in
12998                         1234|12345678)  dflt=32 ;;
12999                         *)              dflt=1  ;;
13000                         esac
13001                         . ./myread
13002                         val=$ans
13003                         selectminbits="$val"
13004                 fi
13005                 $rm -f try.* try
13006                 ;;
13007         *)      : no select, so pick a harmless default
13008                 selectminbits='32'
13009                 ;;
13010         esac
13011         ;;
13012 esac
13013
13014 : Trace out the files included by signal.h, then look for SIGxxx names.
13015 : Remove SIGARRAYSIZE used by HPUX.
13016 : Remove SIGSTKSIZE used by Linux.
13017 : Remove SIGSTKSZ used by Posix.
13018 : Remove SIGTYP void lines used by OS2.
13019 : Some cpps, like os390, dont give the file name anywhere
13020 if [ "X$fieldn" = X ]; then
13021         : Just make some guesses.  We check them later.
13022         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13023 else
13024         xxx=`echo '#include <signal.h>' |
13025         $cppstdin $cppminus $cppflags 2>/dev/null |
13026         $grep '^[       ]*#.*include' | 
13027         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13028 fi
13029 : Check this list of files to be sure we have parsed the cpp output ok.
13030 : This will also avoid potentially non-existent files, such 
13031 : as ../foo/bar.h
13032 xxxfiles=''
13033 for xx in $xxx /dev/null ; do
13034         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13035 done
13036 : If we have found no files, at least try signal.h
13037 case "$xxxfiles" in
13038 '')     xxxfiles=`./findhdr signal.h` ;;
13039 esac
13040 xxx=`awk '
13041 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13042         print substr($2, 4, 20)
13043 }
13044 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13045         print substr($3, 4, 20)
13046 }' $xxxfiles`
13047 : Append some common names just in case the awk scan failed.
13048 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13049 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13050 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13051 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13052 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13053
13054 : generate a few handy files for later
13055 $cat > signal.c <<'EOCP'
13056 #include <sys/types.h>
13057 #include <signal.h>
13058 #include <stdio.h>
13059 int main() {
13060
13061 /* Strange style to avoid deeply-nested #if/#else/#endif */
13062 #ifndef NSIG
13063 #  ifdef _NSIG
13064 #    define NSIG (_NSIG)
13065 #  endif
13066 #endif
13067
13068 #ifndef NSIG
13069 #  ifdef SIGMAX
13070 #    define NSIG (SIGMAX+1)
13071 #  endif
13072 #endif
13073
13074 #ifndef NSIG
13075 #  ifdef SIG_MAX
13076 #    define NSIG (SIG_MAX+1)
13077 #  endif
13078 #endif
13079
13080 #ifndef NSIG
13081 #  ifdef MAXSIG
13082 #    define NSIG (MAXSIG+1)
13083 #  endif
13084 #endif
13085
13086 #ifndef NSIG
13087 #  ifdef MAX_SIG
13088 #    define NSIG (MAX_SIG+1)
13089 #  endif
13090 #endif
13091
13092 #ifndef NSIG
13093 #  ifdef SIGARRAYSIZE
13094 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13095 #  endif
13096 #endif
13097
13098 #ifndef NSIG
13099 #  ifdef _sys_nsig
13100 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13101 #  endif
13102 #endif
13103
13104 /* Default to some arbitrary number that's big enough to get most
13105    of the common signals.
13106 */
13107 #ifndef NSIG
13108 #    define NSIG 50
13109 #endif
13110
13111 printf("NSIG %d\n", NSIG);
13112
13113 #ifndef JUST_NSIG
13114
13115 EOCP
13116
13117 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13118 {
13119         printf "#ifdef SIG"; printf $1; printf "\n"
13120         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13121         printf $1; printf ");\n"
13122         printf "#endif\n"
13123 }
13124 END {
13125         printf "#endif /* JUST_NSIG */\n";
13126         printf "exit(0);\n}\n";
13127 }
13128 ' >>signal.c
13129 $cat >signal.awk <<'EOP'
13130 BEGIN { ndups = 0 }
13131 $1 ~ /^NSIG$/ { nsig = $2 }
13132 ($1 !~ /^NSIG$/) && (NF == 2) {
13133     if ($2 > maxsig) { maxsig = $2 }
13134     if (sig_name[$2]) {
13135         dup_name[ndups] = $1
13136         dup_num[ndups] = $2
13137         ndups++ 
13138     }
13139     else {
13140         sig_name[$2] = $1
13141         sig_num[$2] = $2
13142     }
13143 }
13144 END { 
13145     if (nsig == 0) {
13146         nsig = maxsig + 1
13147     }
13148     printf("NSIG %d\n", nsig);
13149     for (n = 1; n < nsig; n++) {
13150         if (sig_name[n]) {
13151             printf("%s %d\n", sig_name[n], sig_num[n])
13152         }
13153         else {
13154             printf("NUM%d %d\n", n, n) 
13155         }
13156     }
13157     for (n = 0; n < ndups; n++) {
13158         printf("%s %d\n", dup_name[n], dup_num[n])
13159     }
13160 }
13161 EOP
13162 $cat >signal_cmd <<EOS
13163 $startsh
13164 if $test -s signal.lst; then
13165     echo "Using your existing signal.lst file"
13166         exit 0
13167 fi
13168 xxx="$xxx"
13169 EOS
13170 $cat >>signal_cmd <<'EOS'
13171
13172 set signal
13173 if eval $compile_ok; then
13174         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13175 else
13176         echo "(I can't seem be able to compile the whole test program)" >&4
13177         echo "(I'll try it in little pieces.)" >&4
13178         set signal -DJUST_NSIG
13179         if eval $compile_ok; then
13180                 ./signal$_exe > signal.nsg
13181                 $cat signal.nsg
13182         else
13183                 echo "I can't seem to figure out how many signals you have." >&4
13184                 echo "Guessing 50." >&4
13185                 echo 'NSIG 50' > signal.nsg
13186         fi
13187         : Now look at all the signal names, one at a time.
13188         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13189                 $cat > signal.c <<EOCP
13190 #include <sys/types.h>
13191 #include <signal.h>
13192 #include <stdio.h>
13193 int main() {
13194 printf("$xx %d\n", SIG${xx});
13195 return 0;
13196 }
13197 EOCP
13198                 set signal
13199                 if eval $compile; then
13200                         echo "SIG${xx} found."
13201                         ./signal$_exe  >> signal.ls1
13202                 else
13203                         echo "SIG${xx} NOT found."
13204                 fi
13205         done
13206         if $test -s signal.ls1; then
13207                 $cat signal.nsg signal.ls1 |
13208                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13209         fi
13210
13211 fi
13212 if $test -s signal.lst; then
13213         :
13214 else
13215         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13216         echo 'kill -l' >signal
13217         set X `csh -f <signal`
13218         $rm -f signal
13219         shift
13220         case $# in
13221         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13222         esac
13223         echo $@ | $tr ' ' $trnl | \
13224             $awk '{ printf "%s %d\n", $1, ++s; }
13225                   END { printf "NSIG %d\n", ++s }' >signal.lst
13226 fi
13227 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13228 EOS
13229 chmod a+x signal_cmd
13230 $eunicefix signal_cmd
13231
13232 : generate list of signal names
13233 echo " "
13234 case "$sig_name_init" in
13235 '') doinit=yes ;;
13236 *)  case "$sig_num_init" in
13237     ''|*,*) doinit=yes ;;
13238     esac ;;
13239 esac
13240 case "$doinit" in
13241 yes)
13242         echo "Generating a list of signal names and numbers..." >&4
13243         . ./signal_cmd
13244         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13245         sig_name=`$awk 'BEGIN { printf "ZERO " }
13246                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13247         sig_num=`$awk  'BEGIN { printf "0 " }
13248                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13249         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
13250                              !/^NSIG/   { printf "\"%s\", ", $1 }
13251                              END        { printf "0\n" }' signal.lst`
13252         sig_num_init=`$awk  'BEGIN      { printf "0, " }
13253                              !/^NSIG/   { printf "%d, ", $2}
13254                              END        { printf "0\n"}' signal.lst`
13255         ;;
13256 esac
13257 echo "The following $sig_count signals are available:"
13258 echo " "
13259 echo $sig_name | $awk \
13260 'BEGIN { linelen = 0 }
13261 {
13262         for (i = 1; i <= NF; i++) {
13263                 name = "SIG" $i " "
13264                 linelen = linelen + length(name)
13265                 if (linelen > 70) {
13266                         printf "\n"
13267                         linelen = length(name)
13268                 }
13269                 printf "%s", name
13270         }
13271         printf "\n"
13272 }'
13273 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
13274
13275 : see what type is used for signed size_t
13276 set ssize_t ssizetype int stdio.h sys/types.h
13277 eval $typedef
13278 dflt="$ssizetype"
13279 $cat > ssize.c <<EOM
13280 #include <stdio.h>
13281 #include <sys/types.h>
13282 #define Size_t $sizetype
13283 #define SSize_t $dflt
13284 int main()
13285 {
13286         if (sizeof(Size_t) == sizeof(SSize_t))
13287                 printf("$dflt\n");
13288         else if (sizeof(Size_t) == sizeof(int))
13289                 printf("int\n");
13290         else 
13291                 printf("long\n");
13292         exit(0);
13293 }
13294 EOM
13295 echo " "
13296 set ssize
13297 if eval $compile_ok && ./ssize > /dev/null; then
13298         ssizetype=`./ssize`
13299         echo "I'll be using $ssizetype for functions returning a byte count." >&4
13300 else
13301         $cat >&4 <<EOM
13302 Help! I can't compile and run the ssize_t test program: please enlighten me!
13303 (This is probably a misconfiguration in your system or libraries, and
13304 you really ought to fix it.  Still, I'll try anyway.)
13305
13306 I need a type that is the same size as $sizetype, but is guaranteed to
13307 be signed.  Common values are ssize_t, int and long.
13308
13309 EOM
13310         rp="What signed type is the same size as $sizetype?"
13311         . ./myread
13312         ssizetype="$ans"
13313 fi
13314 $rm -f ssize ssize.*
13315
13316 : see what type of char stdio uses.
13317 echo " "
13318 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13319         echo "Your stdio uses unsigned chars." >&4
13320         stdchar="unsigned char"
13321 else
13322         echo "Your stdio uses signed chars." >&4
13323         stdchar="char"
13324 fi
13325
13326 : see if time exists
13327 echo " "
13328 if test "X$d_time" = X -o X"$timetype" = X; then
13329     if set time val -f d_time; eval $csym; $val; then
13330                 echo 'time() found.' >&4
13331                 val="$define"
13332                 rp="What is the type returned by time() on this system?"
13333                 set time_t timetype long stdio.h sys/types.h
13334                 eval $typedef_ask
13335     else
13336                 echo 'time() not found, hope that will do.' >&4
13337                 val="$undef"
13338                 timetype='int';
13339     fi
13340     set d_time
13341     eval $setvar
13342 fi
13343
13344 : see what type uids are declared as in the kernel
13345 echo " "
13346 echo "Looking for the type for user ids returned by getuid()."
13347 set uid_t uidtype xxx stdio.h sys/types.h
13348 eval $typedef
13349 case "$uidtype" in
13350 xxx)
13351         xxx=`./findhdr sys/user.h`
13352         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13353         case $1 in
13354         unsigned) dflt="$1 $2" ;;
13355         *) dflt="$1" ;;
13356         esac
13357         ;;
13358 *) dflt="$uidtype";;
13359 esac
13360 case "$uidtype" in
13361 uid_t)  echo "uid_t found." ;;
13362 *)      rp="What is the type for user ids returned by getuid()?"
13363         . ./myread
13364         uidtype="$ans"
13365         ;;
13366 esac
13367
13368 echo " "
13369 case "$uidtype" in
13370 *_t) zzz="$uidtype"     ;;
13371 *)   zzz="uid"          ;;
13372 esac
13373 echo "Checking the size of $zzz..." >&4 
13374 cat > try.c <<EOCP
13375 #include <sys/types.h>
13376 #include <stdio.h>
13377 int main() {
13378     printf("%d\n", (int)sizeof($uidtype));
13379     exit(0);
13380 }
13381 EOCP
13382 set try
13383 if eval $compile_ok; then
13384         yyy=`./try`
13385         case "$yyy" in
13386         '')     uidsize=4
13387                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
13388                 ;;
13389         *)      uidsize=$yyy
13390                 echo "Your $zzz size is $uidsize bytes."
13391                 ;;
13392         esac
13393 else
13394         uidsize=4
13395         echo "(I can't compile the test program--guessing $uidsize.)" >&4
13396 fi
13397
13398 echo " "
13399 case "$uidtype" in
13400 *_t) zzz="$uidtype"     ;;
13401 *)   zzz="uid"          ;;
13402 esac
13403 echo "Checking the sign of $zzz..." >&4
13404 cat > try.c <<EOCP
13405 #include <sys/types.h>
13406 #include <stdio.h>
13407 int main() {
13408         $uidtype foo = -1;
13409         if (foo < 0)
13410                 printf("-1\n");
13411         else
13412                 printf("1\n");
13413 }
13414 EOCP
13415 set try
13416 if eval $compile; then
13417         yyy=`./try`
13418         case "$yyy" in
13419         '')     uidsign=1
13420                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13421                 ;;
13422         *)      uidsign=$yyy
13423                 case "$uidsign" in
13424                  1) echo "Your $zzz is unsigned." ;;
13425                 -1) echo "Your $zzz is signed."   ;;
13426                 esac
13427                 ;;
13428         esac
13429 else
13430         uidsign=1
13431         echo "(I can't compile the test program--guessing unsigned.)" >&4
13432 fi
13433
13434
13435
13436 echo " "
13437 $echo "Checking the format string to be used for uids..." >&4
13438
13439 case "$uidsign" in
13440 -1)     if $test X"$uidsize" = X"$ivsize"; then
13441                 uidformat="$ivdformat"
13442         else
13443                 if $test X"$uidsize" = X"$longsize"; then
13444                         uidformat='"ld"'
13445                 else
13446                         if $test X"$uidsize" = X"$intsize"; then
13447                                 uidformat='"d"'
13448                         else
13449                                 if $test X"$uidsize" = X"$shortsize"; then
13450                                         uidformat='"hd"'
13451                                 fi
13452                         fi
13453                 fi
13454         fi
13455         ;;
13456 *)      if $test X"$uidsize" = X"$uvsize"; then
13457                 uidformat="$uvuformat"
13458         else
13459                 if $test X"$uidsize" = X"$longsize"; then
13460                         uidformat='"lu"'
13461                 else
13462                         if $test X"$uidsize" = X"$intsize"; then
13463                                 uidformat='"u"'
13464                         else
13465                                 if $test X"$uidsize" = X"$shortsize"; then
13466                                         uidformat='"hu"'
13467                                 fi
13468                         fi
13469                 fi
13470         fi
13471         ;;
13472 esac
13473
13474 : see if dbm.h is available
13475 : see if dbmclose exists
13476 set dbmclose d_dbmclose
13477 eval $inlibc
13478
13479 case "$d_dbmclose" in
13480 $define)
13481         set dbm.h i_dbm
13482         eval $inhdr
13483         case "$i_dbm" in
13484         $define)
13485                 val="$undef"
13486                 set i_rpcsvcdbm
13487                 eval $setvar
13488                 ;;
13489         *)      set rpcsvc/dbm.h i_rpcsvcdbm
13490                 eval $inhdr
13491                 ;;
13492         esac
13493         ;;
13494 *)      echo "We won't be including <dbm.h>"
13495         val="$undef"
13496         set i_dbm
13497         eval $setvar
13498         val="$undef"
13499         set i_rpcsvcdbm
13500         eval $setvar
13501         ;;
13502 esac
13503
13504 : see if this is a sys/file.h system
13505 val=''
13506 set sys/file.h val
13507 eval $inhdr
13508
13509 : do we need to include sys/file.h ?
13510 case "$val" in
13511 "$define")
13512         echo " "
13513         if $h_sysfile; then
13514                 val="$define"
13515                 echo "We'll be including <sys/file.h>." >&4
13516         else
13517                 val="$undef"
13518                 echo "We won't be including <sys/file.h>." >&4
13519         fi
13520         ;;
13521 *)
13522         h_sysfile=false
13523         ;;
13524 esac
13525 set i_sysfile
13526 eval $setvar
13527
13528 : see if fcntl.h is there
13529 val=''
13530 set fcntl.h val
13531 eval $inhdr
13532
13533 : see if we can include fcntl.h
13534 case "$val" in
13535 "$define")
13536         echo " "
13537         if $h_fcntl; then
13538                 val="$define"
13539                 echo "We'll be including <fcntl.h>." >&4
13540         else
13541                 val="$undef"
13542                 if $h_sysfile; then
13543         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
13544                 else
13545                         echo "We won't be including <fcntl.h>." >&4
13546                 fi
13547         fi
13548         ;;
13549 *)
13550         h_fcntl=false
13551         val="$undef"
13552         ;;
13553 esac
13554 set i_fcntl
13555 eval $setvar
13556
13557 : see if locale.h is available
13558 set locale.h i_locale
13559 eval $inhdr
13560
13561 : see if mach cthreads are available
13562 if test "X$usethreads" = "X$define"; then
13563         set mach/cthreads.h i_machcthr
13564         eval $inhdr
13565 else
13566         i_machcthr="$undef"
13567 fi
13568
13569
13570
13571 : see if this is a math.h system
13572 set math.h i_math
13573 eval $inhdr
13574
13575 : see if this is a mntent.h system
13576 set mntent.h i_mntent
13577 eval $inhdr
13578
13579 : see if ndbm.h is available
13580 set ndbm.h t_ndbm
13581 eval $inhdr
13582 case "$t_ndbm" in
13583 $define)
13584         : see if dbm_open exists
13585         set dbm_open d_dbm_open
13586         eval $inlibc
13587         case "$d_dbm_open" in
13588         $undef)
13589                 t_ndbm="$undef"
13590                 echo "We won't be including <ndbm.h>"
13591                 ;;
13592         esac
13593         ;;
13594 esac
13595 val="$t_ndbm"
13596 set i_ndbm
13597 eval $setvar
13598
13599 : see if net/errno.h is available
13600 val=''
13601 set net/errno.h val
13602 eval $inhdr
13603
13604 : Unfortunately, it causes problems on some systems.  Arrgh.
13605 case "$val" in
13606 $define)
13607         cat > try.c <<'EOM'
13608 #include <stdio.h>
13609 #include <errno.h>
13610 #include <net/errno.h>
13611 int func()
13612 {
13613         return ENOTSOCK;
13614 }
13615 EOM
13616         if $cc $ccflags -c try.c >/dev/null 2>&1; then
13617                 echo "We'll be including <net/errno.h>." >&4
13618         else
13619                 echo "We won't be including <net/errno.h>." >&4
13620                 val="$undef"
13621         fi
13622         $rm -f try.* try
13623         ;;
13624 esac
13625 set i_neterrno
13626 eval $setvar
13627
13628 : see if netinet/tcp.h is available
13629 set netinet/tcp.h i_netinettcp
13630 eval $inhdr
13631
13632 : see if this is a poll.h system
13633 set poll.h i_poll
13634 eval $inhdr
13635
13636 : get C preprocessor symbols handy
13637 echo " "
13638 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
13639 $cat <<'EOSH' > Cppsym.know
13640 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
13641 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
13642 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
13643 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
13644 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
13645 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
13646 bull c cadmus clipper CMU COFF COMPILER_VERSION
13647 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
13648 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
13649 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
13650 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
13651 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
13652 H3050R H3050RX hbullx20 hcx host_mips
13653 hp200 hp300 hp700 HP700 hp800 hp9000
13654 hp9000s200 hp9000s300 hp9000s400 hp9000s500
13655 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
13656 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
13657 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
13658 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
13659 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
13660 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
13661 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
13662 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
13663 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
13664 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
13665 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
13666 MATH_HAS_NO_SIDE_EFFECTS
13667 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
13668 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
13669 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
13670 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
13671 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
13672 NetBSD news1500 news1700 news1800 news1900 news3700
13673 news700 news800 news900 NeXT NLS ns16000 ns32000
13674 ns32016 ns32332 ns32k nsc32000
13675 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
13676 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
13677 pc532 pdp11 PGC PIC plexus PORTAR posix
13678 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
13679 POSIX_C_SOURCE POSIX_SOURCE POWER
13680 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
13681 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
13682 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
13683 sony sony_news sonyrisc sparc sparclite spectrum
13684 stardent stdc STDC_EXT stratos sun sun3 sun386
13685 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
13686 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
13687 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
13688 sysV68 sysV88 Tek4132 Tek4300 titan
13689 tower tower32 tower32_200 tower32_600 tower32_700
13690 tower32_800 tower32_850 tss
13691 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
13692 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
13693 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
13694 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
13695 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
13696 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
13697 z8000
13698 EOSH
13699 # Maybe put other stuff here too.
13700 cat <<EOSH >>Cppsym.know
13701 $osname
13702 EOSH
13703 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
13704 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
13705 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl > Cppsym.know
13706 $awk 'length($1) > 0 {  printf "#ifdef %s\nFound_it(\"%s\")\n#endif\n", $1, $1
13707         printf "#ifdef _%s\nFound_it(\"_%s\")\n#endif\n", $1, $1
13708         printf "#ifdef __%s\nFound_it(\"__%s\")\n#endif\n", $1, $1
13709         printf "#ifdef __%s__\nFound_it(\"__%s__\")\n#endif\n", $1, $1 }' \
13710         Cppsym.know | $cppstdin $cppminus |
13711         $sed -ne '/Found_it/ s/Found_it("\(..*\)")/\1/p' > Cppsym.true
13712 : now check the C compiler for additional symbols
13713 postprocess_cc_v=''
13714 case "$osname" in
13715 aix) postprocess_cc_v="|$tr , ' '" ;;
13716 esac
13717 $cat >ccsym <<EOS
13718 $startsh
13719 $cat >tmp.c <<EOF
13720 extern int foo;
13721 EOF
13722 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
13723 do
13724         case "\$i" in
13725         -D*) echo "\$i" | $sed 's/^-D//';;
13726         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
13727         esac
13728 done
13729 $rm -f try.c
13730 EOS
13731 postprocess_cc_v=''
13732 chmod +x ccsym
13733 $eunicefix ccsym
13734 ./ccsym > ccsym1.raw
13735 if $test -s ccsym1.raw; then
13736        $sort ccsym1.raw | $uniq >ccsym.raw
13737 else
13738        mv ccsym1.raw ccsym.raw
13739 fi
13740
13741 $awk '/\=/ { print $0; next }
13742         { print $0"=1" }' ccsym.raw >ccsym.list
13743 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
13744 $comm -13 ccsym.true ccsym.list >ccsym.own
13745 $comm -12 ccsym.true ccsym.list >ccsym.com
13746 $comm -23 ccsym.true ccsym.list >ccsym.cpp
13747 also=''
13748 if $test -z ccsym.raw; then
13749         echo "Your C compiler doesn't seem to define any symbols!" >&4
13750         echo " "
13751         echo "However, your C preprocessor defines the following symbols:"
13752         $cat Cppsym.true
13753         ccsymbols=''
13754         cppsymbols=`$cat Cppsym.true`
13755         cppsymbols=`echo $cppsymbols`
13756         cppccsymbols="$cppsymbols"
13757 else
13758         if $test -s ccsym.com; then
13759                 echo "Your C compiler and pre-processor define these symbols:"
13760                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
13761                 also='also '
13762                 symbols='ones'
13763                 cppccsymbols=`$cat ccsym.com`
13764                 cppccsymbols=`echo $cppccsymbols`
13765                 $test "$silent" || sleep 1
13766         fi
13767         if $test -s ccsym.cpp; then
13768                 $test "$also" && echo " "
13769                 echo "Your C pre-processor ${also}defines the following symbols:"
13770                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
13771                 also='further '
13772                 cppsymbols=`$cat ccsym.cpp`
13773                 cppsymbols=`echo $cppsymbols`
13774                 $test "$silent" || sleep 1
13775         fi
13776         if $test -s ccsym.own; then
13777                 $test "$also" && echo " "
13778                 echo "Your C compiler ${also}defines the following cpp symbols:"
13779                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
13780                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
13781                 ccsymbols=`$cat ccsym.own`
13782                 ccsymbols=`echo $ccsymbols`
13783                 $test "$silent" || sleep 1
13784         fi
13785 fi
13786 $rm -f ccsym*
13787
13788 : see if this is a termio system
13789 val="$undef"
13790 val2="$undef"
13791 val3="$undef"
13792 if $test `./findhdr termios.h`; then
13793         set tcsetattr i_termios
13794         eval $inlibc
13795         val3="$i_termios"
13796 fi
13797 echo " "
13798 case "$val3" in
13799 "$define") echo "You have POSIX termios.h... good!" >&4;;
13800 *) if ./Cppsym pyr; then
13801                 case "`/bin/universe`" in
13802                 ucb) if $test `./findhdr sgtty.h`; then
13803                                 val2="$define"
13804                                 echo "<sgtty.h> found." >&4
13805                         else
13806                                 echo "System is pyramid with BSD universe."
13807                                 echo "<sgtty.h> not found--you could have problems." >&4
13808                         fi;;
13809                 *) if $test `./findhdr termio.h`; then
13810                                 val="$define"
13811                                 echo "<termio.h> found." >&4
13812                         else
13813                                 echo "System is pyramid with USG universe."
13814                                 echo "<termio.h> not found--you could have problems." >&4
13815                         fi;;
13816                 esac
13817         elif ./usg; then
13818                 if $test `./findhdr termio.h`; then
13819                         echo "<termio.h> found." >&4
13820                         val="$define"
13821                 elif $test `./findhdr sgtty.h`; then
13822                         echo "<sgtty.h> found." >&4
13823                         val2="$define"
13824                 else
13825 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
13826                 fi
13827         else
13828                 if $test `./findhdr sgtty.h`; then
13829                         echo "<sgtty.h> found." >&4
13830                         val2="$define"
13831                 elif $test `./findhdr termio.h`; then
13832                         echo "<termio.h> found." >&4
13833                         val="$define"
13834                 else
13835 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
13836                 fi
13837         fi;;
13838 esac
13839 set i_termio; eval $setvar
13840 val=$val2; set i_sgtty; eval $setvar
13841 val=$val3; set i_termios; eval $setvar
13842
13843 : see if this is a shadow.h system
13844 set shadow.h i_shadow
13845 eval $inhdr
13846
13847 : see if this is a socks.h system
13848 set socks.h i_socks
13849 eval $inhdr
13850
13851 : see if stdarg is available
13852 echo " "
13853 if $test `./findhdr stdarg.h`; then
13854         echo "<stdarg.h> found." >&4
13855         valstd="$define"
13856 else
13857         echo "<stdarg.h> NOT found." >&4
13858         valstd="$undef"
13859 fi
13860
13861 : see if varags is available
13862 echo " "
13863 if $test `./findhdr varargs.h`; then
13864         echo "<varargs.h> found." >&4
13865 else
13866         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
13867 fi
13868
13869 : set up the varargs testing programs
13870 $cat > varargs.c <<EOP
13871 #ifdef I_STDARG
13872 #include <stdarg.h>
13873 #endif
13874 #ifdef I_VARARGS
13875 #include <varargs.h>
13876 #endif
13877
13878 #ifdef I_STDARG
13879 int f(char *p, ...)
13880 #else
13881 int f(va_alist)
13882 va_dcl
13883 #endif
13884 {
13885         va_list ap;
13886 #ifndef I_STDARG
13887         char *p;
13888 #endif
13889 #ifdef I_STDARG
13890         va_start(ap,p);
13891 #else
13892         va_start(ap);
13893         p = va_arg(ap, char *);
13894 #endif
13895         va_end(ap);
13896 }
13897 EOP
13898 $cat > varargs <<EOP
13899 $startsh
13900 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
13901         echo "true"
13902 else
13903         echo "false"
13904 fi
13905 $rm -f varargs$_o
13906 EOP
13907 chmod +x varargs
13908
13909 : now check which varargs header should be included
13910 echo " "
13911 i_varhdr=''
13912 case "$valstd" in
13913 "$define")
13914         if `./varargs I_STDARG`; then
13915                 val='stdarg.h'
13916         elif `./varargs I_VARARGS`; then
13917                 val='varargs.h'
13918         fi
13919         ;;
13920 *)
13921         if `./varargs I_VARARGS`; then
13922                 val='varargs.h'
13923         fi
13924         ;;
13925 esac
13926 case "$val" in
13927 '')
13928 echo "I could not find the definition for va_dcl... You have problems..." >&4
13929         val="$undef"; set i_stdarg; eval $setvar
13930         val="$undef"; set i_varargs; eval $setvar
13931         ;;
13932 *) 
13933         set i_varhdr
13934         eval $setvar
13935         case "$i_varhdr" in
13936         stdarg.h)
13937                 val="$define"; set i_stdarg; eval $setvar
13938                 val="$undef"; set i_varargs; eval $setvar
13939                 ;;
13940         varargs.h)
13941                 val="$undef"; set i_stdarg; eval $setvar
13942                 val="$define"; set i_varargs; eval $setvar
13943                 ;;
13944         esac
13945         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
13946 esac
13947 $rm -f varargs*
13948
13949 : see if stddef is available
13950 set stddef.h i_stddef
13951 eval $inhdr
13952
13953 : see if sys/access.h is available
13954 set sys/access.h i_sysaccess
13955 eval $inhdr
13956
13957 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
13958 set sys/filio.h i_sysfilio
13959 eval $inhdr
13960 echo " "
13961 if $test `./findhdr sys/ioctl.h`; then
13962         val="$define"
13963         echo '<sys/ioctl.h> found.' >&4
13964 else
13965         val="$undef"
13966         if $test $i_sysfilio = "$define"; then
13967             echo '<sys/ioctl.h> NOT found.' >&4
13968         else
13969                 $test $i_sgtty = "$define" && xxx="sgtty.h"
13970                 $test $i_termio = "$define" && xxx="termio.h"
13971                 $test $i_termios = "$define" && xxx="termios.h"
13972 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
13973         fi
13974 fi
13975 set i_sysioctl
13976 eval $setvar
13977
13978 : see if sys/resource.h has to be included
13979 set sys/resource.h i_sysresrc
13980 eval $inhdr
13981
13982 : see if sys/security.h is available
13983 set sys/security.h i_syssecrt
13984 eval $inhdr
13985
13986 : see if this is a sys/statvfs.h system
13987 set sys/statvfs.h i_sysstatvfs
13988 eval $inhdr
13989
13990 : see if this is a sys/uio.h system
13991 set sys/uio.h i_sysuio
13992 eval $inhdr
13993
13994 : see if this is a sys/un.h system
13995 set sys/un.h i_sysun
13996 eval $inhdr
13997
13998 : see if this is a syswait system
13999 set sys/wait.h i_syswait
14000 eval $inhdr
14001
14002 : see if this is a ustat.h system
14003 set ustat.h i_ustat
14004 eval $inhdr
14005
14006 : see if this is an utime system
14007 set utime.h i_utime
14008 eval $inhdr
14009
14010 : see if this is a values.h system
14011 set values.h i_values
14012 eval $inhdr
14013
14014 : see if this is a vfork system
14015 case "$d_vfork" in
14016 "$define")
14017         set vfork.h i_vfork
14018         eval $inhdr
14019         ;;
14020 *)
14021         i_vfork="$undef"
14022         ;;
14023 esac
14024
14025 : see if gdbm.h is available
14026 set gdbm.h t_gdbm
14027 eval $inhdr
14028 case "$t_gdbm" in
14029 $define)
14030         : see if gdbm_open exists
14031         set gdbm_open d_gdbm_open
14032         eval $inlibc
14033         case "$d_gdbm_open" in
14034         $undef)
14035                 t_gdbm="$undef"
14036                 echo "We won't be including <gdbm.h>"
14037                 ;;
14038         esac
14039         ;;
14040 esac
14041 val="$t_gdbm"
14042 set i_gdbm
14043 eval $setvar
14044
14045 echo " "
14046 echo "Looking for extensions..." >&4
14047 : If we are using the old config.sh, known_extensions may contain
14048 : old or inaccurate or duplicate values.
14049 known_extensions=''
14050 nonxs_extensions=''
14051 : We do not use find because it might not be available.
14052 : We do not just use MANIFEST because the user may have dropped
14053 : some additional extensions into the source tree and expect them
14054 : to be built.
14055
14056 : Function to recursively find available extensions, ignoring DynaLoader
14057 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14058 find_extensions='
14059     for xxx in *; do
14060        case "$xxx" in
14061            DynaLoader|dynaload) ;;
14062            *)
14063            if $test -f $xxx/$xxx.xs; then
14064                known_extensions="$known_extensions $1$xxx";
14065            elif $test -f $xxx/Makefile.PL; then
14066                nonxs_extensions="$nonxs_extensions $1$xxx";
14067            else
14068                if $test -d $xxx -a $# -lt 10; then
14069                    set $1$xxx/ $*;
14070                    cd $xxx;
14071                    eval $find_extensions;
14072                    cd ..;
14073                    shift;
14074                fi;
14075            fi
14076            ;;
14077        esac;
14078     done'
14079 tdir=`pwd`
14080 cd $rsrc/ext
14081 set X
14082 shift
14083 eval $find_extensions
14084 set X $nonxs_extensions
14085 shift
14086 nonxs_extensions="$*"
14087 set X $known_extensions
14088 shift
14089 known_extensions="$*"
14090 cd $tdir
14091
14092 : Now see which are supported on this system.
14093 avail_ext=''
14094 for xxx in $known_extensions ; do
14095         case "$xxx" in
14096         DB_File|db_file)
14097                 case "$i_db" in
14098                 $define) avail_ext="$avail_ext $xxx" ;;
14099                 esac
14100                 ;;
14101         GDBM_File|gdbm_fil)
14102                 case "$i_gdbm" in 
14103                 $define) avail_ext="$avail_ext $xxx" ;;
14104                 esac
14105                 ;;
14106         NDBM_File|ndbm_fil)
14107                 case "$i_ndbm" in
14108                 $define) avail_ext="$avail_ext $xxx" ;;
14109                 esac
14110                 ;;
14111         ODBM_File|odbm_fil) 
14112                 case "${i_dbm}${i_rpcsvcdbm}" in
14113                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14114                 esac
14115                 ;;
14116         POSIX|posix)
14117                 case "$useposix" in
14118                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14119                 esac
14120                 ;;
14121         Opcode|opcode)
14122                 case "$useopcode" in
14123                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14124                 esac
14125                 ;;
14126         Socket|socket)
14127                 case "$d_socket" in 
14128                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14129                 esac
14130                 ;;
14131         Thread|thread)
14132                 case "$usethreads" in 
14133                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14134                 esac
14135                 ;;
14136         IPC/SysV|ipc/sysv)
14137                 : XXX Do we need a useipcsysv variable here
14138                 case "${d_msg}${d_sem}${d_shm}" in 
14139                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14140                 esac
14141                 ;;
14142         *)      avail_ext="$avail_ext $xxx"
14143                 ;;
14144         esac
14145 done
14146
14147 set X $avail_ext
14148 shift
14149 avail_ext="$*"
14150
14151 : Now see which nonxs extensions are supported on this system.
14152 : For now assume all are.
14153 nonxs_ext=''
14154 for xxx in $nonxs_extensions ; do
14155         case "$xxx" in
14156         *)      nonxs_ext="$nonxs_ext $xxx"
14157                 ;;
14158         esac
14159 done
14160
14161 set X $nonxs_ext
14162 shift
14163 nonxs_ext="$*"
14164
14165 case $usedl in
14166 $define)
14167         $cat <<EOM
14168 A number of extensions are supplied with $package.  You may choose to
14169 compile these extensions for dynamic loading (the default), compile
14170 them into the $package executable (static loading), or not include
14171 them at all.  Answer "none" to include no extensions.
14172 Note that DynaLoader is always built and need not be mentioned here.
14173
14174 EOM
14175         case "$dynamic_ext" in
14176         '') dflt="$avail_ext" ;;
14177         *)      dflt="$dynamic_ext"
14178                 # Perhaps we are reusing an old out-of-date config.sh.
14179                 case "$hint" in
14180                 previous)
14181                         if test X"$dynamic_ext" != X"$avail_ext"; then
14182                                 $cat <<EOM
14183 NOTICE:  Your previous config.sh list may be incorrect. 
14184 The extensions now available to you are 
14185         ${avail_ext}
14186 but the default list from your previous config.sh is
14187         ${dynamic_ext} 
14188
14189 EOM
14190                         fi
14191                         ;;
14192                 esac
14193                 ;;
14194         esac
14195         case "$dflt" in
14196         '')     dflt=none;;
14197         esac
14198         rp="What extensions do you wish to load dynamically?"
14199         . ./myread
14200         case "$ans" in
14201         none) dynamic_ext=' ' ;;
14202         *) dynamic_ext="$ans" ;;
14203         esac
14204
14205         case "$static_ext" in
14206         '')
14207                 : Exclude those already listed in dynamic linking
14208                 dflt=''
14209                 for xxx in $avail_ext; do
14210                         case " $dynamic_ext " in
14211                         *" $xxx "*) ;;
14212                         *) dflt="$dflt $xxx" ;;
14213                         esac
14214                 done
14215                 set X $dflt
14216                 shift
14217                 dflt="$*"
14218                 ;;
14219         *)  dflt="$static_ext" 
14220                 ;;
14221         esac
14222
14223         case "$dflt" in
14224         '')     dflt=none;;
14225         esac
14226         rp="What extensions do you wish to load statically?"
14227         . ./myread
14228         case "$ans" in
14229         none) static_ext=' ' ;;
14230         *) static_ext="$ans" ;;
14231         esac
14232         ;;
14233 *)
14234         $cat <<EOM
14235 A number of extensions are supplied with $package.  Answer "none" 
14236 to include no extensions. 
14237 Note that DynaLoader is always built and need not be mentioned here.
14238
14239 EOM
14240         case "$static_ext" in
14241         '') dflt="$avail_ext" ;;
14242         *)      dflt="$static_ext"
14243                 # Perhaps we are reusing an old out-of-date config.sh.
14244                 case "$hint" in
14245                 previous)
14246                         if test X"$static_ext" != X"$avail_ext"; then
14247                                 $cat <<EOM
14248 NOTICE:  Your previous config.sh list may be incorrect. 
14249 The extensions now available to you are 
14250         ${avail_ext}
14251 but the default list from your previous config.sh is
14252         ${static_ext} 
14253
14254 EOM
14255                         fi
14256                         ;;
14257                 esac
14258                 ;;
14259         esac
14260         : Exclude those that are not xs extensions
14261         case "$dflt" in
14262         '')     dflt=none;;
14263         esac
14264         rp="What extensions do you wish to include?"
14265         . ./myread
14266         case "$ans" in
14267         none) static_ext=' ' ;;
14268         *) static_ext="$ans" ;;
14269         esac
14270         ;;
14271 esac
14272
14273 set X $dynamic_ext $static_ext $nonxs_ext
14274 shift
14275 extensions="$*"
14276
14277 : Remove build directory name from cppstdin so it can be used from
14278 : either the present location or the final installed location.
14279 echo " "
14280 : Get out of the UU directory to get correct path name.
14281 cd ..
14282 case "$cppstdin" in
14283 `pwd`/cppstdin)
14284         echo "Stripping down cppstdin path name"
14285         cppstdin=cppstdin
14286         ;;
14287 esac
14288 cd UU
14289
14290 : end of configuration questions
14291 echo " "
14292 echo "End of configuration questions."
14293 echo " "
14294
14295 : back to where it started
14296 if test -d ../UU; then
14297         cd ..
14298 fi
14299
14300 : configuration may be patched via a 'config.over' file
14301 if $test -f config.over; then
14302         echo " "
14303         dflt=y
14304         rp='I see a config.over file.  Do you wish to load it?'
14305         . UU/myread
14306         case "$ans" in
14307         n*) echo "OK, I'll ignore it.";;
14308         *)      . ./config.over
14309                 echo "Configuration override changes have been loaded."
14310                 ;;
14311         esac
14312 fi
14313
14314 : in case they want portability, strip down executable paths
14315 case "$d_portable" in
14316 "$define")
14317         echo " "
14318         echo "Stripping down executable paths..." >&4
14319         for file in $loclist $trylist; do
14320                 eval temp=\$$file
14321                 eval $file=`basename $temp`
14322         done
14323         ;;
14324 esac
14325
14326 : create config.sh file
14327 echo " "
14328 echo "Creating config.sh..." >&4
14329 $spitshell <<EOT >config.sh
14330 $startsh
14331 #
14332 # This file was produced by running the Configure script. It holds all the
14333 # definitions figured out by Configure. Should you modify one of these values,
14334 # do not forget to propagate your changes by running "Configure -der". You may
14335 # instead choose to run each of the .SH files by yourself, or "Configure -S".
14336 #
14337
14338 # Package name      : $package
14339 # Source directory  : $src
14340 # Configuration time: $cf_time
14341 # Configured by     : $cf_by
14342 # Target system     : $myuname
14343
14344 Author='$Author'
14345 Date='$Date'
14346 Header='$Header'
14347 Id='$Id'
14348 Locker='$Locker'
14349 Log='$Log'
14350 Mcc='$Mcc'
14351 RCSfile='$RCSfile'
14352 Revision='$Revision'
14353 Source='$Source'
14354 State='$State'
14355 _a='$_a'
14356 _exe='$_exe'
14357 _o='$_o'
14358 afs='$afs'
14359 alignbytes='$alignbytes'
14360 ansi2knr='$ansi2knr'
14361 aphostname='$aphostname'
14362 api_revision='$api_revision'
14363 api_subversion='$api_subversion'
14364 api_version='$api_version'
14365 api_versionstring='$api_versionstring'
14366 ar='$ar'
14367 archlib='$archlib'
14368 archlibexp='$archlibexp'
14369 archname64='$archname64'
14370 archname='$archname'
14371 archobjs='$archobjs'
14372 awk='$awk'
14373 baserev='$baserev'
14374 bash='$bash'
14375 bin='$bin'
14376 bincompat5005='$bincompat5005'
14377 binexp='$binexp'
14378 bison='$bison'
14379 byacc='$byacc'
14380 byteorder='$byteorder'
14381 c='$c'
14382 castflags='$castflags'
14383 cat='$cat'
14384 cc='$cc'
14385 cccdlflags='$cccdlflags'
14386 ccdlflags='$ccdlflags'
14387 ccflags='$ccflags'
14388 ccsymbols='$ccsymbols'
14389 cf_by='$cf_by'
14390 cf_email='$cf_email'
14391 cf_time='$cf_time'
14392 charsize='$charsize'
14393 chgrp='$chgrp'
14394 chmod='$chmod'
14395 chown='$chown'
14396 clocktype='$clocktype'
14397 comm='$comm'
14398 compress='$compress'
14399 contains='$contains'
14400 cp='$cp'
14401 cpio='$cpio'
14402 cpp='$cpp'
14403 cpp_stuff='$cpp_stuff'
14404 cppccsymbols='$cppccsymbols'
14405 cppflags='$cppflags'
14406 cpplast='$cpplast'
14407 cppminus='$cppminus'
14408 cpprun='$cpprun'
14409 cppstdin='$cppstdin'
14410 cppsymbols='$cppsymbols'
14411 crosscompile='$crosscompile'
14412 cryptlib='$cryptlib'
14413 csh='$csh'
14414 d_Gconvert='$d_Gconvert'
14415 d_PRIEldbl='$d_PRIEldbl'
14416 d_PRIFldbl='$d_PRIFldbl'
14417 d_PRIGldbl='$d_PRIGldbl'
14418 d_PRIX64='$d_PRIX64'
14419 d_PRId64='$d_PRId64'
14420 d_PRIeldbl='$d_PRIeldbl'
14421 d_PRIfldbl='$d_PRIfldbl'
14422 d_PRIgldbl='$d_PRIgldbl'
14423 d_PRIi64='$d_PRIi64'
14424 d_PRIo64='$d_PRIo64'
14425 d_PRIu64='$d_PRIu64'
14426 d_PRIx64='$d_PRIx64'
14427 d_access='$d_access'
14428 d_accessx='$d_accessx'
14429 d_alarm='$d_alarm'
14430 d_archlib='$d_archlib'
14431 d_atolf='$d_atolf'
14432 d_atoll='$d_atoll'
14433 d_attribut='$d_attribut'
14434 d_bcmp='$d_bcmp'
14435 d_bcopy='$d_bcopy'
14436 d_bincompat5005='$d_bincompat5005'
14437 d_bsd='$d_bsd'
14438 d_bsdgetpgrp='$d_bsdgetpgrp'
14439 d_bsdsetpgrp='$d_bsdsetpgrp'
14440 d_bzero='$d_bzero'
14441 d_casti32='$d_casti32'
14442 d_castneg='$d_castneg'
14443 d_charvspr='$d_charvspr'
14444 d_chown='$d_chown'
14445 d_chroot='$d_chroot'
14446 d_chsize='$d_chsize'
14447 d_closedir='$d_closedir'
14448 d_const='$d_const'
14449 d_crypt='$d_crypt'
14450 d_csh='$d_csh'
14451 d_cuserid='$d_cuserid'
14452 d_dbl_dig='$d_dbl_dig'
14453 d_difftime='$d_difftime'
14454 d_dirnamlen='$d_dirnamlen'
14455 d_dlerror='$d_dlerror'
14456 d_dlopen='$d_dlopen'
14457 d_dlsymun='$d_dlsymun'
14458 d_dosuid='$d_dosuid'
14459 d_drand48proto='$d_drand48proto'
14460 d_dup2='$d_dup2'
14461 d_eaccess='$d_eaccess'
14462 d_endgrent='$d_endgrent'
14463 d_endhent='$d_endhent'
14464 d_endnent='$d_endnent'
14465 d_endpent='$d_endpent'
14466 d_endpwent='$d_endpwent'
14467 d_endsent='$d_endsent'
14468 d_endspent='$d_endspent'
14469 d_eofnblk='$d_eofnblk'
14470 d_eunice='$d_eunice'
14471 d_fchmod='$d_fchmod'
14472 d_fchown='$d_fchown'
14473 d_fcntl='$d_fcntl'
14474 d_fd_macros='$d_fd_macros'
14475 d_fd_set='$d_fd_set'
14476 d_fds_bits='$d_fds_bits'
14477 d_fgetpos='$d_fgetpos'
14478 d_flexfnam='$d_flexfnam'
14479 d_flock='$d_flock'
14480 d_fork='$d_fork'
14481 d_fpathconf='$d_fpathconf'
14482 d_fpos64_t='$d_fpos64_t'
14483 d_fs_data_s='$d_fs_data_s'
14484 d_fseeko='$d_fseeko'
14485 d_fsetpos='$d_fsetpos'
14486 d_fstatfs='$d_fstatfs'
14487 d_fstatvfs='$d_fstatvfs'
14488 d_ftello='$d_ftello'
14489 d_ftime='$d_ftime'
14490 d_getgrent='$d_getgrent'
14491 d_getgrps='$d_getgrps'
14492 d_gethbyaddr='$d_gethbyaddr'
14493 d_gethbyname='$d_gethbyname'
14494 d_gethent='$d_gethent'
14495 d_gethname='$d_gethname'
14496 d_gethostprotos='$d_gethostprotos'
14497 d_getlogin='$d_getlogin'
14498 d_getmnt='$d_getmnt'
14499 d_getmntent='$d_getmntent'
14500 d_getnbyaddr='$d_getnbyaddr'
14501 d_getnbyname='$d_getnbyname'
14502 d_getnent='$d_getnent'
14503 d_getnetprotos='$d_getnetprotos'
14504 d_getpbyname='$d_getpbyname'
14505 d_getpbynumber='$d_getpbynumber'
14506 d_getpent='$d_getpent'
14507 d_getpgid='$d_getpgid'
14508 d_getpgrp2='$d_getpgrp2'
14509 d_getpgrp='$d_getpgrp'
14510 d_getppid='$d_getppid'
14511 d_getprior='$d_getprior'
14512 d_getprotoprotos='$d_getprotoprotos'
14513 d_getpwent='$d_getpwent'
14514 d_getsbyname='$d_getsbyname'
14515 d_getsbyport='$d_getsbyport'
14516 d_getsent='$d_getsent'
14517 d_getservprotos='$d_getservprotos'
14518 d_getspent='$d_getspent'
14519 d_getspnam='$d_getspnam'
14520 d_gettimeod='$d_gettimeod'
14521 d_gnulibc='$d_gnulibc'
14522 d_grpasswd='$d_grpasswd'
14523 d_hasmntopt='$d_hasmntopt'
14524 d_htonl='$d_htonl'
14525 d_index='$d_index'
14526 d_inetaton='$d_inetaton'
14527 d_int64t='$d_int64t'
14528 d_isascii='$d_isascii'
14529 d_killpg='$d_killpg'
14530 d_lchown='$d_lchown'
14531 d_ldbl_dig='$d_ldbl_dig'
14532 d_link='$d_link'
14533 d_locconv='$d_locconv'
14534 d_lockf='$d_lockf'
14535 d_longdbl='$d_longdbl'
14536 d_longlong='$d_longlong'
14537 d_lstat='$d_lstat'
14538 d_mblen='$d_mblen'
14539 d_mbstowcs='$d_mbstowcs'
14540 d_mbtowc='$d_mbtowc'
14541 d_memchr='$d_memchr'
14542 d_memcmp='$d_memcmp'
14543 d_memcpy='$d_memcpy'
14544 d_memmove='$d_memmove'
14545 d_memset='$d_memset'
14546 d_mkdir='$d_mkdir'
14547 d_mkfifo='$d_mkfifo'
14548 d_mktime='$d_mktime'
14549 d_msg='$d_msg'
14550 d_msg_ctrunc='$d_msg_ctrunc'
14551 d_msg_dontroute='$d_msg_dontroute'
14552 d_msg_oob='$d_msg_oob'
14553 d_msg_peek='$d_msg_peek'
14554 d_msg_proxy='$d_msg_proxy'
14555 d_msgctl='$d_msgctl'
14556 d_msgget='$d_msgget'
14557 d_msgrcv='$d_msgrcv'
14558 d_msgsnd='$d_msgsnd'
14559 d_mymalloc='$d_mymalloc'
14560 d_nice='$d_nice'
14561 d_nv_preserves_uv='$d_nv_preserves_uv'
14562 d_off64_t='$d_off64_t'
14563 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
14564 d_oldpthreads='$d_oldpthreads'
14565 d_oldsock='$d_oldsock'
14566 d_open3='$d_open3'
14567 d_pathconf='$d_pathconf'
14568 d_pause='$d_pause'
14569 d_phostname='$d_phostname'
14570 d_pipe='$d_pipe'
14571 d_poll='$d_poll'
14572 d_portable='$d_portable'
14573 d_pthread_yield='$d_pthread_yield'
14574 d_pwage='$d_pwage'
14575 d_pwchange='$d_pwchange'
14576 d_pwclass='$d_pwclass'
14577 d_pwcomment='$d_pwcomment'
14578 d_pwexpire='$d_pwexpire'
14579 d_pwgecos='$d_pwgecos'
14580 d_pwpasswd='$d_pwpasswd'
14581 d_pwquota='$d_pwquota'
14582 d_quad='$d_quad'
14583 d_readdir='$d_readdir'
14584 d_readlink='$d_readlink'
14585 d_rename='$d_rename'
14586 d_rewinddir='$d_rewinddir'
14587 d_rmdir='$d_rmdir'
14588 d_safebcpy='$d_safebcpy'
14589 d_safemcpy='$d_safemcpy'
14590 d_sanemcmp='$d_sanemcmp'
14591 d_sched_yield='$d_sched_yield'
14592 d_scm_rights='$d_scm_rights'
14593 d_seekdir='$d_seekdir'
14594 d_select='$d_select'
14595 d_sem='$d_sem'
14596 d_semctl='$d_semctl'
14597 d_semctl_semid_ds='$d_semctl_semid_ds'
14598 d_semctl_semun='$d_semctl_semun'
14599 d_semget='$d_semget'
14600 d_semop='$d_semop'
14601 d_setegid='$d_setegid'
14602 d_seteuid='$d_seteuid'
14603 d_setgrent='$d_setgrent'
14604 d_setgrps='$d_setgrps'
14605 d_sethent='$d_sethent'
14606 d_setlinebuf='$d_setlinebuf'
14607 d_setlocale='$d_setlocale'
14608 d_setnent='$d_setnent'
14609 d_setpent='$d_setpent'
14610 d_setpgid='$d_setpgid'
14611 d_setpgrp2='$d_setpgrp2'
14612 d_setpgrp='$d_setpgrp'
14613 d_setprior='$d_setprior'
14614 d_setpwent='$d_setpwent'
14615 d_setregid='$d_setregid'
14616 d_setresgid='$d_setresgid'
14617 d_setresuid='$d_setresuid'
14618 d_setreuid='$d_setreuid'
14619 d_setrgid='$d_setrgid'
14620 d_setruid='$d_setruid'
14621 d_setsent='$d_setsent'
14622 d_setsid='$d_setsid'
14623 d_setspent='$d_setspent'
14624 d_setvbuf='$d_setvbuf'
14625 d_sfio='$d_sfio'
14626 d_shm='$d_shm'
14627 d_shmat='$d_shmat'
14628 d_shmatprototype='$d_shmatprototype'
14629 d_shmctl='$d_shmctl'
14630 d_shmdt='$d_shmdt'
14631 d_shmget='$d_shmget'
14632 d_sigaction='$d_sigaction'
14633 d_sigsetjmp='$d_sigsetjmp'
14634 d_socket='$d_socket'
14635 d_sockpair='$d_sockpair'
14636 d_sqrtl='$d_sqrtl'
14637 d_statblks='$d_statblks'
14638 d_statfs_f_flags='$d_statfs_f_flags'
14639 d_statfs_s='$d_statfs_s'
14640 d_statvfs='$d_statvfs'
14641 d_stdio_cnt_lval='$d_stdio_cnt_lval'
14642 d_stdio_ptr_lval='$d_stdio_ptr_lval'
14643 d_stdio_stream_array='$d_stdio_stream_array'
14644 d_stdiobase='$d_stdiobase'
14645 d_stdstdio='$d_stdstdio'
14646 d_strchr='$d_strchr'
14647 d_strcoll='$d_strcoll'
14648 d_strctcpy='$d_strctcpy'
14649 d_strerrm='$d_strerrm'
14650 d_strerror='$d_strerror'
14651 d_strtod='$d_strtod'
14652 d_strtol='$d_strtol'
14653 d_strtold='$d_strtold'
14654 d_strtoll='$d_strtoll'
14655 d_strtoul='$d_strtoul'
14656 d_strtoull='$d_strtoull'
14657 d_strtouq='$d_strtouq'
14658 d_strxfrm='$d_strxfrm'
14659 d_suidsafe='$d_suidsafe'
14660 d_symlink='$d_symlink'
14661 d_syscall='$d_syscall'
14662 d_sysconf='$d_sysconf'
14663 d_sysernlst='$d_sysernlst'
14664 d_syserrlst='$d_syserrlst'
14665 d_system='$d_system'
14666 d_tcgetpgrp='$d_tcgetpgrp'
14667 d_tcsetpgrp='$d_tcsetpgrp'
14668 d_telldir='$d_telldir'
14669 d_telldirproto='$d_telldirproto'
14670 d_time='$d_time'
14671 d_times='$d_times'
14672 d_truncate='$d_truncate'
14673 d_tzname='$d_tzname'
14674 d_umask='$d_umask'
14675 d_uname='$d_uname'
14676 d_union_semun='$d_union_semun'
14677 d_ustat='$d_ustat'
14678 d_vendorbin='$d_vendorbin'
14679 d_vendorlib='$d_vendorlib'
14680 d_vfork='$d_vfork'
14681 d_void_closedir='$d_void_closedir'
14682 d_voidsig='$d_voidsig'
14683 d_voidtty='$d_voidtty'
14684 d_volatile='$d_volatile'
14685 d_vprintf='$d_vprintf'
14686 d_wait4='$d_wait4'
14687 d_waitpid='$d_waitpid'
14688 d_wcstombs='$d_wcstombs'
14689 d_wctomb='$d_wctomb'
14690 d_xenix='$d_xenix'
14691 date='$date'
14692 db_hashtype='$db_hashtype'
14693 db_prefixtype='$db_prefixtype'
14694 defvoidused='$defvoidused'
14695 direntrytype='$direntrytype'
14696 dlext='$dlext'
14697 dlsrc='$dlsrc'
14698 doublesize='$doublesize'
14699 drand01='$drand01'
14700 dynamic_ext='$dynamic_ext'
14701 eagain='$eagain'
14702 ebcdic='$ebcdic'
14703 echo='$echo'
14704 egrep='$egrep'
14705 emacs='$emacs'
14706 eunicefix='$eunicefix'
14707 exe_ext='$exe_ext'
14708 expr='$expr'
14709 extensions='$extensions'
14710 fflushNULL='$fflushNULL'
14711 fflushall='$fflushall'
14712 find='$find'
14713 firstmakefile='$firstmakefile'
14714 flex='$flex'
14715 fpossize='$fpossize'
14716 fpostype='$fpostype'
14717 freetype='$freetype'
14718 full_ar='$full_ar'
14719 full_csh='$full_csh'
14720 full_sed='$full_sed'
14721 gccversion='$gccversion'
14722 gidformat='$gidformat'
14723 gidsign='$gidsign'
14724 gidsize='$gidsize'
14725 gidtype='$gidtype'
14726 glibpth='$glibpth'
14727 grep='$grep'
14728 groupcat='$groupcat'
14729 groupstype='$groupstype'
14730 gzip='$gzip'
14731 h_fcntl='$h_fcntl'
14732 h_sysfile='$h_sysfile'
14733 hint='$hint'
14734 hostcat='$hostcat'
14735 huge='$huge'
14736 i16size='$i16size'
14737 i16type='$i16type'
14738 i32size='$i32size'
14739 i32type='$i32type'
14740 i64size='$i64size'
14741 i64type='$i64type'
14742 i8size='$i8size'
14743 i8type='$i8type'
14744 i_arpainet='$i_arpainet'
14745 i_bsdioctl='$i_bsdioctl'
14746 i_db='$i_db'
14747 i_dbm='$i_dbm'
14748 i_dirent='$i_dirent'
14749 i_dld='$i_dld'
14750 i_dlfcn='$i_dlfcn'
14751 i_fcntl='$i_fcntl'
14752 i_float='$i_float'
14753 i_gdbm='$i_gdbm'
14754 i_grp='$i_grp'
14755 i_inttypes='$i_inttypes'
14756 i_limits='$i_limits'
14757 i_locale='$i_locale'
14758 i_machcthr='$i_machcthr'
14759 i_malloc='$i_malloc'
14760 i_math='$i_math'
14761 i_memory='$i_memory'
14762 i_mntent='$i_mntent'
14763 i_ndbm='$i_ndbm'
14764 i_netdb='$i_netdb'
14765 i_neterrno='$i_neterrno'
14766 i_netinettcp='$i_netinettcp'
14767 i_niin='$i_niin'
14768 i_poll='$i_poll'
14769 i_pthread='$i_pthread'
14770 i_pwd='$i_pwd'
14771 i_rpcsvcdbm='$i_rpcsvcdbm'
14772 i_sfio='$i_sfio'
14773 i_sgtty='$i_sgtty'
14774 i_shadow='$i_shadow'
14775 i_socks='$i_socks'
14776 i_stdarg='$i_stdarg'
14777 i_stddef='$i_stddef'
14778 i_stdlib='$i_stdlib'
14779 i_string='$i_string'
14780 i_sysaccess='$i_sysaccess'
14781 i_sysdir='$i_sysdir'
14782 i_sysfile='$i_sysfile'
14783 i_sysfilio='$i_sysfilio'
14784 i_sysin='$i_sysin'
14785 i_sysioctl='$i_sysioctl'
14786 i_sysmount='$i_sysmount'
14787 i_sysndir='$i_sysndir'
14788 i_sysparam='$i_sysparam'
14789 i_sysresrc='$i_sysresrc'
14790 i_syssecrt='$i_syssecrt'
14791 i_sysselct='$i_sysselct'
14792 i_syssockio='$i_syssockio'
14793 i_sysstat='$i_sysstat'
14794 i_sysstatfs='$i_sysstatfs'
14795 i_sysstatvfs='$i_sysstatvfs'
14796 i_systime='$i_systime'
14797 i_systimek='$i_systimek'
14798 i_systimes='$i_systimes'
14799 i_systypes='$i_systypes'
14800 i_sysuio='$i_sysuio'
14801 i_sysun='$i_sysun'
14802 i_sysvfs='$i_sysvfs'
14803 i_syswait='$i_syswait'
14804 i_termio='$i_termio'
14805 i_termios='$i_termios'
14806 i_time='$i_time'
14807 i_unistd='$i_unistd'
14808 i_ustat='$i_ustat'
14809 i_utime='$i_utime'
14810 i_values='$i_values'
14811 i_varargs='$i_varargs'
14812 i_varhdr='$i_varhdr'
14813 i_vfork='$i_vfork'
14814 ignore_versioned_solibs='$ignore_versioned_solibs'
14815 inc_version_list='$inc_version_list'
14816 inc_version_list_init='$inc_version_list_init'
14817 incpath='$incpath'
14818 inews='$inews'
14819 installarchlib='$installarchlib'
14820 installbin='$installbin'
14821 installman1dir='$installman1dir'
14822 installman3dir='$installman3dir'
14823 installprefix='$installprefix'
14824 installprefixexp='$installprefixexp'
14825 installprivlib='$installprivlib'
14826 installscript='$installscript'
14827 installsitearch='$installsitearch'
14828 installsitebin='$installsitebin'
14829 installsitelib='$installsitelib'
14830 installstyle='$installstyle'
14831 installusrbinperl='$installusrbinperl'
14832 installvendorbin='$installvendorbin'
14833 installvendorlib='$installvendorlib'
14834 intsize='$intsize'
14835 ivdformat='$ivdformat'
14836 ivsize='$ivsize'
14837 ivtype='$ivtype'
14838 known_extensions='$known_extensions'
14839 ksh='$ksh'
14840 large='$large'
14841 ld='$ld'
14842 lddlflags='$lddlflags'
14843 ldflags='$ldflags'
14844 ldlibpthname='$ldlibpthname'
14845 less='$less'
14846 lib_ext='$lib_ext'
14847 libc='$libc'
14848 libperl='$libperl'
14849 libpth='$libpth'
14850 libs='$libs'
14851 libswanted='$libswanted'
14852 line='$line'
14853 lint='$lint'
14854 lkflags='$lkflags'
14855 ln='$ln'
14856 lns='$lns'
14857 locincpth='$locincpth'
14858 loclibpth='$loclibpth'
14859 longdblsize='$longdblsize'
14860 longlongsize='$longlongsize'
14861 longsize='$longsize'
14862 lp='$lp'
14863 lpr='$lpr'
14864 ls='$ls'
14865 lseeksize='$lseeksize'
14866 lseektype='$lseektype'
14867 mail='$mail'
14868 mailx='$mailx'
14869 make='$make'
14870 make_set_make='$make_set_make'
14871 mallocobj='$mallocobj'
14872 mallocsrc='$mallocsrc'
14873 malloctype='$malloctype'
14874 man1dir='$man1dir'
14875 man1direxp='$man1direxp'
14876 man1ext='$man1ext'
14877 man3dir='$man3dir'
14878 man3direxp='$man3direxp'
14879 man3ext='$man3ext'
14880 medium='$medium'
14881 mips_type='$mips_type'
14882 mkdir='$mkdir'
14883 models='$models'
14884 modetype='$modetype'
14885 more='$more'
14886 multiarch='$multiarch'
14887 mv='$mv'
14888 myarchname='$myarchname'
14889 mydomain='$mydomain'
14890 myhostname='$myhostname'
14891 myuname='$myuname'
14892 n='$n'
14893 netdb_hlen_type='$netdb_hlen_type'
14894 netdb_host_type='$netdb_host_type'
14895 netdb_name_type='$netdb_name_type'
14896 netdb_net_type='$netdb_net_type'
14897 nm='$nm'
14898 nm_opt='$nm_opt'
14899 nm_so_opt='$nm_so_opt'
14900 nonxs_ext='$nonxs_ext'
14901 nroff='$nroff'
14902 nvsize='$nvsize'
14903 nvtype='$nvtype'
14904 o_nonblock='$o_nonblock'
14905 obj_ext='$obj_ext'
14906 old_pthread_create_joinable='$old_pthread_create_joinable'
14907 optimize='$optimize'
14908 orderlib='$orderlib'
14909 osname='$osname'
14910 osvers='$osvers'
14911 package='$package'
14912 pager='$pager'
14913 passcat='$passcat'
14914 patchlevel='$patchlevel'
14915 path_sep='$path_sep'
14916 perl='$perl'
14917 perladmin='$perladmin'
14918 perlpath='$perlpath'
14919 pg='$pg'
14920 phostname='$phostname'
14921 pidtype='$pidtype'
14922 plibpth='$plibpth'
14923 pmake='$pmake'
14924 pr='$pr'
14925 prefix='$prefix'
14926 prefixexp='$prefixexp'
14927 privlib='$privlib'
14928 privlibexp='$privlibexp'
14929 prototype='$prototype'
14930 ptrsize='$ptrsize'
14931 quadkind='$quadkind'
14932 quadtype='$quadtype'
14933 randbits='$randbits'
14934 randfunc='$randfunc'
14935 randseedtype='$randseedtype'
14936 ranlib='$ranlib'
14937 rd_nodata='$rd_nodata'
14938 rm='$rm'
14939 rmail='$rmail'
14940 runnm='$runnm'
14941 sPRIEldbl='$sPRIEldbl'
14942 sPRIFldbl='$sPRIFldbl'
14943 sPRIGldbl='$sPRIGldbl'
14944 sPRIX64='$sPRIX64'
14945 sPRId64='$sPRId64'
14946 sPRIeldbl='$sPRIeldbl'
14947 sPRIfldbl='$sPRIfldbl'
14948 sPRIgldbl='$sPRIgldbl'
14949 sPRIi64='$sPRIi64'
14950 sPRIo64='$sPRIo64'
14951 sPRIu64='$sPRIu64'
14952 sPRIx64='$sPRIx64'
14953 sched_yield='$sched_yield'
14954 scriptdir='$scriptdir'
14955 scriptdirexp='$scriptdirexp'
14956 sed='$sed'
14957 seedfunc='$seedfunc'
14958 selectminbits='$selectminbits'
14959 selecttype='$selecttype'
14960 sendmail='$sendmail'
14961 sh='$sh'
14962 shar='$shar'
14963 sharpbang='$sharpbang'
14964 shmattype='$shmattype'
14965 shortsize='$shortsize'
14966 shrpenv='$shrpenv'
14967 shsharp='$shsharp'
14968 sig_count='$sig_count'
14969 sig_name='$sig_name'
14970 sig_name_init='$sig_name_init'
14971 sig_num='$sig_num'
14972 sig_num_init='$sig_num_init'
14973 signal_t='$signal_t'
14974 sitearch='$sitearch'
14975 sitearchexp='$sitearchexp'
14976 sitebin='$sitebin'
14977 sitebinexp='$sitebinexp'
14978 sitelib='$sitelib'
14979 sitelibexp='$sitelibexp'
14980 siteprefix='$siteprefix'
14981 siteprefixexp='$siteprefixexp'
14982 sizetype='$sizetype'
14983 sleep='$sleep'
14984 smail='$smail'
14985 small='$small'
14986 so='$so'
14987 sockethdr='$sockethdr'
14988 socketlib='$socketlib'
14989 sort='$sort'
14990 spackage='$spackage'
14991 spitshell='$spitshell'
14992 split='$split'
14993 src='$src'
14994 ssizetype='$ssizetype'
14995 startperl='$startperl'
14996 startsh='$startsh'
14997 static_ext='$static_ext'
14998 stdchar='$stdchar'
14999 stdio_base='$stdio_base'
15000 stdio_bufsiz='$stdio_bufsiz'
15001 stdio_cnt='$stdio_cnt'
15002 stdio_filbuf='$stdio_filbuf'
15003 stdio_ptr='$stdio_ptr'
15004 stdio_stream_array='$stdio_stream_array'
15005 strings='$strings'
15006 submit='$submit'
15007 subversion='$subversion'
15008 sysman='$sysman'
15009 tail='$tail'
15010 tar='$tar'
15011 tbl='$tbl'
15012 tee='$tee'
15013 test='$test'
15014 timeincl='$timeincl'
15015 timetype='$timetype'
15016 touch='$touch'
15017 tr='$tr'
15018 trnl='$trnl'
15019 troff='$troff'
15020 u16size='$u16size'
15021 u16type='$u16type'
15022 u32size='$u32size'
15023 u32type='$u32type'
15024 u64size='$u64size'
15025 u64type='$u64type'
15026 u8size='$u8size'
15027 u8type='$u8type'
15028 uidformat='$uidformat'
15029 uidsign='$uidsign'
15030 uidsize='$uidsize'
15031 uidtype='$uidtype'
15032 uname='$uname'
15033 uniq='$uniq'
15034 uquadtype='$uquadtype'
15035 use5005threads='$use5005threads'
15036 use64bits='$use64bits'
15037 usedl='$usedl'
15038 useithreads='$useithreads'
15039 uselargefiles='$uselargefiles'
15040 uselongdouble='$uselongdouble'
15041 uselonglong='$uselonglong'
15042 usemorebits='$usemorebits'
15043 usemultiplicity='$usemultiplicity'
15044 usemymalloc='$usemymalloc'
15045 usenm='$usenm'
15046 useopcode='$useopcode'
15047 useperlio='$useperlio'
15048 useposix='$useposix'
15049 usesfio='$usesfio'
15050 useshrplib='$useshrplib'
15051 usesocks='$usesocks'
15052 usethreads='$usethreads'
15053 usevendorprefix='$usevendorprefix'
15054 usevfork='$usevfork'
15055 usrinc='$usrinc'
15056 uuname='$uuname'
15057 uvoformat='$uvoformat'
15058 uvsize='$uvsize'
15059 uvtype='$uvtype'
15060 uvuformat='$uvuformat'
15061 uvxformat='$uvxformat'
15062 vendorbin='$vendorbin'
15063 vendorbinexp='$vendorbinexp'
15064 vendorlib='$vendorlib'
15065 vendorlibexp='$vendorlibexp'
15066 vendorprefix='$vendorprefix'
15067 vendorprefixexp='$vendorprefixexp'
15068 version='$version'
15069 vi='$vi'
15070 voidflags='$voidflags'
15071 xlibpth='$xlibpth'
15072 zcat='$zcat'
15073 zip='$zip'
15074 EOT
15075
15076 : Add in command line options if available
15077 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15078
15079 : add special variables
15080 $test -f $src/patchlevel.h && \
15081 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15082 echo "CONFIGDOTSH=true" >>config.sh
15083
15084 : propagate old symbols
15085 if $test -f UU/config.sh; then
15086         <UU/config.sh sort | uniq >UU/oldconfig.sh
15087         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15088         sort | uniq -u >UU/oldsyms
15089         set X `cat UU/oldsyms`
15090         shift
15091         case $# in
15092         0) ;;
15093         *)
15094                 cat <<EOM
15095 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15096 EOM
15097                 echo "# Variables propagated from previous config.sh file." >>config.sh
15098                 for sym in `cat UU/oldsyms`; do
15099                         echo "    Propagating $hint variable "'$'"$sym..."
15100                         eval 'tmp="$'"${sym}"'"'
15101                         echo "$tmp" | \
15102                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15103                 done
15104                 ;;
15105         esac
15106 fi
15107
15108 : Finish up by extracting the .SH files
15109 case "$alldone" in
15110 exit)
15111         $rm -rf UU
15112         echo "Done."
15113         exit 0
15114         ;;
15115 cont)
15116         ;;
15117 '')
15118         dflt=''
15119         nostick=true
15120         $cat <<EOM
15121
15122 If you'd like to make any changes to the config.sh file before I begin
15123 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15124
15125 EOM
15126         rp="Press return or use a shell escape to edit config.sh:"
15127         . UU/myread
15128         nostick=''
15129         case "$ans" in
15130         '') ;;
15131         *) : in case they cannot read
15132                 sh 1>&4 -c "$ans";;
15133         esac
15134         ;;
15135 esac
15136
15137 : if this fails, just run all the .SH files by hand
15138 . ./config.sh
15139
15140 echo " "
15141 exec 1>&4
15142 . ./UU/extract
15143
15144 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15145         dflt=y
15146         case "$silent" in
15147         true) ;;
15148         *)
15149                 $cat <<EOM
15150
15151 Now you need to generate make dependencies by running "$make depend".
15152 You might prefer to run it in background: "$make depend > makedepend.out &"
15153 It can take a while, so you might not want to run it right now.
15154
15155 EOM
15156                 ;;
15157         esac
15158         rp="Run $make depend now?"
15159         . UU/myread
15160         case "$ans" in
15161         y*)
15162                 $make depend && echo "Now you must run a $make."
15163                 ;;
15164         *)
15165                 echo "You must run '$make depend' then '$make'."
15166                 ;;
15167         esac
15168 elif test -f [Mm]akefile; then
15169         echo " "
15170         echo "Now you must run a $make."
15171 else
15172         echo "Done."
15173 fi
15174
15175 if $test -f Policy.sh; then
15176     $cat <<EOM
15177
15178 If you compile $package on a different machine or from a different object
15179 directory, copy the Policy.sh file from this object directory to the
15180 new one before you run Configure -- this will help you with most of
15181 the policy defaults.
15182
15183 EOM
15184 fi
15185 if $test -f config.msg; then
15186     echo "Hmm.  I also noted the following information while running:"
15187     echo " "
15188     $cat config.msg >&4
15189     $rm -f config.msg
15190 fi
15191 $rm -f kit*isdone ark*isdone
15192 $rm -rf UU
15193
15194 : End of Configure
15195