e8f39f926dc61180184ba00d236e716371d290a3
[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 Mon Jan 31 21:17:50 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 #define I_STDLIB $i_stdlib
7210 #ifdef I_STDLIB
7211 #include <stdlib.h>
7212 #endif
7213
7214 int
7215 checkit(expect, got)
7216 char *expect;
7217 char *got;
7218 {
7219     if (strcmp(expect, got)) {
7220                 printf("%s oddity:  Expected %s, got %s\n",
7221                         myname, expect, got);
7222                 exit(1);
7223         }
7224 }
7225
7226 int main()
7227
7228         char buf[64]; 
7229         buf[63] = '\0';
7230
7231         /* This must be 1st test on (which?) platform */
7232         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7233         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7234         checkit("0.1", buf);
7235
7236         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7237         checkit("1", buf);
7238
7239         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7240         checkit("0", buf);
7241
7242         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7243         checkit("-1", buf);
7244
7245         /* Some Linux gcvt's give 1.e+5 here. */
7246         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7247         checkit("100000", buf);
7248         
7249         /* Some Linux gcvt's give -1.e+5 here. */
7250         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7251         checkit("-100000", buf);
7252
7253         exit(0);
7254 }
7255 EOP
7256         case "$d_Gconvert" in
7257         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7258         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7259         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7260         *) xxx_list='gconvert gcvt sprintf' ;;
7261         esac
7262
7263         case "$d_longdbl$uselongdouble" in
7264         definedefine) xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7265         esac
7266
7267         for xxx_convert in $xxx_list; do
7268                 echo "Trying $xxx_convert..."
7269                 $rm -f try try$_o
7270                 set try -DTRY_$xxx_convert
7271                 if eval $compile; then
7272                         echo "$xxx_convert() found." >&4
7273                         if ./try; then
7274                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
7275                                 break;
7276                         else
7277                                 echo "...But $xxx_convert didn't work as I expected."
7278                         fi
7279                 else
7280                         echo "$xxx_convert NOT found." >&4
7281                 fi
7282         done
7283                 
7284         case "$xxx_convert" in
7285         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7286         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7287         qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7288         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7289         esac
7290 fi
7291
7292 echo " "
7293
7294 if $test X"$d_longdbl" = X"$define"; then
7295
7296 echo "Checking how to print long doubles..." >&4
7297
7298 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7299         $cat >try.c <<'EOCP'
7300 #include <sys/types.h>
7301 #include <stdio.h>
7302 int main() {
7303   double d = 123.456;
7304   printf("%.3f\n", d);
7305 }
7306 EOCP
7307         set try
7308         if eval $compile; then
7309                 yyy=`./try$exe_ext`
7310                 case "$yyy" in
7311                 123.456)
7312                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7313                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7314                         echo "We will use %f."
7315                         ;;
7316                 esac
7317         fi
7318 fi
7319
7320 if $test X"$sPRIfldbl" = X; then
7321         $cat >try.c <<'EOCP'
7322 #include <sys/types.h>
7323 #include <stdio.h>
7324 int main() {
7325   long double d = 123.456;
7326   printf("%.3llf\n", d);
7327 }
7328 EOCP
7329         set try
7330         if eval $compile; then
7331                 yyy=`./try$exe_ext`
7332                 case "$yyy" in
7333                 123.456)
7334                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7335                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7336                         echo "We will use %llf."
7337                         ;;
7338                 esac
7339         fi
7340 fi
7341
7342 if $test X"$sPRIfldbl" = X; then
7343         $cat >try.c <<'EOCP'
7344 #include <sys/types.h>
7345 #include <stdio.h>
7346 int main() {
7347   long double d = 123.456;
7348   printf("%.3Lf\n", d);
7349 }
7350 EOCP
7351         set try
7352         if eval $compile; then
7353                 yyy=`./try$exe_ext`
7354                 case "$yyy" in
7355                 123.456)
7356                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7357                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7358                         echo "We will use %Lf."
7359                         ;;
7360                 esac
7361         fi
7362 fi
7363
7364 if $test X"$sPRIfldbl" = X; then
7365         $cat >try.c <<'EOCP'
7366 #include <sys/types.h>
7367 #include <stdio.h>
7368 int main() {
7369   long double d = 123.456;
7370   printf("%.3lf\n", d);
7371 }
7372 EOCP
7373         set try
7374         if eval $compile; then
7375                 yyy=`./try$exe_ext`
7376                 case "$yyy" in
7377                 123.456)
7378                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7379                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7380                         echo "We will use %lf."
7381                         ;;
7382                 esac
7383         fi
7384 fi
7385
7386 if $test X"$sPRIfldbl" = X; then
7387         echo "Cannot figure out how to print long doubles." >&4
7388 fi
7389
7390 $rm -f try try.*
7391
7392 fi # d_longdbl
7393
7394 case "$sPRIfldbl" in
7395 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7396         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7397         ;;
7398 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7399         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7400         ;;
7401 esac
7402
7403 : Initialize h_fcntl
7404 h_fcntl=false
7405
7406 : Initialize h_sysfile
7407 h_sysfile=false
7408
7409 : access call always available on UNIX
7410 set access d_access
7411 eval $inlibc
7412
7413 : locate the flags for 'access()'
7414 case "$d_access" in
7415 "$define")
7416         echo " "
7417         $cat >access.c <<'EOCP'
7418 #include <sys/types.h>
7419 #ifdef I_FCNTL
7420 #include <fcntl.h>
7421 #endif
7422 #ifdef I_SYS_FILE
7423 #include <sys/file.h>
7424 #endif
7425 #ifdef I_UNISTD
7426 #include <unistd.h>
7427 #endif
7428 int main() {
7429         exit(R_OK);
7430 }
7431 EOCP
7432         : check sys/file.h first, no particular reason here
7433         if $test `./findhdr sys/file.h` && \
7434                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7435                 h_sysfile=true;
7436                 echo "<sys/file.h> defines the *_OK access constants." >&4
7437         elif $test `./findhdr fcntl.h` && \
7438                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7439                 h_fcntl=true;
7440                 echo "<fcntl.h> defines the *_OK access constants." >&4
7441         elif $test `./findhdr unistd.h` && \
7442                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7443                 echo "<unistd.h> defines the *_OK access constants." >&4
7444         else
7445                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7446         fi
7447         ;;
7448 esac
7449 $rm -f access*
7450
7451 : see if accessx exists
7452 set accessx d_accessx
7453 eval $inlibc
7454
7455 : see if alarm exists
7456 set alarm d_alarm
7457 eval $inlibc
7458
7459 : see if atolf exists
7460 set atolf d_atolf
7461 eval $inlibc
7462
7463 : see if atoll exists
7464 set atoll d_atoll
7465 eval $inlibc
7466
7467 : Look for GNU-cc style attribute checking
7468 echo " "
7469 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7470 $cat >attrib.c <<'EOCP'
7471 #include <stdio.h>
7472 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7473 EOCP
7474 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7475         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7476                 echo "Your C compiler doesn't fully support __attribute__."
7477                 val="$undef"
7478         else
7479                 echo "Your C compiler supports __attribute__."
7480                 val="$define"
7481         fi
7482 else
7483         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7484         val="$undef"
7485 fi
7486 set d_attribut
7487 eval $setvar
7488 $rm -f attrib*
7489
7490 : see if bcmp exists
7491 set bcmp d_bcmp
7492 eval $inlibc
7493
7494 : see if bcopy exists
7495 set bcopy d_bcopy
7496 eval $inlibc
7497
7498 : see if this is a unistd.h system
7499 set unistd.h i_unistd
7500 eval $inhdr
7501
7502 : see if getpgrp exists
7503 set getpgrp d_getpgrp
7504 eval $inlibc
7505
7506 case "$d_getpgrp" in
7507 "$define")
7508         echo " "
7509         echo "Checking to see which flavor of getpgrp is in use..."
7510         $cat >set.c <<EOP
7511 #$i_unistd I_UNISTD
7512 #include <sys/types.h>
7513 #ifdef I_UNISTD
7514 #  include <unistd.h>
7515 #endif
7516 int main()
7517 {
7518         if (getuid() == 0) {
7519                 printf("(I see you are running Configure as super-user...)\n");
7520                 setuid(1);
7521         }
7522 #ifdef TRY_BSD_PGRP
7523         if (getpgrp(1) == 0)
7524                 exit(0);
7525 #else
7526         if (getpgrp() > 0)
7527                 exit(0);
7528 #endif
7529         exit(1);
7530 }
7531 EOP
7532         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7533                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7534                 val="$define"
7535         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7536                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7537                 val="$undef"
7538         else
7539                 echo "I can't seem to compile and run the test program."
7540                 if ./usg; then
7541                         xxx="a USG one, i.e. you use getpgrp()."
7542                 else
7543                         # SVR4 systems can appear rather BSD-ish.
7544                         case "$i_unistd" in
7545                         $undef)
7546                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7547                                 val="$define"
7548                                 ;;
7549                         $define)
7550                                 xxx="probably a USG one, i.e. you use getpgrp()."
7551                                 val="$undef"
7552                                 ;;
7553                         esac
7554                 fi
7555                 echo "Assuming your getpgrp is $xxx" >&4
7556         fi
7557         ;;
7558 *) val="$undef";;
7559 esac
7560 set d_bsdgetpgrp
7561 eval $setvar
7562 $rm -f set set.c
7563
7564 : see if setpgrp exists
7565 set setpgrp d_setpgrp
7566 eval $inlibc
7567
7568 case "$d_setpgrp" in
7569 "$define")
7570         echo " "
7571         echo "Checking to see which flavor of setpgrp is in use..."
7572         $cat >set.c <<EOP
7573 #$i_unistd I_UNISTD
7574 #include <sys/types.h>
7575 #ifdef I_UNISTD
7576 #  include <unistd.h>
7577 #endif
7578 int main()
7579 {
7580         if (getuid() == 0) {
7581                 printf("(I see you are running Configure as super-user...)\n");
7582                 setuid(1);
7583         }
7584 #ifdef TRY_BSD_PGRP
7585         if (-1 == setpgrp(1, 1))
7586                 exit(0);
7587 #else
7588         if (setpgrp() != -1)
7589                 exit(0);
7590 #endif
7591         exit(1);
7592 }
7593 EOP
7594         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7595                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7596                 val="$define"
7597         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7598                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7599                 val="$undef"
7600         else
7601                 echo "(I can't seem to compile and run the test program.)"
7602                 if ./usg; then
7603                         xxx="a USG one, i.e. you use setpgrp()."
7604                 else
7605                         # SVR4 systems can appear rather BSD-ish.
7606                         case "$i_unistd" in
7607                         $undef)
7608                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7609                                 val="$define"
7610                                 ;;
7611                         $define)
7612                                 xxx="probably a USG one, i.e. you use setpgrp()."
7613                                 val="$undef"
7614                                 ;;
7615                         esac
7616                 fi
7617                 echo "Assuming your setpgrp is $xxx" >&4
7618         fi
7619         ;;
7620 *) val="$undef";;
7621 esac
7622 set d_bsdsetpgrp
7623 eval $setvar
7624 $rm -f set set.c
7625 : see if bzero exists
7626 set bzero d_bzero
7627 eval $inlibc
7628
7629 : see if signal is declared as pointer to function returning int or void
7630 echo " "
7631 xxx=`./findhdr signal.h`
7632 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7633 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7634         echo "You have int (*signal())() instead of void." >&4
7635         val="$undef"
7636 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
7637         echo "You have void (*signal())()." >&4
7638         val="$define"
7639 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7640         echo "You have int (*signal())() instead of void." >&4
7641         val="$undef"
7642 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7643         echo "You have void (*signal())()." >&4
7644         val="$define"
7645 else
7646         case "$d_voidsig" in
7647         '')
7648         echo "I can't determine whether signal handler returns void or int..." >&4
7649                 dflt=void
7650                 rp="What type does your signal handler return?"
7651                 . ./myread
7652                 case "$ans" in
7653                 v*) val="$define";;
7654                 *) val="$undef";;
7655                 esac;;
7656         "$define")
7657                 echo "As you already told me, signal handler returns void." >&4
7658                 val="$define"
7659                 ;;
7660         *)      echo "As you already told me, signal handler returns int." >&4
7661                 val="$undef"
7662                 ;;
7663         esac
7664 fi
7665 set d_voidsig
7666 eval $setvar
7667 case "$d_voidsig" in
7668 "$define") signal_t="void";;
7669 *) signal_t="int";;
7670 esac
7671 $rm -f $$.tmp
7672
7673 : check for ability to cast large floats to 32-bit ints.
7674 echo " "
7675 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7676 if $test "$intsize" -ge 4; then
7677         xxx=int
7678 else
7679         xxx=long
7680 fi
7681 $cat >try.c <<EOCP
7682 #include <stdio.h>
7683 #include <sys/types.h>
7684 #include <signal.h>
7685 $signal_t blech(s) int s; { exit(3); }
7686 int main()
7687 {
7688         $xxx i32;
7689         double f, g;
7690         int result = 0;
7691         char str[16];
7692         signal(SIGFPE, blech);
7693
7694         /* Don't let compiler optimize the test away.  Store the number 
7695            in a writable string for gcc to pass to sscanf under HP/UX.
7696         */
7697         sprintf(str, "2147483647");
7698         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7699         g = 10 * f;
7700         i32  = ($xxx) g;
7701
7702         /* x86 processors will probably give 0x8000 0000, which is a
7703        sign change.  We don't want that.  We want to mimic SPARC
7704            behavior here, which is to preserve the sign and give
7705            back 0x7fff ffff.
7706         */
7707         if (i32 != ($xxx) f)
7708                 result |= 1;
7709         exit(result);
7710 }
7711 EOCP
7712 set try
7713 if eval $compile_ok; then
7714         ./try
7715         yyy=$?
7716 else
7717         echo "(I can't seem to compile the test program--assuming it can't)"
7718         yyy=1
7719 fi
7720 case "$yyy" in
7721 0)      val="$define"
7722         echo "Yup, it can."
7723         ;;
7724 *)      val="$undef"
7725         echo "Nope, it can't."
7726         ;;
7727 esac
7728 set d_casti32
7729 eval $setvar
7730 $rm -f try try.*
7731
7732 : check for ability to cast negative floats to unsigned
7733 echo " "
7734 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7735 $cat >try.c <<EOCP
7736 #include <stdio.h>
7737 #include <sys/types.h>
7738 #include <signal.h>
7739 $signal_t blech(s) int s; { exit(7); }
7740 $signal_t blech_in_list(s) int s; { exit(4); }
7741 unsigned long dummy_long(p) unsigned long p; { return p; }
7742 unsigned int dummy_int(p) unsigned int p; { return p; }
7743 unsigned short dummy_short(p) unsigned short p; { return p; }
7744 int main()
7745 {
7746         double f;
7747         unsigned long along;
7748         unsigned int aint;
7749         unsigned short ashort;
7750         int result = 0;
7751         char str[16];
7752         
7753         /* Frustrate gcc-2.7.2's optimizer which failed this test with
7754            a direct f = -123. assignment.  gcc-2.8.0 reportedly
7755            optimized the whole file away
7756         */
7757         /* Store the number in a writable string for gcc to pass to 
7758            sscanf under HP/UX.
7759         */
7760         sprintf(str, "-123");
7761         sscanf(str, "%lf", &f);  /* f = -123.; */
7762
7763         signal(SIGFPE, blech);
7764         along = (unsigned long)f;
7765         aint = (unsigned int)f;
7766         ashort = (unsigned short)f;
7767         if (along != (unsigned long)-123)
7768                 result |= 1;
7769         if (aint != (unsigned int)-123)
7770                 result |= 1;
7771         if (ashort != (unsigned short)-123)
7772                 result |= 1;
7773         sprintf(str, "1073741824.");
7774         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
7775         f = f + f;
7776         along = 0;
7777         along = (unsigned long)f;
7778         if (along != 0x80000000)
7779                 result |= 2;
7780         f -= 1.;
7781         along = 0;
7782         along = (unsigned long)f;
7783         if (along != 0x7fffffff)
7784                 result |= 1;
7785         f += 2.;
7786         along = 0;
7787         along = (unsigned long)f;
7788         if (along != 0x80000001)
7789                 result |= 2;
7790         if (result)
7791                 exit(result);
7792         signal(SIGFPE, blech_in_list);
7793         sprintf(str, "123.");
7794         sscanf(str, "%lf", &f);  /* f = 123.; */
7795         along = dummy_long((unsigned long)f);
7796         aint = dummy_int((unsigned int)f);
7797         ashort = dummy_short((unsigned short)f);
7798         if (along != (unsigned long)123)
7799                 result |= 4;
7800         if (aint != (unsigned int)123)
7801                 result |= 4;
7802         if (ashort != (unsigned short)123)
7803                 result |= 4;
7804         exit(result);
7805
7806 }
7807 EOCP
7808 set try
7809 if eval $compile_ok; then
7810         ./try
7811         castflags=$?
7812 else
7813         echo "(I can't seem to compile the test program--assuming it can't)"
7814         castflags=7
7815 fi
7816 case "$castflags" in
7817 0)      val="$define"
7818         echo "Yup, it can."
7819         ;;
7820 *)      val="$undef"
7821         echo "Nope, it can't."
7822         ;;
7823 esac
7824 set d_castneg
7825 eval $setvar
7826 $rm -f try.*
7827
7828 : see if vprintf exists
7829 echo " "
7830 if set vprintf val -f d_vprintf; eval $csym; $val; then
7831         echo 'vprintf() found.' >&4
7832         val="$define"
7833         $cat >vprintf.c <<'EOF'
7834 #include <varargs.h>
7835
7836 int main() { xxx("foo"); }
7837
7838 xxx(va_alist)
7839 va_dcl
7840 {
7841         va_list args;
7842         char buf[10];
7843
7844         va_start(args);
7845         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
7846 }
7847 EOF
7848         set vprintf
7849         if eval $compile && ./vprintf; then
7850                 echo "Your vsprintf() returns (int)." >&4
7851                 val2="$undef"
7852         else
7853                 echo "Your vsprintf() returns (char*)." >&4
7854                 val2="$define"
7855         fi
7856 else
7857         echo 'vprintf() NOT found.' >&4
7858                 val="$undef"
7859                 val2="$undef"
7860 fi
7861 set d_vprintf
7862 eval $setvar
7863 val=$val2
7864 set d_charvspr
7865 eval $setvar
7866
7867 : see if chown exists
7868 set chown d_chown
7869 eval $inlibc
7870
7871 : see if chroot exists
7872 set chroot d_chroot
7873 eval $inlibc
7874
7875 : see if chsize exists
7876 set chsize d_chsize
7877 eval $inlibc
7878
7879 : check for const keyword
7880 echo " "
7881 echo 'Checking to see if your C compiler knows about "const"...' >&4
7882 $cat >const.c <<'EOCP'
7883 typedef struct spug { int drokk; } spug;
7884 int main()
7885 {
7886         const char *foo;
7887         const spug y;
7888 }
7889 EOCP
7890 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7891         val="$define"
7892         echo "Yup, it does."
7893 else
7894         val="$undef"
7895         echo "Nope, it doesn't."
7896 fi
7897 set d_const
7898 eval $setvar
7899
7900 : see if crypt exists
7901 echo " "
7902 if set crypt val -f d_crypt; eval $csym; $val; then
7903         echo 'crypt() found.' >&4
7904         val="$define"
7905         cryptlib=''
7906 else
7907         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7908         if $test -z "$cryptlib"; then
7909                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7910         else
7911                 cryptlib=-lcrypt
7912         fi
7913         if $test -z "$cryptlib"; then
7914                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7915         else
7916                 cryptlib=-lcrypt
7917         fi
7918         if $test -z "$cryptlib"; then
7919                 cryptlib=`./loc libcrypt$_a "" $libpth`
7920         else
7921                 cryptlib=-lcrypt
7922         fi
7923         if $test -z "$cryptlib"; then
7924                 echo 'crypt() NOT found.' >&4
7925                 val="$undef"
7926         else
7927                 val="$define"
7928         fi
7929 fi
7930 set d_crypt
7931 eval $setvar
7932
7933 : get csh whereabouts
7934 case "$csh" in
7935 'csh') val="$undef" ;;
7936 *) val="$define" ;;
7937 esac
7938 set d_csh
7939 eval $setvar
7940 : Respect a hint or command line value for full_csh.
7941 case "$full_csh" in
7942 '') full_csh=$csh ;;
7943 esac
7944
7945 : see if cuserid exists
7946 set cuserid d_cuserid
7947 eval $inlibc
7948
7949 : see if this is a limits.h system
7950 set limits.h i_limits
7951 eval $inhdr
7952
7953 : see if this is a float.h system
7954 set float.h i_float
7955 eval $inhdr
7956
7957 : See if number of significant digits in a double precision number is known
7958 echo " "
7959 $cat >dbl_dig.c <<EOM
7960 #$i_limits I_LIMITS
7961 #$i_float I_FLOAT
7962 #ifdef I_LIMITS
7963 #include <limits.h>
7964 #endif
7965 #ifdef I_FLOAT
7966 #include <float.h>
7967 #endif
7968 #ifdef DBL_DIG
7969 printf("Contains DBL_DIG");
7970 #endif
7971 EOM
7972 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7973 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7974         echo "DBL_DIG found." >&4
7975         val="$define"
7976 else
7977         echo "DBL_DIG NOT found." >&4
7978         val="$undef"
7979 fi
7980 $rm -f dbl_dig.?
7981 set d_dbl_dig
7982 eval $setvar
7983
7984 : see if difftime exists
7985 set difftime d_difftime
7986 eval $inlibc
7987
7988 : see if this is a dirent system
7989 echo " "
7990 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7991         val="$define"
7992         echo "<dirent.h> found." >&4
7993 else
7994         val="$undef"
7995         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7996                 echo "<sys/dir.h> found." >&4
7997                 echo " "
7998         else
7999                 xinc=`./findhdr sys/ndir.h`
8000         fi
8001         echo "<dirent.h> NOT found." >&4
8002 fi
8003 set i_dirent
8004 eval $setvar
8005
8006 : Look for type of directory structure.
8007 echo " "
8008 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8009
8010 case "$direntrytype" in
8011 ''|' ')
8012         case "$i_dirent" in
8013         $define) guess1='struct dirent' ;;
8014         *) guess1='struct direct'  ;;
8015         esac
8016         ;;
8017 *)      guess1="$direntrytype"
8018         ;;
8019 esac
8020
8021 case "$guess1" in
8022 'struct dirent') guess2='struct direct' ;;
8023 *) guess2='struct dirent' ;;
8024 esac
8025                 
8026 if $contains "$guess1" try.c >/dev/null 2>&1; then
8027         direntrytype="$guess1"
8028         echo "Your directory entries are $direntrytype." >&4
8029 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8030         direntrytype="$guess2"
8031         echo "Your directory entries seem to be $direntrytype." >&4
8032 else
8033         echo "I don't recognize your system's directory entries." >&4
8034         rp="What type is used for directory entries on this system?"
8035         dflt="$guess1"
8036         . ./myread
8037         direntrytype="$ans"
8038 fi
8039 $rm -f try.c
8040
8041
8042 : see if the directory entry stores field length
8043 echo " "
8044 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8045 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8046         echo "Good, your directory entry keeps length information in d_namlen." >&4
8047         val="$define"
8048 else
8049         echo "Your directory entry does not know about the d_namlen field." >&4
8050         val="$undef"
8051 fi
8052 set d_dirnamlen
8053 eval $setvar
8054 $rm -f try.c
8055
8056 : see if dlerror exists
8057 xxx_runnm="$runnm"
8058 runnm=false
8059 set dlerror d_dlerror
8060 eval $inlibc
8061 runnm="$xxx_runnm"
8062
8063 : see if dlfcn is available
8064 set dlfcn.h i_dlfcn
8065 eval $inhdr
8066
8067 case "$usedl" in
8068 $define|y|true)
8069         $cat << EOM
8070
8071 On a few systems, the dynamically loaded modules that perl generates and uses
8072 will need a different extension than shared libs. The default will probably
8073 be appropriate.
8074
8075 EOM
8076         case "$dlext" in
8077         '')     dflt="$so" ;;
8078         *)      dflt="$dlext" ;;
8079         esac
8080         rp='What is the extension of dynamically loaded modules'
8081         . ./myread
8082         dlext="$ans"
8083         ;;
8084 *)
8085         dlext="none"
8086         ;;
8087 esac
8088
8089 : Check if dlsym need a leading underscore
8090 echo " "
8091 val="$undef"
8092
8093 case "$dlsrc" in
8094 dl_dlopen.xs)
8095         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8096         $cat >dyna.c <<'EOM'
8097 fred () { }
8098 EOM
8099
8100 $cat >fred.c<<EOM
8101
8102 #include <stdio.h>
8103 #$i_dlfcn I_DLFCN
8104 #ifdef I_DLFCN
8105 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8106 #else
8107 #include <sys/types.h>
8108 #include <nlist.h>
8109 #include <link.h>
8110 #endif
8111
8112 extern int fred() ;
8113
8114 int main()
8115 {
8116     void * handle ;
8117     void * symbol ;
8118 #ifndef RTLD_LAZY
8119     int mode = 1 ;
8120 #else
8121     int mode = RTLD_LAZY ;
8122 #endif
8123     handle = dlopen("./dyna.$dlext", mode) ;
8124     if (handle == NULL) {
8125         printf ("1\n") ;
8126         fflush (stdout) ;
8127         exit(0);
8128     }
8129     symbol = dlsym(handle, "fred") ;
8130     if (symbol == NULL) {
8131         /* try putting a leading underscore */
8132         symbol = dlsym(handle, "_fred") ;
8133         if (symbol == NULL) {
8134             printf ("2\n") ;
8135             fflush (stdout) ;
8136             exit(0);
8137         }
8138         printf ("3\n") ;
8139     }
8140     else
8141         printf ("4\n") ;
8142     fflush (stdout) ;
8143     exit(0);
8144 }
8145 EOM
8146         : Call the object file tmp-dyna.o in case dlext=o.
8147         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8148                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8149                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8150                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8151                 xxx=`./fred`
8152                 case $xxx in
8153                 1)      echo "Test program failed using dlopen." >&4
8154                         echo "Perhaps you should not use dynamic loading." >&4;;
8155                 2)      echo "Test program failed using dlsym." >&4
8156                         echo "Perhaps you should not use dynamic loading." >&4;;
8157                 3)      echo "dlsym needs a leading underscore" >&4
8158                         val="$define" ;;
8159                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8160                 esac
8161         else
8162                 echo "I can't compile and run the test program." >&4
8163                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8164         fi
8165         ;;
8166 esac
8167                 
8168 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8169
8170 set d_dlsymun
8171 eval $setvar
8172
8173 hasproto='varname=$1; func=$2; shift; shift;
8174 while $test $# -ge 2; do
8175         case "$1" in
8176         $define) echo "#include <$2>";;
8177         esac ;
8178     shift 2;
8179 done > try.c;
8180 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8181 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8182         echo "$func() prototype found.";
8183         val="$define";
8184 else
8185         echo "$func() prototype NOT found.";
8186         val="$undef";
8187 fi;
8188 set $varname;
8189 eval $setvar;
8190 $rm -f try.c tryout.c'
8191
8192 : see if prototype for drand48 is available
8193 echo " "
8194 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8195 eval $hasproto
8196
8197 : see if dup2 exists
8198 set dup2 d_dup2
8199 eval $inlibc
8200
8201 : see if eaccess exists
8202 set eaccess d_eaccess
8203 eval $inlibc
8204
8205 : see if endgrent exists
8206 set endgrent d_endgrent
8207 eval $inlibc
8208
8209 : see if endhostent exists
8210 set endhostent d_endhent
8211 eval $inlibc
8212
8213 : see if endnetent exists
8214 set endnetent d_endnent
8215 eval $inlibc
8216
8217 : see if endprotoent exists
8218 set endprotoent d_endpent
8219 eval $inlibc
8220
8221 : see if endpwent exists
8222 set endpwent d_endpwent
8223 eval $inlibc
8224
8225 : see if endservent exists
8226 set endservent d_endsent
8227 eval $inlibc
8228
8229 : see if endspent exists
8230 set endspent d_endspent
8231 eval $inlibc
8232
8233 : Locate the flags for 'open()'
8234 echo " "
8235 $cat >open3.c <<'EOCP'
8236 #include <sys/types.h>
8237 #ifdef I_FCNTL
8238 #include <fcntl.h>
8239 #endif
8240 #ifdef I_SYS_FILE
8241 #include <sys/file.h>
8242 #endif
8243 int main() {
8244         if(O_RDONLY);
8245 #ifdef O_TRUNC
8246         exit(0);
8247 #else
8248         exit(1);
8249 #endif
8250 }
8251 EOCP
8252 : check sys/file.h first to get FREAD on Sun
8253 if $test `./findhdr sys/file.h` && \
8254                 set open3 -DI_SYS_FILE && eval $compile; then
8255         h_sysfile=true;
8256         echo "<sys/file.h> defines the O_* constants..." >&4
8257         if ./open3; then
8258                 echo "and you have the 3 argument form of open()." >&4
8259                 val="$define"
8260         else
8261                 echo "but not the 3 argument form of open().  Oh, well." >&4
8262                 val="$undef"
8263         fi
8264 elif $test `./findhdr fcntl.h` && \
8265                 set open3 -DI_FCNTL && eval $compile; then
8266         h_fcntl=true;
8267         echo "<fcntl.h> defines the O_* constants..." >&4
8268         if ./open3; then
8269                 echo "and you have the 3 argument form of open()." >&4
8270                 val="$define"
8271         else
8272                 echo "but not the 3 argument form of open().  Oh, well." >&4
8273                 val="$undef"
8274         fi
8275 else
8276         val="$undef"
8277         echo "I can't find the O_* constant definitions!  You got problems." >&4
8278 fi
8279 set d_open3
8280 eval $setvar
8281 $rm -f open3*
8282
8283 : see which of string.h or strings.h is needed
8284 echo " "
8285 strings=`./findhdr string.h`
8286 if $test "$strings" && $test -r "$strings"; then
8287         echo "Using <string.h> instead of <strings.h>." >&4
8288         val="$define"
8289 else
8290         val="$undef"
8291         strings=`./findhdr strings.h`
8292         if $test "$strings" && $test -r "$strings"; then
8293                 echo "Using <strings.h> instead of <string.h>." >&4
8294         else
8295                 echo "No string header found -- You'll surely have problems." >&4
8296         fi
8297 fi
8298 set i_string
8299 eval $setvar
8300 case "$i_string" in
8301 "$undef") strings=`./findhdr strings.h`;;
8302 *)        strings=`./findhdr string.h`;;
8303 esac
8304
8305 : check for non-blocking I/O stuff
8306 case "$h_sysfile" in
8307 true) echo "#include <sys/file.h>" > head.c;;
8308 *)
8309         case "$h_fcntl" in
8310         true) echo "#include <fcntl.h>" > head.c;;
8311         *) echo "#include <sys/fcntl.h>" > head.c;;
8312         esac
8313         ;;
8314 esac
8315 echo " "
8316 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8317 case "$o_nonblock" in
8318 '')
8319         $cat head.c > try.c
8320         $cat >>try.c <<'EOCP'
8321 #include <stdio.h>
8322 int main() {
8323 #ifdef O_NONBLOCK
8324         printf("O_NONBLOCK\n");
8325         exit(0);
8326 #endif
8327 #ifdef O_NDELAY
8328         printf("O_NDELAY\n");
8329         exit(0);
8330 #endif
8331 #ifdef FNDELAY
8332         printf("FNDELAY\n");
8333         exit(0);
8334 #endif
8335         exit(0);
8336 }
8337 EOCP
8338         set try
8339         if eval $compile_ok; then
8340                 o_nonblock=`./try`
8341                 case "$o_nonblock" in
8342                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8343                 *) echo "Seems like we can use $o_nonblock.";;
8344                 esac
8345         else
8346                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8347         fi
8348         ;;
8349 *) echo "Using $hint value $o_nonblock.";;
8350 esac
8351 $rm -f try try.* .out core
8352
8353 echo " "
8354 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8355 case "$eagain" in
8356 '')
8357         $cat head.c > try.c
8358         $cat >>try.c <<EOCP
8359 #include <errno.h>
8360 #include <sys/types.h>
8361 #include <signal.h>
8362 #include <stdio.h> 
8363 #define MY_O_NONBLOCK $o_nonblock
8364 #ifndef errno  /* XXX need better Configure test */
8365 extern int errno;
8366 #endif
8367 #$i_unistd I_UNISTD
8368 #ifdef I_UNISTD
8369 #include <unistd.h>
8370 #endif
8371 #ifdef $i_string
8372 #include <string.h>
8373 #else
8374 #include <strings.h>
8375 #endif
8376 $signal_t blech(x) int x; { exit(3); }
8377 EOCP
8378         $cat >> try.c <<'EOCP'
8379 int main()
8380 {
8381         int pd[2];
8382         int pu[2];
8383         char buf[1];
8384         char string[100];
8385
8386         pipe(pd);       /* Down: child -> parent */
8387         pipe(pu);       /* Up: parent -> child */
8388         if (0 != fork()) {
8389                 int ret;
8390                 close(pd[1]);   /* Parent reads from pd[0] */
8391                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8392                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8393                         exit(1);
8394                 signal(SIGALRM, blech);
8395                 alarm(5);
8396                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8397                         exit(2);
8398                 sprintf(string, "%d\n", ret);
8399                 write(2, string, strlen(string));
8400                 alarm(0);
8401 #ifdef EAGAIN
8402                 if (errno == EAGAIN) {
8403                         printf("EAGAIN\n");
8404                         goto ok;
8405                 }
8406 #endif
8407 #ifdef EWOULDBLOCK
8408                 if (errno == EWOULDBLOCK)
8409                         printf("EWOULDBLOCK\n");
8410 #endif
8411         ok:
8412                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8413                 sleep(2);                               /* Give it time to close our pipe */
8414                 alarm(5);
8415                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8416                 alarm(0);
8417                 sprintf(string, "%d\n", ret);
8418                 write(3, string, strlen(string));
8419                 exit(0);
8420         }
8421
8422         close(pd[0]);                   /* We write to pd[1] */
8423         close(pu[1]);                   /* We read from pu[0] */
8424         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8425         close(pd[1]);                   /* Pipe pd is now fully closed! */
8426         exit(0);                                /* Bye bye, thank you for playing! */
8427 }
8428 EOCP
8429         set try
8430         if eval $compile_ok; then
8431                 echo "$startsh" >mtry
8432                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8433                 chmod +x mtry
8434                 ./mtry >/dev/null 2>&1
8435                 case $? in
8436                 0) eagain=`$cat try.out`;;
8437                 1) echo "Could not perform non-blocking setting!";;
8438                 2) echo "I did a successful read() for something that was not there!";;
8439                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8440                 *) echo "Something terribly wrong happened during testing.";;
8441                 esac
8442                 rd_nodata=`$cat try.ret`
8443                 echo "A read() system call with no data present returns $rd_nodata."
8444                 case "$rd_nodata" in
8445                 0|-1) ;;
8446                 *)
8447                         echo "(That's peculiar, fixing that to be -1.)"
8448                         rd_nodata=-1
8449                         ;;
8450                 esac
8451                 case "$eagain" in
8452                 '')
8453                         echo "Forcing errno EAGAIN on read() with no data available."
8454                         eagain=EAGAIN
8455                         ;;
8456                 *)
8457                         echo "Your read() sets errno to $eagain when no data is available."
8458                         ;;
8459                 esac
8460                 status=`$cat try.err`
8461                 case "$status" in
8462                 0) echo "And it correctly returns 0 to signal EOF.";;
8463                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8464                 *) echo "However, your read() returns '$status' on EOF??";;
8465                 esac
8466                 val="$define"
8467                 if test "$status" = "$rd_nodata"; then
8468                         echo "WARNING: you can't distinguish between EOF and no data!"
8469                         val="$undef"
8470                 fi
8471         else
8472                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8473                 eagain=EAGAIN
8474         fi
8475         set d_eofnblk
8476         eval $setvar
8477         ;;
8478 *)
8479         echo "Using $hint value $eagain."
8480         echo "Your read() returns $rd_nodata when no data is present."
8481         case "$d_eofnblk" in
8482         "$define") echo "And you can see EOF because read() returns 0.";;
8483         "$undef") echo "But you can't see EOF status from read() returned value.";;
8484         *)
8485                 echo "(Assuming you can't see EOF status from read anyway.)"
8486                 d_eofnblk=$undef
8487                 ;;
8488         esac
8489         ;;
8490 esac
8491 $rm -f try try.* .out core head.c mtry
8492
8493 : see if fchmod exists
8494 set fchmod d_fchmod
8495 eval $inlibc
8496
8497 : see if fchown exists
8498 set fchown d_fchown
8499 eval $inlibc
8500
8501 : see if this is an fcntl system
8502 set fcntl d_fcntl
8503 eval $inlibc
8504
8505 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8506 while $test $# -ge 2; do
8507         case "$1" in
8508         $define) echo "#include <$2>";;
8509         esac ;
8510     shift 2;
8511 done > try.c;
8512 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8513 set try;
8514 if eval $compile; then
8515         val="$define";
8516 else
8517         val="$undef";
8518 fi;
8519 set $varname;
8520 eval $setvar;
8521 $rm -f try.c try.o'
8522
8523 socketlib=''
8524 sockethdr=''
8525 : see whether socket exists
8526 echo " "
8527 $echo $n "Hmm... $c" >&4
8528 if set socket val -f d_socket; eval $csym; $val; then
8529         echo "Looks like you have Berkeley networking support." >&4
8530         d_socket="$define"
8531         if set setsockopt val -f; eval $csym; $val; then
8532                 d_oldsock="$undef"
8533         else
8534                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8535                 d_oldsock="$define"
8536         fi
8537 else
8538         if $contains socklib libc.list >/dev/null 2>&1; then
8539                 echo "Looks like you have Berkeley networking support." >&4
8540                 d_socket="$define"
8541                 : we will have to assume that it supports the 4.2 BSD interface
8542                 d_oldsock="$undef"
8543         else
8544                 echo "You don't have Berkeley networking in libc$_a..." >&4
8545                 if test "X$d_socket" = "X$define"; then
8546                    echo "...but you seem to believe that you have sockets." >&4
8547                 else
8548                         for net in net socket
8549                         do
8550                                 if test -f /usr/lib/lib$net$_a; then
8551                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8552                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8553                                         if $contains socket libc.list >/dev/null 2>&1; then
8554                                                 d_socket="$define"
8555                                                 socketlib="-l$net"
8556                                                 case "$net" in
8557                                                 net)
8558                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8559                                                         sockethdr="-I/usr/netinclude"
8560                                                         ;;
8561                                                 esac
8562                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8563                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8564                                                         d_oldsock="$undef"
8565                                                 else
8566                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8567                                                         d_oldsock="$define"
8568                                                 fi
8569                                                 break
8570                                         fi
8571                                 fi
8572                         done
8573                         if test "X$d_socket" != "X$define"; then
8574                            echo "or anywhere else I see." >&4
8575                            d_socket="$undef"
8576                            d_oldsock="$undef"
8577                         fi
8578                 fi
8579         fi
8580 fi
8581
8582 : see if socketpair exists
8583 set socketpair d_sockpair
8584 eval $inlibc
8585
8586
8587 echo " "
8588 echo "Checking the availability of certain socket constants..." >& 4
8589 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8590         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8591         $cat >try.c <<EOF
8592 #include <sys/types.h>
8593 #include <sys/socket.h>
8594 int main() {
8595     int i = $ENUM;
8596 }
8597 EOF
8598         val="$undef"
8599         set try; if eval $compile; then
8600                 val="$define"
8601         fi
8602         set d_${enum}; eval $setvar
8603         $rm -f try.c try
8604 done
8605
8606 : see if sys/select.h has to be included
8607 set sys/select.h i_sysselct
8608 eval $inhdr
8609
8610 : see if we should include time.h, sys/time.h, or both
8611 echo " "
8612 if test "X$timeincl" = X; then
8613         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8614         $echo $n "I'm now running the test program...$c"
8615         $cat >try.c <<'EOCP'
8616 #include <sys/types.h>
8617 #ifdef I_TIME
8618 #include <time.h>
8619 #endif
8620 #ifdef I_SYSTIME
8621 #ifdef SYSTIMEKERNEL
8622 #define KERNEL
8623 #endif
8624 #include <sys/time.h>
8625 #endif
8626 #ifdef I_SYSSELECT
8627 #include <sys/select.h>
8628 #endif
8629 int main()
8630 {
8631         struct tm foo;
8632 #ifdef S_TIMEVAL
8633         struct timeval bar;
8634 #endif
8635 #ifdef S_TIMEZONE
8636         struct timezone tzp;
8637 #endif
8638         if (foo.tm_sec == foo.tm_sec)
8639                 exit(0);
8640 #ifdef S_TIMEVAL
8641         if (bar.tv_sec == bar.tv_sec)
8642                 exit(0);
8643 #endif
8644         exit(1);
8645 }
8646 EOCP
8647         flags=''
8648         for s_timezone in '-DS_TIMEZONE' ''; do
8649         sysselect=''
8650         for s_timeval in '-DS_TIMEVAL' ''; do
8651         for i_systimek in '' '-DSYSTIMEKERNEL'; do
8652         for i_time in '' '-DI_TIME'; do
8653         for i_systime in '-DI_SYSTIME' ''; do
8654                 case "$flags" in
8655                 '') $echo $n ".$c"
8656                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8657                         if eval $compile; then
8658                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8659                                 shift
8660                                 flags="$*"
8661                                 echo " "
8662                                 $echo $n "Succeeded with $flags$c"
8663                         fi
8664                         ;;
8665                 esac
8666         done
8667         done
8668         done
8669         done
8670         done
8671         timeincl=''
8672         echo " "
8673         case "$flags" in
8674         *SYSTIMEKERNEL*) i_systimek="$define"
8675                 timeincl=`./findhdr sys/time.h`
8676                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8677         *) i_systimek="$undef";;
8678         esac
8679         case "$flags" in
8680         *I_TIME*) i_time="$define"
8681                 timeincl=`./findhdr time.h`" $timeincl"
8682                 echo "We'll include <time.h>." >&4;;
8683         *) i_time="$undef";;
8684         esac
8685         case "$flags" in
8686         *I_SYSTIME*) i_systime="$define"
8687                 timeincl=`./findhdr sys/time.h`" $timeincl"
8688                 echo "We'll include <sys/time.h>." >&4;;
8689         *) i_systime="$undef";;
8690         esac
8691         $rm -f try.c try
8692 fi
8693
8694 : check for fd_set items
8695 $cat <<EOM
8696
8697 Checking to see how well your C compiler handles fd_set and friends ...
8698 EOM
8699 $cat >fd_set.c <<EOCP
8700 #$i_systime I_SYS_TIME
8701 #$i_sysselct I_SYS_SELECT
8702 #$d_socket HAS_SOCKET
8703 #include <sys/types.h>
8704 #ifdef HAS_SOCKET
8705 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8706 #endif
8707 #ifdef I_SYS_TIME
8708 #include <sys/time.h>
8709 #endif
8710 #ifdef I_SYS_SELECT
8711 #include <sys/select.h>
8712 #endif
8713 int main() {
8714         fd_set fds;
8715
8716 #ifdef TRYBITS
8717         if(fds.fds_bits);
8718 #endif
8719
8720 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8721         exit(0);
8722 #else
8723         exit(1);
8724 #endif
8725 }
8726 EOCP
8727 set fd_set -DTRYBITS
8728 if eval $compile; then
8729         d_fds_bits="$define"
8730         d_fd_set="$define"
8731         echo "Well, your system knows about the normal fd_set typedef..." >&4
8732         if ./fd_set; then
8733                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8734                 d_fd_macros="$define"
8735         else
8736                 $cat >&4 <<'EOM'
8737 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
8738 EOM
8739                 d_fd_macros="$undef"
8740         fi
8741 else
8742         $cat <<'EOM'
8743 Hmm, your compiler has some difficulty with fd_set.  Checking further...
8744 EOM
8745         set fd_set
8746         if eval $compile; then
8747                 d_fds_bits="$undef"
8748                 d_fd_set="$define"
8749                 echo "Well, your system has some sort of fd_set available..." >&4
8750                 if ./fd_set; then
8751                         echo "and you have the normal fd_set macros." >&4
8752                         d_fd_macros="$define"
8753                 else
8754                         $cat <<'EOM'
8755 but not the normal fd_set macros!  Gross!  More work for me...
8756 EOM
8757                         d_fd_macros="$undef"
8758                 fi
8759         else
8760         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
8761                 d_fd_set="$undef"
8762                 d_fds_bits="$undef"
8763                 d_fd_macros="$undef"
8764         fi
8765 fi
8766 $rm -f fd_set*
8767
8768 : see if fgetpos exists
8769 set fgetpos d_fgetpos
8770 eval $inlibc
8771
8772 : see if flock exists
8773 set flock d_flock
8774 eval $inlibc
8775
8776 : see if fork exists
8777 set fork d_fork
8778 eval $inlibc
8779
8780 : see if pathconf exists
8781 set pathconf d_pathconf
8782 eval $inlibc
8783
8784 : see if fpathconf exists
8785 set fpathconf d_fpathconf
8786 eval $inlibc
8787
8788
8789 : check for off64_t
8790 echo " "
8791 echo "Checking to see if your system supports off64_t..." >&4
8792 $cat >try.c <<EOCP
8793 #include <sys/types.h>
8794 #include <unistd.h>
8795 int main() { off64_t x = 7; }'
8796 EOCP
8797 set try
8798 if eval $compile; then
8799         val="$define"
8800         echo "Yes, it does."
8801 else
8802         val="$undef"
8803         echo "No, it doesn't."
8804         case "$lseeksize" in
8805         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
8806         esac
8807 fi
8808 $rm -f try.* try
8809 set d_off64_t
8810 eval $setvar
8811
8812 : check for fpos64_t
8813 echo " "
8814 echo "Checking to see if your system supports fpos64_t..." >&4
8815 $cat >try.c <<EOCP
8816 #include <sys/stdio.h>
8817 int main() { fpos64_t x x = 7; }'
8818 EOCP
8819 set try
8820 if eval $compile; then
8821         val="$define"
8822         echo "Yes, it does."
8823 else
8824         val="$undef"
8825         echo "No, it doesn't."
8826         case "$fpossize" in
8827         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
8828         esac
8829 fi
8830 $rm -f try.* try
8831 set d_fpos64_t
8832 eval $setvar
8833
8834 hasstruct='varname=$1; struct=$2; shift; shift;
8835 while $test $# -ge 2; do
8836         case "$1" in
8837         $define) echo "#include <$2>";;
8838         esac ;
8839     shift 2;
8840 done > try.c;
8841 echo "int main () { struct $struct foo; }" >> try.c;
8842 set try;
8843 if eval $compile; then
8844         val="$define";
8845 else
8846         val="$undef";
8847 fi;
8848 set $varname;
8849 eval $setvar;
8850 $rm -f try.c try.o'
8851
8852 : see if this is a sys/param system
8853 set sys/param.h i_sysparam
8854 eval $inhdr
8855
8856 : see if this is a sys/mount.h system
8857 set sys/mount.h i_sysmount
8858 eval $inhdr
8859
8860 : see if sys/types.h has to be included
8861 set sys/types.h i_systypes
8862 eval $inhdr
8863
8864
8865 echo " "
8866 echo "Checking to see if your system supports struct fs_data..." >&4
8867 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
8868 eval $hasstruct
8869 case "$d_fs_data_s" in
8870 "$define")      echo "Yes, it does."   ;;
8871 *)              echo "No, it doesn't." ;;
8872 esac
8873
8874 : see if fseeko exists
8875 set fseeko d_fseeko
8876 eval $inlibc
8877 case "$longsize" in
8878 8) echo "(Your long is 64 bits, so in a pinch you could use fseek.)" ;;
8879 esac
8880
8881 : see if fsetpos exists
8882 set fsetpos d_fsetpos
8883 eval $inlibc
8884
8885
8886 : see if fstatfs exists
8887 set fstatfs d_fstatfs
8888 eval $inlibc
8889
8890
8891 : see if statvfs exists
8892 set statvfs d_statvfs
8893 eval $inlibc
8894
8895 : see if fstatvfs exists
8896 set fstatvfs d_fstatvfs
8897 eval $inlibc
8898
8899
8900 : see if ftello exists
8901 set ftello d_ftello
8902 eval $inlibc
8903 case "$longsize" in
8904 8) echo "(Your long is 64 bits, so in a pinch you could use ftell.)" ;;
8905 esac
8906
8907 : see if getgrent exists
8908 set getgrent d_getgrent
8909 eval $inlibc
8910
8911 : see if gethostbyaddr exists
8912 set gethostbyaddr d_gethbyaddr
8913 eval $inlibc
8914
8915 : see if gethostbyname exists
8916 set gethostbyname d_gethbyname
8917 eval $inlibc
8918
8919 : see if gethostent exists
8920 set gethostent d_gethent
8921 eval $inlibc
8922
8923 : see how we will look up host name
8924 echo " "
8925 call=''
8926 if set gethostname val -f d_gethname; eval $csym; $val; then
8927         echo 'gethostname() found.' >&4
8928         d_gethname="$define"
8929         call=gethostname
8930 fi
8931 if set uname val -f d_uname; eval $csym; $val; then
8932         if ./xenix; then
8933                 $cat <<'EOM'
8934 uname() was found, but you're running xenix, and older versions of xenix
8935 have a broken uname(). If you don't really know whether your xenix is old
8936 enough to have a broken system call, use the default answer.
8937
8938 EOM
8939                 dflt=y
8940                 case "$d_uname" in
8941                 "$define") dflt=n;;
8942                 esac
8943                 rp='Is your uname() broken?'
8944                 . ./myread
8945                 case "$ans" in
8946                 n*) d_uname="$define"; call=uname;;
8947                 esac
8948         else
8949                 echo 'uname() found.' >&4
8950                 d_uname="$define"
8951                 case "$call" in
8952                 '') call=uname ;;
8953                 esac
8954         fi
8955 fi
8956 case "$d_gethname" in
8957 '') d_gethname="$undef";;
8958 esac
8959 case "$d_uname" in
8960 '') d_uname="$undef";;
8961 esac
8962 case "$d_uname$d_gethname" in
8963 *define*)
8964         dflt=n
8965         cat <<EOM
8966  
8967 Every now and then someone has a $call() that lies about the hostname
8968 but can't be fixed for political or economic reasons.  If you wish, I can
8969 pretend $call() isn't there and maybe compute hostname at run-time
8970 thanks to the '$phostname' command.
8971
8972 EOM
8973         rp="Shall I ignore $call() from now on?"
8974         . ./myread
8975         case "$ans" in
8976         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8977         esac;;
8978 esac
8979 case "$phostname" in
8980 '') aphostname='';;
8981 *) case "$aphostname" in
8982         /*) ;;
8983         *) set X $phostname
8984                 shift
8985                 file=$1
8986                 shift
8987                 file=`./loc $file $file $pth`
8988                 aphostname=`echo $file $*`
8989                 ;;
8990         esac
8991         ;;
8992 esac
8993 case "$d_uname$d_gethname" in
8994 *define*) ;;
8995 *)
8996         case "$phostname" in
8997         '')
8998                 echo "There will be no way for $package to get your hostname." >&4;;
8999         *)
9000         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9001                 ;;
9002         esac;;
9003 esac
9004 case "$d_phostname" in
9005 '') d_phostname="$undef";;
9006 esac
9007
9008 : see if this is a netdb.h system
9009 set netdb.h i_netdb
9010 eval $inhdr
9011
9012 : see if prototypes for various gethostxxx netdb.h functions are available
9013 echo " "
9014 set d_gethostprotos gethostent $i_netdb netdb.h
9015 eval $hasproto
9016
9017 : see if getlogin exists
9018 set getlogin d_getlogin
9019 eval $inlibc
9020
9021 : see if getmnt exists
9022 set getmnt d_getmnt
9023 eval $inlibc
9024
9025 : see if getmntent exists
9026 set getmntent d_getmntent
9027 eval $inlibc
9028
9029 : see if getnetbyaddr exists
9030 set getnetbyaddr d_getnbyaddr
9031 eval $inlibc
9032
9033 : see if getnetbyname exists
9034 set getnetbyname d_getnbyname
9035 eval $inlibc
9036
9037 : see if getnetent exists
9038 set getnetent d_getnent
9039 eval $inlibc
9040
9041 : see if prototypes for various getnetxxx netdb.h functions are available
9042 echo " "
9043 set d_getnetprotos getnetent $i_netdb netdb.h
9044 eval $hasproto
9045
9046
9047 : see if getprotobyname exists
9048 set getprotobyname d_getpbyname
9049 eval $inlibc
9050
9051 : see if getprotobynumber exists
9052 set getprotobynumber d_getpbynumber
9053 eval $inlibc
9054
9055 : see if getprotoent exists
9056 set getprotoent d_getpent
9057 eval $inlibc
9058
9059 : see if getpgid exists
9060 set getpgid d_getpgid
9061 eval $inlibc
9062
9063 : see if getpgrp2 exists
9064 set getpgrp2 d_getpgrp2
9065 eval $inlibc
9066
9067 : see if getppid exists
9068 set getppid d_getppid
9069 eval $inlibc
9070
9071 : see if getpriority exists
9072 set getpriority d_getprior
9073 eval $inlibc
9074
9075 : see if prototypes for various getprotoxxx netdb.h functions are available
9076 echo " "
9077 set d_getprotoprotos getprotoent $i_netdb netdb.h
9078 eval $hasproto
9079
9080 : see if getpwent exists
9081 set getpwent d_getpwent
9082 eval $inlibc
9083
9084
9085 : see if getservbyname exists
9086 set getservbyname d_getsbyname
9087 eval $inlibc
9088
9089 : see if getservbyport exists
9090 set getservbyport d_getsbyport
9091 eval $inlibc
9092
9093 : see if getservent exists
9094 set getservent d_getsent
9095 eval $inlibc
9096
9097 : see if prototypes for various getservxxx netdb.h functions are available
9098 echo " "
9099 set d_getservprotos getservent $i_netdb netdb.h
9100 eval $hasproto
9101
9102 : see if getspent exists
9103 set getspent d_getspent
9104 eval $inlibc
9105
9106 : see if getspnam exists
9107 set getspnam d_getspnam
9108 eval $inlibc
9109
9110 : see if gettimeofday or ftime exists
9111 set gettimeofday d_gettimeod
9112 eval $inlibc
9113 case "$d_gettimeod" in
9114 "$undef")
9115         set ftime d_ftime 
9116         eval $inlibc
9117         ;;
9118 *)
9119         val="$undef"; set d_ftime; eval $setvar
9120         ;;
9121 esac
9122 case "$d_gettimeod$d_ftime" in
9123 "$undef$undef")
9124         echo " "
9125         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9126         ;;
9127 esac
9128
9129 : see if this is an grp system
9130 set grp.h i_grp
9131 eval $inhdr
9132
9133 case "$i_grp" in
9134 $define)
9135         xxx=`./findhdr grp.h`
9136         $cppstdin $cppflags $cppminus < $xxx >$$.h
9137
9138         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9139                 val="$define"
9140         else
9141                 val="$undef"
9142         fi
9143         set d_grpasswd
9144         eval $setvar
9145
9146         $rm -f $$.h
9147         ;;
9148 *)
9149         val="$undef";
9150         set d_grpasswd; eval $setvar
9151         ;;
9152 esac
9153
9154 : see if hasmntopt exists
9155 set hasmntopt d_hasmntopt
9156 eval $inlibc
9157
9158 : see if this is a netinet/in.h or sys/in.h system
9159 set netinet/in.h i_niin sys/in.h i_sysin
9160 eval $inhdr
9161
9162 : see if arpa/inet.h has to be included
9163 set arpa/inet.h i_arpainet
9164 eval $inhdr
9165
9166 : see if htonl --and friends-- exists
9167 val=''
9168 set htonl val
9169 eval $inlibc
9170
9171 : Maybe they are macros.
9172 case "$val" in
9173 $undef)
9174         $cat >htonl.c <<EOM
9175 #include <stdio.h>
9176 #include <sys/types.h>
9177 #$i_niin I_NETINET_IN
9178 #$i_sysin I_SYS_IN
9179 #$i_arpainet I_ARPA_INET
9180 #ifdef I_NETINET_IN
9181 #include <netinet/in.h>
9182 #endif
9183 #ifdef I_SYS_IN
9184 #include <sys/in.h>
9185 #endif
9186 #ifdef I_ARPA_INET
9187 #include <arpa/inet.h>
9188 #endif
9189 #ifdef htonl
9190 printf("Defined as a macro.");
9191 #endif
9192 EOM
9193         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9194         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9195                 val="$define"
9196                 echo "But it seems to be defined as a macro." >&4
9197         fi
9198         $rm -f htonl.?
9199         ;;
9200 esac
9201 set d_htonl
9202 eval $setvar
9203
9204 : index or strchr
9205 echo " "
9206 if set index val -f; eval $csym; $val; then
9207         if set strchr val -f d_strchr; eval $csym; $val; then
9208                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9209                         val="$define"
9210                         vali="$undef"
9211                         echo "strchr() found." >&4
9212                 else
9213                         val="$undef"
9214                         vali="$define"
9215                         echo "index() found." >&4
9216                 fi
9217         else
9218                 val="$undef"
9219                 vali="$define"
9220                 echo "index() found." >&4
9221         fi
9222 else
9223         if set strchr val -f d_strchr; eval $csym; $val; then
9224                 val="$define"
9225                 vali="$undef"
9226                 echo "strchr() found." >&4
9227         else
9228                 echo "No index() or strchr() found!" >&4
9229                 val="$undef"
9230                 vali="$undef"
9231         fi
9232 fi
9233 set d_strchr; eval $setvar
9234 val="$vali"
9235 set d_index; eval $setvar
9236
9237 : check whether inet_aton exists
9238 set inet_aton d_inetaton
9239 eval $inlibc
9240
9241 : Look for isascii
9242 echo " "
9243 $cat >isascii.c <<'EOCP'
9244 #include <stdio.h>
9245 #include <ctype.h>
9246 int main() {
9247         int c = 'A';
9248         if (isascii(c))
9249                 exit(0);
9250         else
9251                 exit(1);
9252 }
9253 EOCP
9254 set isascii
9255 if eval $compile; then
9256         echo "isascii() found." >&4
9257         val="$define"
9258 else
9259         echo "isascii() NOT found." >&4
9260         val="$undef"
9261 fi
9262 set d_isascii
9263 eval $setvar
9264 $rm -f isascii*
9265
9266 : see if killpg exists
9267 set killpg d_killpg
9268 eval $inlibc
9269
9270 : see if lchown exists
9271 echo " "
9272 $cat > try.c <<'EOCP'
9273 /* System header to define __stub macros and hopefully few prototypes,
9274     which can conflict with char lchown(); below.  */
9275 #include <assert.h>
9276 /* Override any gcc2 internal prototype to avoid an error.  */
9277 /* We use char because int might match the return type of a gcc2
9278    builtin and then its argument prototype would still apply.  */
9279 char lchown();
9280 int main() {
9281     /*  The GNU C library defines this for functions which it implements
9282         to always fail with ENOSYS.  Some functions are actually named
9283         something starting with __ and the normal name is an alias.  */
9284 #if defined (__stub_lchown) || defined (__stub___lchown)
9285 choke me
9286 #else
9287 lchown();
9288 #endif
9289 ; return 0; }
9290 EOCP
9291 set try
9292 if eval $compile; then
9293     $echo "lchown() found." >&4
9294     val="$define"
9295 else
9296     $echo "lchown() NOT found." >&4
9297     val="$undef"
9298 fi
9299 set d_lchown
9300 eval $setvar
9301
9302 : See if number of significant digits in a double precision number is known
9303 echo " "
9304 $cat >ldbl_dig.c <<EOM
9305 #$i_limits I_LIMITS
9306 #$i_float I_FLOAT
9307 #ifdef I_LIMITS
9308 #include <limits.h>
9309 #endif
9310 #ifdef I_FLOAT
9311 #include <float.h>
9312 #endif
9313 #ifdef LDBL_DIG
9314 printf("Contains LDBL_DIG");
9315 #endif
9316 EOM
9317 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9318 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9319         echo "LDBL_DIG found." >&4
9320         val="$define"
9321 else
9322         echo "LDBL_DIG NOT found." >&4
9323         val="$undef"
9324 fi
9325 $rm -f ldbl_dig.?
9326 set d_ldbl_dig
9327 eval $setvar
9328
9329 : see if link exists
9330 set link d_link
9331 eval $inlibc
9332
9333 : see if localeconv exists
9334 set localeconv d_locconv
9335 eval $inlibc
9336
9337 : see if lockf exists
9338 set lockf d_lockf
9339 eval $inlibc
9340
9341 : check for long long
9342 echo " "
9343 $echo $n "Checking to see if your system supports long long..." $c >&4
9344 echo 'int main() { long long x = 7; return 0; }' > try.c
9345 set try
9346 if eval $compile; then
9347         val="$define"
9348         echo " Yes, it does." >&4
9349 else
9350         val="$undef"
9351         echo " No, it doesn't." >&4
9352 fi
9353 $rm try.*
9354 set d_longlong
9355 eval $setvar
9356
9357 : check for length of long long
9358 case "${d_longlong}${longlongsize}" in
9359 $define)
9360         echo " "
9361         $echo $n "Checking to see how big your long longs are..." $c >&4
9362         $cat >try.c <<'EOCP'
9363 #include <stdio.h>
9364 int main()
9365 {
9366     printf("%d\n", (int)sizeof(long long));
9367     return(0);
9368 }
9369 EOCP
9370         set try
9371         if eval $compile_ok; then
9372                 longlongsize=`./try$exe_ext`
9373                 $echo " $longlongsize bytes." >&4
9374         else
9375                 dflt='8'
9376                 echo " "
9377                 echo "(I can't seem to compile the test program.  Guessing...)"
9378                 rp="What is the size of a long long (in bytes)?"
9379                 . ./myread
9380                 longlongsize="$ans"
9381         fi
9382         if $test "X$longsize" = "X$longlongsize"; then
9383                 echo "(That isn't any different from an ordinary long.)"
9384         fi      
9385         ;;
9386 esac
9387 $rm -f try.* try
9388
9389 : see if lstat exists
9390 set lstat d_lstat
9391 eval $inlibc
9392
9393 : see if mblen exists
9394 set mblen d_mblen
9395 eval $inlibc
9396
9397 : see if mbstowcs exists
9398 set mbstowcs d_mbstowcs
9399 eval $inlibc
9400
9401 : see if mbtowc exists
9402 set mbtowc d_mbtowc
9403 eval $inlibc
9404
9405 : see if memchr exists
9406 set memchr d_memchr
9407 eval $inlibc
9408
9409 : see if memcmp exists
9410 set memcmp d_memcmp
9411 eval $inlibc
9412
9413 : see if memcpy exists
9414 set memcpy d_memcpy
9415 eval $inlibc
9416
9417 : see if memmove exists
9418 set memmove d_memmove
9419 eval $inlibc
9420
9421 : see if memset exists
9422 set memset d_memset
9423 eval $inlibc
9424
9425 : see if mkdir exists
9426 set mkdir d_mkdir
9427 eval $inlibc
9428
9429 : see if mkfifo exists
9430 set mkfifo d_mkfifo
9431 eval $inlibc
9432
9433 : see if mktime exists
9434 set mktime d_mktime
9435 eval $inlibc
9436
9437 : see if msgctl exists
9438 set msgctl d_msgctl
9439 eval $inlibc
9440
9441 : see if msgget exists
9442 set msgget d_msgget
9443 eval $inlibc
9444
9445 : see if msgsnd exists
9446 set msgsnd d_msgsnd
9447 eval $inlibc
9448
9449 : see if msgrcv exists
9450 set msgrcv d_msgrcv
9451 eval $inlibc
9452
9453 : see how much of the 'msg*(2)' library is present.
9454 h_msg=true
9455 echo " "
9456 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9457 *"$undef"*) h_msg=false;;
9458 esac
9459 case "$osname" in
9460 freebsd)
9461     case "`ipcs 2>&1`" in
9462     "SVID messages"*"not configured"*)
9463         echo "Your $osname does not have the msg*(2) configured." >&4
9464         h_msg=false
9465         val="$undef"
9466         set msgctl d_msgctl
9467         eval $setvar
9468         set msgget d_msgget
9469         eval $setvar
9470         set msgsnd d_msgsnd
9471         eval $setvar
9472         set msgrcv d_msgrcv
9473         eval $setvar
9474         ;;
9475     esac
9476     ;;
9477 esac
9478 : we could also check for sys/ipc.h ...
9479 if $h_msg && $test `./findhdr sys/msg.h`; then
9480         echo "You have the full msg*(2) library." >&4
9481         val="$define"
9482 else
9483         echo "You don't have the full msg*(2) library." >&4
9484         val="$undef"
9485 fi
9486 set d_msg
9487 eval $setvar
9488
9489 : see if nice exists
9490 set nice d_nice
9491 eval $inlibc
9492
9493 : see if inttypes.h is available
9494 : we want a real compile instead of Inhdr because some systems
9495 : have an inttypes.h which includes non-existent headers
9496 echo " "
9497 $cat >try.c <<EOCP
9498 #include <inttypes.h>
9499 int main() {
9500         static int32_t foo32 = 0x12345678;
9501 }
9502 EOCP
9503 set try
9504 if eval $compile; then
9505         echo "<inttypes.h> found." >&4
9506         val="$define"
9507 else
9508         echo "<inttypes.h> NOT found." >&4
9509         val="$undef"
9510 fi
9511 $rm -f try.c try
9512 set i_inttypes
9513 eval $setvar
9514
9515 : check for int64_t
9516 echo " "
9517 $echo $n "Checking to see if your system supports int64_t...$c" >&4
9518 $cat >try.c <<EOCP
9519 #include <sys/types.h>
9520 #$i_inttypes I_INTTYPES
9521 #ifdef I_INTTYPES
9522 #include <inttypes.h>
9523 #endif
9524 int main() { int64_t x = 7; }
9525 EOCP
9526 set try
9527 if eval $compile; then
9528         val="$define"
9529         echo " Yes, it does." >&4
9530 else
9531         val="$undef"
9532         echo " No, it doesn't." >&4
9533 fi
9534 $rm -f try try.*
9535 set d_int64t
9536 eval $setvar
9537
9538
9539 echo " "
9540 echo "Checking which 64-bit integer type we could use..." >&4
9541
9542 case "$intsize" in
9543 8) val=int
9544    set quadtype
9545    eval $setvar
9546    val='"unsigned int"'
9547    set uquadtype
9548    eval $setvar
9549    quadkind=1
9550    ;;
9551 *) case "$longsize" in
9552    8) val=long
9553       set quadtype
9554       eval $setvar
9555       val='"unsigned long"'
9556       set uquadtype
9557       eval $setvar
9558       quadkind=2
9559       ;;
9560    *) case "$uselonglong:$d_longlong:$longlongsize" in
9561       define:define:8)
9562         val='"long long"'
9563         set quadtype
9564         eval $setvar
9565         val='"unsigned long long"'
9566         set uquadtype
9567         eval $setvar
9568         quadkind=3
9569         ;;
9570       *) case "$d_int64t" in
9571          define)
9572            val=int64_t
9573            set quadtype
9574            eval $setvar
9575            val=uint64_t
9576            set uquadtype
9577            eval $setvar
9578            quadkind=4
9579            ;;
9580          esac
9581          ;;
9582       esac
9583       ;;
9584    esac
9585    ;;
9586 esac
9587
9588 case "$quadtype" in
9589 '')     case "$uselonglong:$d_longlong:$longlongsize" in
9590         undef:define:8)
9591            echo "(You would have 'long long', but you are not using it.)" >&4 ;;
9592         *) echo "Alas, no 64-bit integer types in sight." >&4 ;;
9593         esac
9594         d_quad="$undef"
9595         ;;
9596 *)      if test X"$use64bits" = Xdefine -o X"$longsize" = X8; then
9597             verb="will"
9598         else
9599             verb="could"
9600         fi
9601         echo "We $verb use '$quadtype' for 64-bit integers." >&4
9602         d_quad="$define"
9603         ;;
9604 esac
9605
9606 : check for length of character
9607 echo " "
9608 case "$charsize" in
9609 '')
9610         echo "Checking to see how big your characters are (hey, you never know)..." >&4
9611         $cat >try.c <<'EOCP'
9612 #include <stdio.h>
9613 int main()
9614 {
9615     printf("%d\n", (int)sizeof(char));
9616     exit(0);
9617 }
9618 EOCP
9619         set try
9620         if eval $compile_ok; then
9621                 dflt=`./try`
9622         else
9623                 dflt='1'
9624                 echo "(I can't seem to compile the test program.  Guessing...)"
9625         fi
9626         ;;
9627 *)
9628         dflt="$charsize"
9629         ;;
9630 esac
9631 rp="What is the size of a character (in bytes)?"
9632 . ./myread
9633 charsize="$ans"
9634 $rm -f try.c try
9635
9636
9637 echo " "
9638 $echo "Choosing the C types to be used for Perl's internal types..." >&4
9639
9640 case "$use64bits:$d_quad:$quadtype" in
9641 define:define:?*)
9642         ivtype="$quadtype"
9643         uvtype="$uquadtype"
9644         ivsize=8
9645         uvsize=8
9646         ;;
9647 *)      ivtype="long"
9648         uvtype="unsigned long"
9649         ivsize=$longsize
9650         uvsize=$longsize
9651         ;;
9652 esac
9653
9654 case "$uselongdouble:$d_longdbl" in
9655 define:define)
9656         nvtype="long double"
9657         nvsize=$longdblsize
9658         ;;
9659 *)      nvtype=double
9660         nvsize=$doublesize
9661         ;;
9662 esac
9663
9664 $echo "(IV will be "$ivtype", $ivsize bytes)"
9665 $echo "(UV will be "$uvtype", $uvsize bytes)"
9666 $echo "(NV will be "$nvtype", $nvsize bytes)"
9667
9668 $cat >try.c <<EOCP
9669 #$i_inttypes I_INTTYPES
9670 #ifdef I_INTTYPES
9671 #include <inttypes.h>
9672 #endif
9673 #include <stdio.h>
9674 int main() {
9675 #ifdef INT8
9676    int8_t i =  INT8_MAX;
9677   uint8_t u = UINT8_MAX;
9678   printf("int8_t\n");
9679 #endif
9680 #ifdef INT16
9681    int16_t i =  INT16_MAX;
9682   uint16_t i = UINT16_MAX;
9683   printf("int16_t\n");
9684 #endif
9685 #ifdef INT32
9686    int32_t i =  INT32_MAX;
9687   uint32_t u = UINT32_MAX;
9688   printf("int32_t\n");
9689 #endif
9690 }
9691 EOCP
9692
9693 case "$i8type" in
9694 '')     case "$charsize" in
9695         1)      i8type=char
9696                 u8type="unsigned char"
9697                 i8size=$charsize
9698                 u8size=$charsize
9699                 ;;
9700         esac
9701         ;;
9702 esac
9703 case "$i8type" in
9704 '')     set try -DINT8
9705         if eval $compile; then
9706                 case "`./try$exe_ext`" in
9707                 int8_t) i8type=int8_t
9708                         u8type=uint8_t
9709                         i8size=1
9710                         u8size=1
9711                         ;;
9712                 esac
9713         fi
9714         ;;
9715 esac
9716 case "$i8type" in
9717 '')     if $test $charsize -ge 1; then
9718                 i8type=char
9719                 u8type="unsigned char"
9720                 i8size=$charsize
9721                 u8size=$charsize
9722         fi
9723         ;;
9724 esac
9725
9726 case "$i16type" in
9727 '')     case "$shortsize" in
9728         2)      i16type=short
9729                 u16type="unsigned short"
9730                 i16size=$shortsize
9731                 u16size=$shortsize
9732                 ;;
9733         esac
9734         ;;
9735 esac
9736 case "$i16type" in
9737 '')     set try -DINT16
9738         if eval $compile; then
9739                 case "`./try$exe_ext`" in
9740                 int16_t)
9741                         i16type=int16_t
9742                         u16type=uint16_t
9743                         i16size=2
9744                         u16size=2
9745                         ;;
9746                 esac
9747         fi
9748         ;;
9749 esac
9750 case "$i16type" in
9751 '')     if $test $shortsize -ge 2; then
9752                 i16type=short
9753                 u16type="unsigned short"
9754                 i16size=$shortsize
9755                 u16size=$shortsize
9756         fi
9757         ;;
9758 esac
9759
9760 case "$i32type" in
9761 '')     case "$longsize" in
9762         4)      i32type=long
9763                 u32type="unsigned long"
9764                 i32size=$longsize
9765                 u32size=$longsize
9766                 ;;
9767         *)      case "$intsize" in
9768                 4)      i32type=int
9769                         u32type="unsigned int"
9770                         i32size=$intsize
9771                         u32size=$intsize
9772                         ;;
9773                 esac
9774                 ;;
9775         esac
9776         ;;
9777 esac
9778 case "$i32type" in
9779 '')     set try -DINT32
9780         if eval $compile; then
9781                 case "`./try$exe_ext`" in
9782                 int32_t)
9783                         i32type=int32_t
9784                         u32type=uint32_t
9785                         i32size=4
9786                         u32size=4
9787                         ;;
9788                 esac
9789         fi
9790         ;;
9791 esac
9792 case "$i32type" in
9793 '')     if $test $intsize -ge 4; then
9794                 i32type=int
9795                 u32type="unsigned int"
9796                 i32size=$intsize
9797                 u32size=$intsize
9798         fi
9799         ;;
9800 esac
9801
9802 case "$i64type" in
9803 '')     case "$d_quad:$quadtype" in
9804         define:?*)
9805                 i64type="$quadtype"
9806                 u64type="$uquadtype"
9807                 i64size=8
9808                 u64size=8
9809                 ;;
9810         esac
9811         ;;
9812 esac
9813
9814 $echo "Checking whether your NVs can preserve your UVs..." >&4
9815 $cat <<EOP >try.c
9816 #include <stdio.h>
9817 int main() {
9818     $uvtype k = ($uvtype)~0, l;
9819     $nvtype d;
9820     l = k;
9821     d = ($nvtype)l;
9822     l = ($uvtype)d;
9823     if (l == k)
9824        printf("preserve\n");
9825     exit(0);
9826 }
9827 EOP
9828 set try
9829 if eval $compile; then
9830         case "`./try$exe_ext`" in
9831         preserve) d_nv_preserves_uv="$define" ;;
9832         esac
9833 fi      
9834 case "$d_nv_preserves_uv" in
9835 $define) $echo "Yes, they can."  2>&1 ;;
9836 *)       $echo "No, they can't." 2>&1
9837          d_nv_preserves_uv="$undef"
9838          ;;
9839 esac
9840
9841 $rm -f try.* try
9842
9843 : see if POSIX threads are available
9844 set pthread.h i_pthread
9845 eval $inhdr
9846
9847
9848
9849
9850 : how to create joinable pthreads
9851 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
9852         echo " "
9853         echo "Checking what constant to use for creating joinable pthreads..." >&4 
9854         $cat >try.c <<'EOCP'
9855 #include <pthread.h>
9856 int main() {
9857     int detachstate = JOINABLE;
9858 }
9859 EOCP
9860         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
9861         if eval $compile; then
9862                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
9863                 val="$undef" # Yes, undef.
9864                 set d_old_pthread_create_joinable
9865                 eval $setvar
9866                 val=""
9867                 set old_pthread_create_joinable
9868                 eval $setvar
9869         else
9870                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
9871                 if eval $compile; then
9872                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
9873                         val="$define"
9874                         set d_old_pthread_create_joinable
9875                         eval $setvar
9876                         val=PTHREAD_CREATE_UNDETACHED
9877                         set old_pthread_create_joinable
9878                         eval $setvar
9879                 else            
9880                         set try -DJOINABLE=__UNDETACHED
9881                         if eval $compile; then
9882                                 echo "You seem to use __UNDETACHED." >&4
9883                                 val="$define"
9884                                 set d_old_pthread_create_joinable
9885                                 eval $setvar
9886                                 val=__UNDETACHED
9887                                 set old_pthread_create_joinable
9888                                 eval $setvar
9889                         else
9890                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
9891                                 val="$define"
9892                                 set d_old_pthread_create_joinable
9893                                 eval $setvar
9894                                 val=0
9895                                 set old_pthread_create_joinable
9896                                 eval $setvar
9897                         fi
9898                 fi
9899         fi
9900         $rm -f try try.*
9901 else
9902     d_old_pthread_create_joinable="$undef"
9903     old_pthread_create_joinable=""
9904 fi
9905
9906 : see if pause exists
9907 set pause d_pause
9908 eval $inlibc
9909
9910 : see if pipe exists
9911 set pipe d_pipe
9912 eval $inlibc
9913
9914 : see if poll exists
9915 set poll d_poll
9916 eval $inlibc
9917
9918
9919 : see whether the various POSIXish _yields exist
9920 $cat >try.c <<EOP
9921 #include <pthread.h>
9922 #include <stdio.h>
9923 int main() {
9924 #ifdef SCHED_YIELD
9925         sched_yield();
9926 #else
9927 #ifdef PTHREAD_YIELD
9928         pthread_yield();
9929 #else
9930 #ifdef PTHREAD_YIELD_NULL
9931         pthread_yield(NULL);
9932 #endif
9933 #endif
9934 #endif
9935 }
9936 EOP
9937 : see if sched_yield exists
9938 set try -DSCHED_YIELD
9939 if eval $compile; then
9940     val="$define"
9941     sched_yield='sched_yield()'
9942 else
9943     val="$undef"
9944 fi
9945 case "$usethreads" in
9946 $define)
9947         case "$val" in
9948         $define) echo 'sched_yield() found.' >&4        ;;
9949         *)       echo 'sched_yield() NOT found.' >&4    ;;
9950         esac
9951 esac
9952 set d_sched_yield
9953 eval $setvar
9954
9955 : see if pthread_yield exists
9956 set try -DPTHREAD_YIELD
9957 if eval $compile; then
9958     val="$define"
9959     case "$sched_yield" in
9960     '') sched_yield='pthread_yield()' ;;
9961     esac
9962 else
9963     set try -DPTHREAD_YIELD_NULL
9964     if eval $compile; then
9965         val="$define"
9966         case "$sched_yield" in
9967         '') sched_yield='pthread_yield(NULL)' ;;
9968         esac
9969     else
9970         val="$undef"
9971     fi
9972 fi
9973 case "$usethreads" in
9974 $define)
9975         case "$val" in
9976         $define) echo 'pthread_yield() found.' >&4      ;;
9977         *)       echo 'pthread_yield() NOT found.' >&4  ;;
9978         esac
9979         ;;
9980 esac
9981 set d_pthread_yield
9982 eval $setvar
9983
9984 case "$sched_yield" in
9985 '') sched_yield=undef ;;
9986 esac
9987
9988 $rm -f try try.*
9989
9990 : see if this is a pwd.h system
9991 set pwd.h i_pwd
9992 eval $inhdr
9993
9994 case "$i_pwd" in
9995 $define)
9996         xxx=`./findhdr pwd.h`
9997         $cppstdin $cppflags $cppminus < $xxx >$$.h
9998
9999         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10000                 val="$define"
10001         else
10002                 val="$undef"
10003         fi
10004         set d_pwquota
10005         eval $setvar
10006
10007         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10008                 val="$define"
10009         else
10010                 val="$undef"
10011         fi
10012         set d_pwage
10013         eval $setvar
10014
10015         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10016                 val="$define"
10017         else
10018                 val="$undef"
10019         fi
10020         set d_pwchange
10021         eval $setvar
10022
10023         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10024                 val="$define"
10025         else
10026                 val="$undef"
10027         fi
10028         set d_pwclass
10029         eval $setvar
10030
10031         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10032                 val="$define"
10033         else
10034                 val="$undef"
10035         fi
10036         set d_pwexpire
10037         eval $setvar
10038
10039         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10040                 val="$define"
10041         else
10042                 val="$undef"
10043         fi
10044         set d_pwcomment
10045         eval $setvar
10046
10047         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10048                 val="$define"
10049         else
10050                 val="$undef"
10051         fi
10052         set d_pwgecos
10053         eval $setvar
10054
10055         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10056                 val="$define"
10057         else
10058                 val="$undef"
10059         fi
10060         set d_pwpasswd
10061         eval $setvar
10062
10063         $rm -f $$.h
10064         ;;
10065 *)
10066         val="$undef"; 
10067         set d_pwquota; eval $setvar
10068         set d_pwage; eval $setvar
10069         set d_pwchange; eval $setvar
10070         set d_pwclass; eval $setvar
10071         set d_pwexpire; eval $setvar
10072         set d_pwcomment; eval $setvar
10073         set d_pwgecos; eval $setvar
10074         set d_pwpasswd; eval $setvar
10075         ;;
10076 esac
10077
10078 : see if readdir and friends exist
10079 set readdir d_readdir
10080 eval $inlibc
10081 set seekdir d_seekdir
10082 eval $inlibc
10083 set telldir d_telldir
10084 eval $inlibc
10085 set rewinddir d_rewinddir
10086 eval $inlibc
10087
10088 : see if readlink exists
10089 set readlink d_readlink
10090 eval $inlibc
10091
10092 : see if rename exists
10093 set rename d_rename
10094 eval $inlibc
10095
10096 : see if rmdir exists
10097 set rmdir d_rmdir
10098 eval $inlibc
10099
10100 : see if memory.h is available.
10101 val=''
10102 set memory.h val
10103 eval $inhdr
10104
10105 : See if it conflicts with string.h
10106 case "$val" in
10107 $define)
10108         case "$strings" in
10109         '') ;;
10110         *)
10111                 $cppstdin $cppflags $cppminus < $strings > mem.h
10112                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10113                         echo " "
10114                         echo "We won't be including <memory.h>."
10115                         val="$undef"
10116                 fi
10117                 $rm -f mem.h
10118                 ;;
10119         esac
10120 esac
10121 set i_memory
10122 eval $setvar
10123
10124 : can bcopy handle overlapping blocks?
10125 val="$undef"
10126 case "$d_bcopy" in
10127 "$define")
10128         echo " "
10129         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10130         $cat >try.c <<EOCP
10131 #$i_memory I_MEMORY
10132 #$i_stdlib I_STDLIB
10133 #$i_string I_STRING
10134 #$i_unistd I_UNISTD
10135 EOCP
10136         $cat >>try.c <<'EOCP'
10137 #include <stdio.h>
10138 #ifdef I_MEMORY
10139 #  include <memory.h>
10140 #endif
10141 #ifdef I_STDLIB
10142 #  include <stdlib.h>
10143 #endif
10144 #ifdef I_STRING
10145 #  include <string.h>
10146 #else
10147 #  include <strings.h>
10148 #endif
10149 #ifdef I_UNISTD
10150 #  include <unistd.h>  /* Needed for NetBSD */
10151 #endif
10152 int main()
10153 {
10154 char buf[128], abc[128];
10155 char *b;
10156 int len;
10157 int off;
10158 int align;
10159
10160 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10161
10162 for (align = 7; align >= 0; align--) {
10163         for (len = 36; len; len--) {
10164                 b = buf+align;
10165                 bcopy(abc, b, len);
10166                 for (off = 1; off <= len; off++) {
10167                         bcopy(b, b+off, len);
10168                         bcopy(b+off, b, len);
10169                         if (bcmp(b, abc, len))
10170                                 exit(1);
10171                 }
10172         }
10173 }
10174 exit(0);
10175 }
10176 EOCP
10177         set try
10178         if eval $compile_ok; then
10179                 if ./try 2>/dev/null; then
10180                         echo "Yes, it can."
10181                         val="$define"
10182                 else
10183                         echo "It can't, sorry."
10184                         case "$d_memmove" in
10185                         "$define") echo "But that's Ok since you have memmove()." ;;
10186                         esac
10187                 fi
10188         else
10189                 echo "(I can't compile the test program, so we'll assume not...)"
10190                 case "$d_memmove" in
10191                 "$define") echo "But that's Ok since you have memmove()." ;;
10192                 esac
10193         fi
10194         ;;
10195 esac
10196 $rm -f try.* try core
10197 set d_safebcpy
10198 eval $setvar
10199
10200 : can memcpy handle overlapping blocks?
10201 val="$undef"
10202 case "$d_memcpy" in
10203 "$define")
10204         echo " "
10205         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10206         $cat >try.c <<EOCP
10207 #$i_memory I_MEMORY
10208 #$i_stdlib I_STDLIB
10209 #$i_string I_STRING
10210 #$i_unistd I_UNISTD
10211 EOCP
10212         $cat >>try.c <<'EOCP'
10213 #include <stdio.h>
10214 #ifdef I_MEMORY
10215 #  include <memory.h>
10216 #endif
10217 #ifdef I_STDLIB
10218 #  include <stdlib.h>
10219 #endif
10220 #ifdef I_STRING
10221 #  include <string.h>
10222 #else
10223 #  include <strings.h>
10224 #endif
10225 #ifdef I_UNISTD
10226 #  include <unistd.h>  /* Needed for NetBSD */
10227 #endif
10228 int main()
10229 {
10230 char buf[128], abc[128];
10231 char *b;
10232 int len;
10233 int off;
10234 int align;
10235
10236 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10237    try to store the string in read-only memory. */
10238 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10239
10240 for (align = 7; align >= 0; align--) {
10241         for (len = 36; len; len--) {
10242                 b = buf+align;
10243                 memcpy(b, abc, len);
10244                 for (off = 1; off <= len; off++) {
10245                         memcpy(b+off, b, len);
10246                         memcpy(b, b+off, len);
10247                         if (memcmp(b, abc, len))
10248                                 exit(1);
10249                 }
10250         }
10251 }
10252 exit(0);
10253 }
10254 EOCP
10255         set try
10256         if eval $compile_ok; then
10257                 if ./try 2>/dev/null; then
10258                         echo "Yes, it can."
10259                         val="$define"
10260                 else
10261                         echo "It can't, sorry."
10262                         case "$d_memmove" in
10263                         "$define") echo "But that's Ok since you have memmove()." ;;
10264                         esac
10265                 fi
10266         else
10267                 echo "(I can't compile the test program, so we'll assume not...)"
10268                 case "$d_memmove" in
10269                 "$define") echo "But that's Ok since you have memmove()." ;;
10270                 esac
10271         fi
10272         ;;
10273 esac
10274 $rm -f try.* try core
10275 set d_safemcpy
10276 eval $setvar
10277
10278 : can memcmp be trusted to compare relative magnitude?
10279 val="$undef"
10280 case "$d_memcmp" in
10281 "$define")
10282         echo " "
10283         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10284         $cat >try.c <<EOCP
10285 #$i_memory I_MEMORY
10286 #$i_stdlib I_STDLIB
10287 #$i_string I_STRING
10288 #$i_unistd I_UNISTD
10289 EOCP
10290         $cat >>try.c <<'EOCP'
10291 #include <stdio.h>
10292 #ifdef I_MEMORY
10293 #  include <memory.h>
10294 #endif
10295 #ifdef I_STDLIB
10296 #  include <stdlib.h>
10297 #endif
10298 #ifdef I_STRING
10299 #  include <string.h>
10300 #else
10301 #  include <strings.h>
10302 #endif
10303 #ifdef I_UNISTD
10304 #  include <unistd.h>  /* Needed for NetBSD */
10305 #endif
10306 int main()
10307 {
10308 char a = -1;
10309 char b = 0;
10310 if ((a < b) && memcmp(&a, &b, 1) < 0)
10311         exit(1);
10312 exit(0);
10313 }
10314 EOCP
10315         set try
10316         if eval $compile_ok; then
10317                 if ./try 2>/dev/null; then
10318                         echo "Yes, it can."
10319                         val="$define"
10320                 else
10321                         echo "No, it can't (it uses signed chars)."
10322                 fi
10323         else
10324                 echo "(I can't compile the test program, so we'll assume not...)"
10325         fi
10326         ;;
10327 esac
10328 $rm -f try.* try core
10329 set d_sanemcmp
10330 eval $setvar
10331
10332 : see if select exists
10333 set select d_select
10334 eval $inlibc
10335
10336 : see if semctl exists
10337 set semctl d_semctl
10338 eval $inlibc
10339
10340 : see if semget exists
10341 set semget d_semget
10342 eval $inlibc
10343
10344 : see if semop exists
10345 set semop d_semop
10346 eval $inlibc
10347
10348 : see how much of the 'sem*(2)' library is present.
10349 h_sem=true
10350 echo " "
10351 case "$d_semctl$d_semget$d_semop" in
10352 *"$undef"*) h_sem=false;;
10353 esac
10354 case "$osname" in
10355 freebsd)
10356     case "`ipcs 2>&1`" in
10357     "SVID messages"*"not configured"*)
10358         echo "Your $osname does not have the sem*(2) configured." >&4
10359         h_sem=false
10360         val="$undef"
10361         set semctl d_semctl
10362         eval $setvar
10363         set semget d_semget
10364         eval $setvar
10365         set semop d_semop
10366         eval $setvar
10367         ;;
10368     esac
10369     ;;
10370 esac
10371 : we could also check for sys/ipc.h ...
10372 if $h_sem && $test `./findhdr sys/sem.h`; then
10373         echo "You have the full sem*(2) library." >&4
10374         val="$define"
10375 else
10376         echo "You don't have the full sem*(2) library." >&4
10377         val="$undef"
10378 fi
10379 set d_sem
10380 eval $setvar
10381
10382 : see whether sys/sem.h defines union semun
10383 echo " "
10384 $cat > try.c <<'END'
10385 #include <sys/types.h>
10386 #include <sys/ipc.h>
10387 #include <sys/sem.h>
10388 int main () { union semun semun; semun.buf = 0; }
10389 END
10390 set try
10391 if eval $compile; then
10392     echo "You have union semun in <sys/sem.h>." >&4
10393     val="$define"
10394 else
10395     echo "You do not have union semun in <sys/sem.h>." >&4
10396     val="$undef"
10397 fi
10398 $rm -f try try.c try.h
10399 set d_union_semun
10400 eval $setvar
10401
10402 : see how to do semctl IPC_STAT
10403 case "$d_sem" in
10404 $define)
10405     : see whether semctl IPC_STAT can use union semun
10406     echo " "
10407     $cat > try.h <<END
10408 #ifndef S_IRUSR
10409 #   ifdef S_IREAD
10410 #       define S_IRUSR S_IREAD
10411 #       define S_IWUSR S_IWRITE
10412 #       define S_IXUSR S_IEXEC
10413 #   else
10414 #       define S_IRUSR 0400
10415 #       define S_IWUSR 0200
10416 #       define S_IXUSR 0100
10417 #   endif
10418 #   define S_IRGRP (S_IRUSR>>3)
10419 #   define S_IWGRP (S_IWUSR>>3)
10420 #   define S_IXGRP (S_IXUSR>>3)
10421 #   define S_IROTH (S_IRUSR>>6)
10422 #   define S_IWOTH (S_IWUSR>>6)
10423 #   define S_IXOTH (S_IXUSR>>6)
10424 #endif
10425 #ifndef S_IRWXU
10426 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10427 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10428 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10429 #endif
10430 END
10431
10432     $cat > try.c <<END
10433 #include <sys/types.h>
10434 #include <sys/ipc.h>
10435 #include <sys/sem.h>
10436 #include <sys/stat.h>
10437 #include <stdio.h>
10438 #include <errno.h>
10439 #include "try.h"
10440 #ifndef errno
10441 extern int errno;
10442 #endif
10443 #$d_union_semun HAS_UNION_SEMUN
10444 int main() {
10445     union semun
10446 #ifndef HAS_UNION_SEMUN
10447     {
10448         int val;
10449         struct semid_ds *buf;
10450         unsigned short *array;
10451     }
10452 #endif
10453     arg;
10454     int sem, st;
10455
10456 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10457     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10458     if (sem > -1) {
10459         struct semid_ds argbuf;
10460         arg.buf = &argbuf;
10461 #       ifdef IPC_STAT
10462         st = semctl(sem, 0, IPC_STAT, arg);
10463         if (st == 0)
10464             printf("semun\n");
10465         else
10466 #       endif /* IPC_STAT */
10467             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10468 #       ifdef IPC_RMID
10469         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10470 #       endif /* IPC_RMID */
10471             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10472     } else
10473 #endif /* IPC_PRIVATE && ... */
10474         printf("semget failed: errno = %d\n", errno);
10475   return 0;
10476 }
10477 END
10478     val="$undef"
10479     set try
10480     if eval $compile; then
10481         xxx=`./try`
10482         case "$xxx" in
10483         semun) val="$define" ;;
10484         esac
10485     fi
10486     $rm -f try try.c
10487     set d_semctl_semun
10488     eval $setvar
10489     case "$d_semctl_semun" in
10490     $define)
10491         echo "You can use union semun for semctl IPC_STAT." >&4
10492         also='also'
10493         ;;
10494     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10495         also=''
10496         ;;
10497     esac
10498
10499     : see whether semctl IPC_STAT can use struct semid_ds pointer
10500     $cat > try.c <<'END'
10501 #include <sys/types.h>
10502 #include <sys/ipc.h>
10503 #include <sys/sem.h>
10504 #include <sys/stat.h>
10505 #include "try.h"
10506 #include <stdio.h>
10507 #include <errno.h>
10508 #ifndef errno
10509 extern int errno;
10510 #endif
10511 int main() {
10512     struct semid_ds arg;
10513     int sem, st;
10514
10515 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
10516     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10517     if (sem > -1) {
10518 #       ifdef IPC_STAT
10519         st = semctl(sem, 0, IPC_STAT, &arg);
10520         if (st == 0)
10521             printf("semid_ds\n");
10522         else
10523 #       endif /* IPC_STAT */
10524             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10525 #       ifdef IPC_RMID
10526         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10527 #       endif /* IPC_RMID */
10528             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10529     } else
10530 #endif /* IPC_PRIVATE && ... */
10531         printf("semget failed: errno = %d\n", errno);
10532
10533     return 0;
10534 }
10535 END
10536     val="$undef"
10537     set try
10538     if eval $compile; then
10539         xxx=`./try`
10540         case "$xxx" in
10541         semid_ds) val="$define" ;;
10542         esac
10543     fi
10544     $rm -f try try.c
10545     set d_semctl_semid_ds
10546     eval $setvar
10547     case "$d_semctl_semid_ds" in
10548     $define)
10549         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10550         ;;
10551     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10552         ;;
10553     esac
10554     $rm -f try.h
10555     ;;
10556 *)  val="$undef"
10557
10558     # We do not have the full sem*(2) library, so assume we can not
10559     # use either.
10560
10561     set d_semctl_semun
10562     eval $setvar
10563
10564     set d_semctl_semid_ds
10565     eval $setvar
10566     ;;
10567 esac
10568
10569 : see if setegid exists
10570 set setegid d_setegid
10571 eval $inlibc
10572
10573 : see if seteuid exists
10574 set seteuid d_seteuid
10575 eval $inlibc
10576
10577 : see if setgrent exists
10578 set setgrent d_setgrent
10579 eval $inlibc
10580
10581 : see if sethostent exists
10582 set sethostent d_sethent
10583 eval $inlibc
10584
10585 : see if setlinebuf exists
10586 set setlinebuf d_setlinebuf
10587 eval $inlibc
10588
10589 : see if setlocale exists
10590 set setlocale d_setlocale
10591 eval $inlibc
10592
10593 : see if setnetent exists
10594 set setnetent d_setnent
10595 eval $inlibc
10596
10597 : see if setprotoent exists
10598 set setprotoent d_setpent
10599 eval $inlibc
10600
10601 : see if setpgid exists
10602 set setpgid d_setpgid
10603 eval $inlibc
10604
10605 : see if setpgrp2 exists
10606 set setpgrp2 d_setpgrp2
10607 eval $inlibc
10608
10609 : see if setpriority exists
10610 set setpriority d_setprior
10611 eval $inlibc
10612
10613 : see if setpwent exists
10614 set setpwent d_setpwent
10615 eval $inlibc
10616
10617 : see if setregid exists
10618 set setregid d_setregid
10619 eval $inlibc
10620 set setresgid d_setresgid
10621 eval $inlibc
10622
10623 : see if setreuid exists
10624 set setreuid d_setreuid
10625 eval $inlibc
10626 set setresuid d_setresuid
10627 eval $inlibc
10628
10629 : see if setrgid exists
10630 set setrgid d_setrgid
10631 eval $inlibc
10632
10633 : see if setruid exists
10634 set setruid d_setruid
10635 eval $inlibc
10636
10637 : see if setservent exists
10638 set setservent d_setsent
10639 eval $inlibc
10640
10641 : see if setsid exists
10642 set setsid d_setsid
10643 eval $inlibc
10644
10645 : see if setspent exists
10646 set setspent d_setspent
10647 eval $inlibc
10648
10649 : see if setvbuf exists
10650 set setvbuf d_setvbuf
10651 eval $inlibc
10652
10653 : see if sfio.h is available
10654 set sfio.h i_sfio
10655 eval $inhdr
10656
10657
10658 : see if sfio library is available
10659 case "$i_sfio" in
10660 $define)
10661         val=''
10662         set sfreserve val
10663         eval $inlibc
10664         ;;
10665 *)
10666         val="$undef"
10667         ;;
10668 esac
10669 : Ok, but do we want to use it.
10670 case "$val" in
10671 $define)
10672         case "$usesfio" in
10673         true|$define|[yY]*) dflt='y';;
10674         *) dflt='n';;
10675         esac
10676         echo "$package can use the sfio library, but it is experimental."
10677         rp="You seem to have sfio available, do you want to try using it?"
10678         . ./myread
10679         case "$ans" in
10680         y|Y) ;;
10681         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
10682                 val="$undef"
10683                 : Remove sfio from list of libraries to use
10684                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
10685                 shift
10686                 libs="$*"
10687                 echo "libs = $libs" >&4
10688                 ;;
10689         esac
10690         ;;
10691 *)      case "$usesfio" in
10692         true|$define|[yY]*)
10693                 echo "Sorry, cannot find sfio on this machine" >&4
10694                 echo "Ignoring your setting of usesfio=$usesfio" >&4
10695                 ;;
10696         esac
10697         ;;
10698 esac
10699 set d_sfio
10700 eval $setvar
10701 case "$d_sfio" in
10702 $define) usesfio='true';;
10703 *) usesfio='false';;
10704 esac
10705
10706 : see if shmctl exists
10707 set shmctl d_shmctl
10708 eval $inlibc
10709
10710 : see if shmget exists
10711 set shmget d_shmget
10712 eval $inlibc
10713
10714 : see if shmat exists
10715 set shmat d_shmat
10716 eval $inlibc
10717 : see what shmat returns
10718 case "$d_shmat" in
10719 "$define")
10720         $cat >shmat.c <<'END'
10721 #include <sys/shm.h>
10722 void *shmat();
10723 END
10724         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
10725                 shmattype='void *'
10726         else
10727                 shmattype='char *'
10728         fi
10729         echo "and it returns ($shmattype)." >&4
10730         : see if a prototype for shmat is available
10731         xxx=`./findhdr sys/shm.h`
10732         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
10733         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
10734                 val="$define"
10735         else
10736                 val="$undef"
10737         fi
10738         $rm -f shmat.[co]
10739         ;;
10740 *)
10741         val="$undef"
10742         ;;
10743 esac
10744 set d_shmatprototype
10745 eval $setvar
10746
10747 : see if shmdt exists
10748 set shmdt d_shmdt
10749 eval $inlibc
10750
10751 : see how much of the 'shm*(2)' library is present.
10752 h_shm=true
10753 echo " "
10754 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
10755 *"$undef"*) h_shm=false;;
10756 esac
10757 case "$osname" in
10758 freebsd)
10759     case "`ipcs 2>&1`" in
10760     "SVID shared memory"*"not configured"*)
10761         echo "Your $osname does not have the shm*(2) configured." >&4
10762         h_shm=false
10763         val="$undef"
10764         set shmctl d_shmctl
10765         evat $setvar
10766         set shmget d_shmget
10767         evat $setvar
10768         set shmat d_shmat
10769         evat $setvar
10770         set shmdt d_shmdt
10771         evat $setvar
10772         ;;
10773     esac
10774     ;;
10775 esac
10776 : we could also check for sys/ipc.h ...
10777 if $h_shm && $test `./findhdr sys/shm.h`; then
10778         echo "You have the full shm*(2) library." >&4
10779         val="$define"
10780 else
10781         echo "You don't have the full shm*(2) library." >&4
10782         val="$undef"
10783 fi
10784 set d_shm
10785 eval $setvar
10786
10787 echo " "
10788 : see if we have sigaction
10789 if set sigaction val -f d_sigaction; eval $csym; $val; then
10790         echo 'sigaction() found.' >&4
10791         $cat > try.c <<'EOP'
10792 #include <stdio.h>
10793 #include <sys/types.h>
10794 #include <signal.h>
10795 int main()
10796 {
10797     struct sigaction act, oact;
10798     act.sa_flags = 0;
10799     oact.sa_handler = 0;
10800     /* so that act and oact are used */
10801     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
10802 }
10803 EOP
10804         set try
10805         if eval $compile_ok; then
10806                 val="$define"
10807         else
10808                 echo "But you don't seem to have a useable struct sigaction." >&4
10809                 val="$undef"
10810         fi
10811 else
10812         echo 'sigaction NOT found.' >&4
10813         val="$undef"
10814 fi
10815 set d_sigaction; eval $setvar
10816 $rm -f try try$_o try.c
10817
10818 : see if sigsetjmp exists
10819 echo " "
10820 case "$d_sigsetjmp" in
10821 '')
10822         $cat >try.c <<'EOP'
10823 #include <setjmp.h>
10824 sigjmp_buf env;
10825 int set = 1;
10826 int main()
10827 {
10828         if (sigsetjmp(env,1))
10829                 exit(set);
10830         set = 0;
10831         siglongjmp(env, 1);
10832         exit(1);
10833 }
10834 EOP
10835         set try
10836         if eval $compile; then
10837                 if ./try >/dev/null 2>&1; then
10838                         echo "POSIX sigsetjmp found." >&4
10839                         val="$define"
10840                 else
10841                         $cat >&4 <<EOM
10842 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
10843 I'll ignore them.
10844 EOM
10845                         val="$undef"
10846                 fi
10847         else
10848                 echo "sigsetjmp not found." >&4
10849                 val="$undef"
10850         fi
10851         ;;
10852 *) val="$d_sigsetjmp"
10853         case "$d_sigsetjmp" in
10854         $define) echo "POSIX sigsetjmp found." >&4;;
10855         $undef) echo "sigsetjmp not found." >&4;;
10856         esac
10857         ;;
10858 esac
10859 set d_sigsetjmp
10860 eval $setvar
10861 $rm -f try.c try
10862
10863 : see if sqrtl exists
10864 set sqrtl d_sqrtl
10865 eval $inlibc
10866
10867 : see if sys/stat.h is available
10868 set sys/stat.h i_sysstat
10869 eval $inhdr
10870
10871
10872 : see if stat knows about block sizes
10873 echo " "
10874 echo "Checking to see if your struct stat has st_blocks field..." >&4
10875 set d_statblks stat st_blocks $i_sysstat sys/stat.h
10876 eval $hasfield
10877
10878
10879 : see if this is a sys/vfs.h system
10880 set sys/vfs.h i_sysvfs
10881 eval $inhdr
10882
10883
10884 : see if this is a sys/statfs.h system
10885 set sys/statfs.h i_sysstatfs
10886 eval $inhdr
10887
10888
10889 echo " "
10890 echo "Checking to see if your system supports struct statfs..." >&4
10891 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
10892 eval $hasstruct
10893 case "$d_statfs_s" in
10894 "$define")      echo "Yes, it does."   ;;
10895 *)              echo "No, it doesn't." ;;
10896 esac
10897
10898
10899
10900 : see if struct statfs knows about f_flags
10901 case "$d_statfs_s" in
10902 define) 
10903         echo " "
10904         echo "Checking to see if your struct statfs has f_flags field..." >&4
10905         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
10906         eval $hasfield
10907         ;;
10908 *)      val="$undef"
10909         set d_statfs_f_flags
10910         eval $setvar
10911         ;;
10912 esac
10913 case "$d_statfs_f_flags" in
10914 "$define")      echo "Yes, it does."   ;;
10915 *)              echo "No, it doesn't." ;;
10916 esac
10917
10918 : see if _ptr and _cnt from stdio act std
10919 echo " "
10920 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
10921         echo "(Looks like you have stdio.h from Linux.)"
10922         case "$stdio_ptr" in
10923         '') stdio_ptr='((fp)->_IO_read_ptr)'
10924                 ptr_lval=$define
10925                 ;;
10926         *)      ptr_lval=$d_stdio_ptr_lval;;
10927         esac
10928         case "$stdio_cnt" in
10929         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
10930                 cnt_lval=$undef
10931                 ;;
10932         *)      cnt_lval=$d_stdio_cnt_lval;;
10933         esac
10934         case "$stdio_base" in
10935         '') stdio_base='((fp)->_IO_read_base)';;
10936         esac
10937         case "$stdio_bufsiz" in
10938         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
10939         esac
10940 else
10941         case "$stdio_ptr" in
10942         '') stdio_ptr='((fp)->_ptr)'
10943                 ptr_lval=$define
10944                 ;;
10945         *)      ptr_lval=$d_stdio_ptr_lval;;
10946         esac
10947         case "$stdio_cnt" in
10948         '') stdio_cnt='((fp)->_cnt)'
10949                 cnt_lval=$define
10950                 ;;
10951         *)      cnt_lval=$d_stdio_cnt_lval;;
10952         esac
10953         case "$stdio_base" in
10954         '') stdio_base='((fp)->_base)';;
10955         esac
10956         case "$stdio_bufsiz" in
10957         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
10958         esac
10959 fi
10960 : test whether _ptr and _cnt really work
10961 echo "Checking how std your stdio is..." >&4
10962 $cat >try.c <<EOP
10963 #include <stdio.h>
10964 #define FILE_ptr(fp)    $stdio_ptr
10965 #define FILE_cnt(fp)    $stdio_cnt
10966 int main() {
10967         FILE *fp = fopen("try.c", "r");
10968         char c = getc(fp);
10969         if (
10970                 18 <= FILE_cnt(fp) &&
10971                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
10972         )
10973                 exit(0);
10974         exit(1);
10975 }
10976 EOP
10977 val="$undef"
10978 set try
10979 if eval $compile; then
10980         if ./try; then
10981                 echo "Your stdio acts pretty std."
10982                 val="$define"
10983         else
10984                 echo "Your stdio isn't very std."
10985         fi
10986 else
10987         echo "Your stdio doesn't appear very std."
10988 fi
10989 $rm -f try.c try
10990 set d_stdstdio
10991 eval $setvar
10992
10993 : Can _ptr be used as an lvalue?
10994 case "$d_stdstdio$ptr_lval" in
10995 $define$define) val=$define ;;
10996 *) val=$undef ;;
10997 esac
10998 set d_stdio_ptr_lval
10999 eval $setvar
11000
11001 : Can _cnt be used as an lvalue?
11002 case "$d_stdstdio$cnt_lval" in
11003 $define$define) val=$define ;;
11004 *) val=$undef ;;
11005 esac
11006 set d_stdio_cnt_lval
11007 eval $setvar
11008
11009 : see if _base is also standard
11010 val="$undef"
11011 case "$d_stdstdio" in
11012 $define)
11013         $cat >try.c <<EOP
11014 #include <stdio.h>
11015 #define FILE_base(fp)   $stdio_base
11016 #define FILE_bufsiz(fp) $stdio_bufsiz
11017 int main() {
11018         FILE *fp = fopen("try.c", "r");
11019         char c = getc(fp);
11020         if (
11021                 19 <= FILE_bufsiz(fp) &&
11022                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11023         )
11024                 exit(0);
11025         exit(1);
11026 }
11027 EOP
11028         set try
11029         if eval $compile; then
11030                 if ./try; then
11031                         echo "And its _base field acts std."
11032                         val="$define"
11033                 else
11034                         echo "But its _base field isn't std."
11035                 fi
11036         else
11037                 echo "However, it seems to be lacking the _base field."
11038         fi
11039         $rm -f try.c try
11040         ;;
11041 esac
11042 set d_stdiobase
11043 eval $setvar
11044
11045 $cat >&4 <<EOM
11046 Checking how to access stdio streams by file descriptor number...
11047 EOM
11048 case "$stdio_stream_array" in
11049 '')     $cat >try.c <<EOCP
11050 #include <stdio.h>
11051 int main() {
11052   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11053     printf("yes\n");
11054 }
11055 EOCP
11056         for s in _iob __iob __sF
11057         do
11058                 set try -DSTDIO_STREAM_ARRAY=$s
11059                 if eval $compile; then
11060                         case "`./try$exe_ext`" in
11061                         yes)    stdio_stream_array=$s; break ;;
11062                         esac
11063                 fi
11064         done
11065         $rm -f try.* try$exe_ext
11066 esac
11067 case "$stdio_stream_array" in
11068 '')     $cat >&4 <<EOM
11069 I can't figure out how to access stdio streams by file descriptor number.
11070 EOM
11071         d_stdio_stream_array="$undef"
11072         ;;
11073 *)      $cat >&4 <<EOM
11074 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11075 EOM
11076         d_stdio_stream_array="$define"
11077         ;;
11078 esac
11079
11080 : see if strcoll exists
11081 set strcoll d_strcoll
11082 eval $inlibc
11083
11084 : check for structure copying
11085 echo " "
11086 echo "Checking to see if your C compiler can copy structs..." >&4
11087 $cat >try.c <<'EOCP'
11088 int main()
11089 {
11090         struct blurfl {
11091                 int dyick;
11092         } foo, bar;
11093
11094         foo = bar;
11095 }
11096 EOCP
11097 if $cc -c try.c >/dev/null 2>&1 ; then
11098         val="$define"
11099         echo "Yup, it can."
11100 else
11101         val="$undef"
11102         echo "Nope, it can't."
11103 fi
11104 set d_strctcpy
11105 eval $setvar
11106 $rm -f try.*
11107
11108 : see if strerror and/or sys_errlist[] exist
11109 echo " "
11110 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11111     if set strerror val -f d_strerror; eval $csym; $val; then
11112                 echo 'strerror() found.' >&4
11113                 d_strerror="$define"
11114                 d_strerrm='strerror(e)'
11115                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11116                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11117                         d_syserrlst="$define"
11118                 else
11119                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11120                         d_syserrlst="$undef"
11121                 fi
11122     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11123                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11124                 echo 'strerror() found in string header.' >&4
11125                 d_strerror="$define"
11126                 d_strerrm='strerror(e)'
11127                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11128                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11129                                 d_syserrlst="$define"
11130                 else
11131                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11132                         d_syserrlst="$undef"
11133                 fi
11134     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11135                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11136                 d_strerror="$undef"
11137                 d_syserrlst="$define"
11138                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11139     else
11140                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11141                 d_strerror="$undef"
11142                 d_syserrlst="$undef"
11143                 d_strerrm='"unknown"'
11144     fi
11145 fi
11146
11147 : see if strtod exists
11148 set strtod d_strtod
11149 eval $inlibc
11150
11151 : see if strtol exists
11152 set strtol d_strtol
11153 eval $inlibc
11154
11155 : see if strtold exists
11156 set strtold d_strtold
11157 eval $inlibc
11158
11159 : see if strtoll exists
11160 set strtoll d_strtoll
11161 eval $inlibc
11162
11163 : see if strtoul exists
11164 set strtoul d_strtoul
11165 eval $inlibc
11166
11167 : see if strtoull exists
11168 set strtoull d_strtoull
11169 eval $inlibc
11170
11171 : see if strtouq exists
11172 set strtouq d_strtouq
11173 eval $inlibc
11174
11175 : see if strxfrm exists
11176 set strxfrm d_strxfrm
11177 eval $inlibc
11178
11179 : see if symlink exists
11180 set symlink d_symlink
11181 eval $inlibc
11182
11183 : see if syscall exists
11184 set syscall d_syscall
11185 eval $inlibc
11186
11187 : see if sysconf exists
11188 set sysconf d_sysconf
11189 eval $inlibc
11190
11191 : see if system exists
11192 set system d_system
11193 eval $inlibc
11194
11195 : see if tcgetpgrp exists
11196 set tcgetpgrp d_tcgetpgrp
11197 eval $inlibc
11198
11199 : see if tcsetpgrp exists
11200 set tcsetpgrp d_tcsetpgrp
11201 eval $inlibc
11202
11203 : see if prototype for telldir is available
11204 echo " "
11205 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11206 eval $hasproto
11207
11208 : see if this is a sys/times.h system
11209 set sys/times.h i_systimes
11210 eval $inhdr
11211
11212 : see if times exists
11213 echo " "
11214 if set times val -f d_times; eval $csym; $val; then
11215         echo 'times() found.' >&4
11216         d_times="$define"
11217         inc=''
11218         case "$i_systimes" in
11219         "$define") inc='sys/times.h';;
11220         esac
11221         rp="What is the type returned by times() on this system?"
11222         set clock_t clocktype long stdio.h sys/types.h $inc
11223         eval $typedef_ask
11224 else
11225         echo 'times() NOT found, hope that will do.' >&4
11226         d_times="$undef"
11227         clocktype='int'
11228 fi
11229
11230 : see if truncate exists
11231 set truncate d_truncate
11232 eval $inlibc
11233
11234 : see if tzname[] exists
11235 echo " "
11236 if set tzname val -a d_tzname; eval $csym; $val; then
11237         val="$define"
11238         echo 'tzname[] found.' >&4
11239 else
11240         val="$undef"
11241         echo 'tzname[] NOT found.' >&4
11242 fi
11243 set d_tzname
11244 eval $setvar
11245
11246 : see if umask exists
11247 set umask d_umask
11248 eval $inlibc
11249
11250 : see if ustat exists
11251 set ustat d_ustat
11252 eval $inlibc
11253
11254 : backward compatibility for d_hvfork
11255 if test X$d_hvfork != X; then
11256         d_vfork="$d_hvfork"
11257         d_hvfork=''
11258 fi
11259 : see if there is a vfork
11260 val=''
11261 set vfork val
11262 eval $inlibc
11263
11264 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11265 : perl on Solaris 2.x, and probably elsewhere.
11266 case "$val" in
11267 $define)
11268         echo " "
11269         case "$usevfork" in
11270         false) dflt='n';;
11271         *) dflt='y';;
11272         esac
11273         cat <<'EOM'
11274  
11275 Perl can only use a vfork() that doesn't suffer from strict
11276 restrictions on calling functions or modifying global data in
11277 the child.  For example, glibc-2.1 contains such a vfork()
11278 that is unsuitable.  If your system provides a proper fork()
11279 call, chances are that you do NOT want perl to use vfork().
11280
11281 EOM
11282         rp="Do you still want to use vfork()?"
11283         . ./myread
11284         case "$ans" in
11285         y|Y) ;;
11286         *)
11287                 echo "Ok, we won't use vfork()."
11288                 val="$undef"
11289                 ;;
11290         esac
11291         ;;
11292 esac
11293 set d_vfork
11294 eval $setvar
11295 case "$d_vfork" in
11296 $define) usevfork='true';;
11297 *) usevfork='false';;
11298 esac
11299
11300 : see if this is an sysdir system
11301 set sys/dir.h i_sysdir
11302 eval $inhdr
11303
11304 : see if this is an sysndir system
11305 set sys/ndir.h i_sysndir
11306 eval $inhdr
11307
11308 : see if closedir exists
11309 set closedir d_closedir
11310 eval $inlibc
11311
11312 case "$d_closedir" in
11313 "$define")
11314         echo " "
11315         echo "Checking whether closedir() returns a status..." >&4
11316         cat > closedir.c <<EOM
11317 #$i_dirent I_DIRENT             /**/
11318 #$i_sysdir I_SYS_DIR            /**/
11319 #$i_sysndir I_SYS_NDIR          /**/
11320 #$i_systypes I_SYS_TYPES        /**/
11321
11322 #if defined(I_SYS_TYPES)
11323 #include <sys/types.h>
11324 #endif
11325 #if defined(I_DIRENT)
11326 #include <dirent.h>
11327 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11328 #include <sys/dir.h>
11329 #endif
11330 #else
11331 #ifdef I_SYS_NDIR
11332 #include <sys/ndir.h>
11333 #else
11334 #ifdef I_SYS_DIR
11335 #ifdef hp9000s500
11336 #include <ndir.h>       /* may be wrong in the future */
11337 #else
11338 #include <sys/dir.h>
11339 #endif
11340 #endif
11341 #endif
11342 #endif 
11343 int main() { return closedir(opendir(".")); }
11344 EOM
11345         set closedir
11346         if eval $compile_ok; then
11347                 if ./closedir > /dev/null 2>&1 ; then
11348                         echo "Yes, it does."
11349                         val="$undef"
11350                 else
11351                         echo "No, it doesn't."
11352                         val="$define"
11353                 fi
11354         else
11355                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11356                 val="$define"
11357         fi
11358         ;;
11359 *)
11360         val="$undef";
11361         ;;
11362 esac
11363 set d_void_closedir
11364 eval $setvar
11365 $rm -f closedir*
11366 : check for volatile keyword
11367 echo " "
11368 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11369 $cat >try.c <<'EOCP'
11370 int main()
11371 {
11372         typedef struct _goo_struct goo_struct;
11373         goo_struct * volatile goo = ((goo_struct *)0);
11374         struct _goo_struct {
11375                 long long_int;
11376                 int reg_int;
11377                 char char_var;
11378         };
11379         typedef unsigned short foo_t;
11380         char *volatile foo;
11381         volatile int bar;
11382         volatile foo_t blech;
11383         foo = foo;
11384 }
11385 EOCP
11386 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11387         val="$define"
11388         echo "Yup, it does."
11389 else
11390         val="$undef"
11391         echo "Nope, it doesn't."
11392 fi
11393 set d_volatile
11394 eval $setvar
11395 $rm -f try.*
11396
11397 : see if there is a wait4
11398 set wait4 d_wait4
11399 eval $inlibc
11400
11401 : see if waitpid exists
11402 set waitpid d_waitpid
11403 eval $inlibc
11404
11405 : see if wcstombs exists
11406 set wcstombs d_wcstombs
11407 eval $inlibc
11408
11409 : see if wctomb exists
11410 set wctomb d_wctomb
11411 eval $inlibc
11412
11413 : preserve RCS keywords in files with variable substitution, grrr
11414 Date='$Date'
11415 Id='$Id'
11416 Log='$Log'
11417 RCSfile='$RCSfile'
11418 Revision='$Revision'
11419
11420 case "$crosscompile" in
11421 ''|[nN]*) crosscompile="$undef" ;;
11422 esac
11423
11424 case "$osname" in
11425 next|rhapsody) multiarch="$define" ;;
11426 esac
11427 case "$multiarch" in
11428 ''|[nN]*) multiarch="$undef" ;;
11429 esac
11430
11431 : check for alignment requirements
11432 echo " "
11433 case "$crosscompile$multiarch" in
11434 *$define*)
11435         $cat <<EOM
11436 You seem to be either cross-compiling or doing a multiarchitecture build,
11437 skipping the memory alignment check.
11438
11439 EOM
11440         case "$alignbytes" in
11441         '') alignbytes=8 ;;
11442         esac
11443         ;;
11444 *)
11445         case "$alignbytes" in
11446         '') echo "Checking alignment constraints..." >&4
11447                 $cat >try.c <<'EOCP'
11448 #include <stdio.h>
11449 struct foobar {
11450         char foo;
11451         double bar;
11452 } try_algn;
11453 int main()
11454 {
11455     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11456     return(0);
11457 }
11458 EOCP
11459                 set try
11460                 if eval $compile_ok; then
11461                         dflt=`./try`
11462                 else
11463                         dflt='8'
11464                         echo "(I can't seem to compile the test program...)"
11465                 fi
11466                 ;;
11467         *) dflt="$alignbytes"
11468                 ;;
11469         esac
11470         rp="Doubles must be aligned on a how-many-byte boundary?"
11471         . ./myread
11472         alignbytes="$ans"
11473         $rm -f try.c try
11474         ;;
11475 esac
11476
11477
11478 : check for ordering of bytes in a long
11479 echo " "
11480 case "$crosscompile$multiarch" in
11481 *$define*)
11482         $cat <<EOM
11483 You seem to be either cross-compiling or doing a multiarchitecture build,
11484 skipping the byteorder check.
11485
11486 EOM
11487         byteorder='0xffff'
11488         ;;
11489 *)
11490         case "$byteorder" in
11491         '')
11492                 $cat <<'EOM'
11493 In the following, larger digits indicate more significance.  A big-endian
11494 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11495 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11496 machines may have weird orders like 3412.  A Cray will report 87654321,
11497 an Alpha will report 12345678. If the test program works the default is
11498 probably right.
11499 I'm now running the test program...
11500 EOM
11501                 $cat >try.c <<'EOCP'
11502 #include <stdio.h>
11503 int main()
11504 {
11505         int i;
11506         union {
11507                 unsigned long l;
11508                 char c[sizeof(long)];
11509         } u;
11510
11511         if (sizeof(long) > 4)
11512                 u.l = (0x08070605L << 32) | 0x04030201L;
11513         else
11514                 u.l = 0x04030201L;
11515         for (i = 0; i < sizeof(long); i++)
11516                 printf("%c", u.c[i]+'0');
11517         printf("\n");
11518         exit(0);
11519 }
11520 EOCP
11521                 xxx_prompt=y
11522                 set try
11523                 if eval $compile && ./try > /dev/null; then
11524                         dflt=`./try`
11525                         case "$dflt" in
11526                         [1-4][1-4][1-4][1-4]|12345678|87654321)
11527                                 echo "(The test program ran ok.)"
11528                                 echo "byteorder=$dflt"
11529                                 xxx_prompt=n
11530                         ;;
11531                         ????|????????) echo "(The test program ran ok.)" ;;
11532                         *) echo "(The test program didn't run right for some reason.)" ;;
11533                         esac
11534                 else
11535                         dflt='4321'
11536                         cat <<'EOM'
11537 (I can't seem to compile the test program.  Guessing big-endian...)
11538 EOM
11539                 fi
11540                 case "$xxx_prompt" in
11541                 y)
11542                         rp="What is the order of bytes in a long?"
11543                         . ./myread
11544                         byteorder="$ans"
11545                         ;;
11546                 *)      byteorder=$dflt
11547                         ;;
11548                 esac
11549                 ;;
11550         esac
11551         $rm -f try.c try
11552         ;;
11553 esac
11554
11555
11556 : how do we catenate cpp tokens here?
11557 echo " "
11558 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11559 $cat >cpp_stuff.c <<'EOCP'
11560 #define RCAT(a,b)a/**/b
11561 #define ACAT(a,b)a ## b
11562 RCAT(Rei,ser)
11563 ACAT(Cir,cus)
11564 EOCP
11565 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
11566 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
11567         echo "Oh!  Smells like ANSI's been here." >&4
11568         echo "We can catify or stringify, separately or together!"
11569         cpp_stuff=42
11570 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
11571         echo "Ah, yes!  The good old days!" >&4
11572         echo "However, in the good old days we don't know how to stringify and"
11573         echo "catify at the same time."
11574         cpp_stuff=1
11575 else
11576         $cat >&4 <<EOM
11577 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
11578 to have to edit the values of CAT[2-5] in config.h...
11579 EOM
11580         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
11581 fi
11582 $rm -f cpp_stuff.*
11583
11584 : see if this is a db.h system
11585 set db.h i_db
11586 eval $inhdr
11587
11588 case "$i_db" in
11589 $define)
11590         : Check db version.
11591         echo " "
11592         echo "Checking Berkeley DB version ..." >&4
11593         $cat >try.c <<EOCP
11594 #$d_const HASCONST
11595 #ifndef HASCONST
11596 #define const
11597 #endif
11598 #include <sys/types.h>
11599 #include <stdio.h>
11600 #include <db.h>
11601 int main()
11602 {
11603 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
11604     int Major, Minor, Patch ;
11605     unsigned long Version ;
11606     (void)db_version(&Major, &Minor, &Patch) ;
11607     printf("You have Berkeley DB Version 2 or greater\n");
11608
11609     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
11610                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
11611     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
11612                 Major, Minor, Patch) ;
11613
11614     /* check that db.h & libdb are compatible */
11615     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
11616         printf("db.h and libdb are incompatible\n") ;
11617         exit(3);        
11618     }
11619
11620     printf("db.h and libdb are compatible\n") ;
11621
11622     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
11623                 + DB_VERSION_PATCH ;
11624
11625     /* needs to be >= 2.3.4 */
11626     if (Version < 2003004) {
11627     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
11628         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
11629         exit(2);        
11630     }
11631
11632     exit(0);
11633 #else
11634 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
11635     printf("You have Berkeley DB Version 1\n");
11636     exit(0);    /* DB version < 2: the coast is clear. */
11637 #else
11638     exit(1);    /* <db.h> not Berkeley DB? */
11639 #endif
11640 #endif
11641 }
11642 EOCP
11643         set try
11644         if eval $compile_ok && ./try; then
11645                 echo 'Looks OK.' >&4
11646         else
11647                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
11648                 i_db=$undef
11649                 case " $libs " in
11650                 *"-ldb "*)
11651                         : Remove db from list of libraries to use
11652                         echo "Removing unusable -ldb from library list" >&4
11653                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
11654                         shift
11655                         libs="$*"
11656                         echo "libs = $libs" >&4
11657                         ;;
11658                 esac
11659         fi
11660         $rm -f try.*
11661         ;;
11662 esac
11663
11664 case "$i_db" in
11665 define)
11666         : Check the return type needed for hash 
11667         echo " "
11668         echo "Checking return type needed for hash for Berkeley DB ..." >&4
11669         $cat >try.c <<EOCP
11670 #$d_const HASCONST
11671 #ifndef HASCONST
11672 #define const
11673 #endif
11674 #include <sys/types.h>
11675 #include <db.h>
11676
11677 #ifndef DB_VERSION_MAJOR
11678 u_int32_t hash_cb (ptr, size)
11679 const void *ptr;
11680 size_t size;
11681 {
11682 }
11683 HASHINFO info;
11684 int main()
11685 {
11686         info.hash = hash_cb;
11687 }
11688 #endif
11689 EOCP
11690         if $cc $ccflags -c try.c >try.out 2>&1 ; then
11691                 if $contains warning try.out >>/dev/null 2>&1 ; then
11692                         db_hashtype='int'
11693                 else
11694                         db_hashtype='u_int32_t'
11695                 fi
11696         else
11697                 : XXX Maybe we should just give up here.
11698                 db_hashtype=u_int32_t
11699                 $cat try.out >&4
11700                 echo "Help:  I can't seem to compile the db test program." >&4
11701                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
11702         fi
11703         $rm -f try.*
11704         echo "Your version of Berkeley DB uses $db_hashtype for hash."
11705         ;;
11706 *)      db_hashtype=u_int32_t
11707         ;;
11708 esac
11709 case "$i_db" in
11710 define)
11711         : Check the return type needed for prefix 
11712         echo " "
11713         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
11714         cat >try.c <<EOCP
11715 #$d_const HASCONST
11716 #ifndef HASCONST
11717 #define const
11718 #endif
11719 #include <sys/types.h>
11720 #include <db.h>
11721
11722 #ifndef DB_VERSION_MAJOR
11723 size_t prefix_cb (key1, key2)
11724 const DBT *key1;
11725 const DBT *key2;
11726 {
11727 }
11728 BTREEINFO info;
11729 int main()
11730 {
11731         info.prefix = prefix_cb;
11732 }
11733 #endif
11734 EOCP
11735         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
11736                 if $contains warning try.out >>/dev/null 2>&1 ; then
11737                         db_prefixtype='int'
11738                 else
11739                         db_prefixtype='size_t'
11740                 fi
11741         else
11742                 db_prefixtype='size_t'
11743                 : XXX Maybe we should just give up here.
11744                 $cat try.out >&4
11745                 echo "Help:  I can't seem to compile the db test program." >&4
11746                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
11747         fi
11748         $rm -f try.*
11749         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
11750         ;;
11751 *)      db_prefixtype='size_t'
11752         ;;
11753 esac
11754
11755 : check for void type
11756 echo " "
11757 echo "Checking to see how well your C compiler groks the void type..." >&4
11758 case "$voidflags" in
11759 '')
11760         $cat >try.c <<'EOCP'
11761 #if TRY & 1
11762 void sub() {
11763 #else
11764 sub() {
11765 #endif
11766         extern void moo();      /* function returning void */
11767         void (*goo)();          /* ptr to func returning void */
11768 #if TRY & 8
11769         void *hue;              /* generic ptr */
11770 #endif
11771 #if TRY & 2
11772         void (*foo[10])();
11773 #endif
11774
11775 #if TRY & 4
11776         if(goo == moo) {
11777                 exit(0);
11778         }
11779 #endif
11780         exit(0);
11781 }
11782 int main() { sub(); }
11783 EOCP
11784         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
11785                 voidflags=$defvoidused
11786         echo "Good.  It appears to support void to the level $package wants.">&4
11787                 if $contains warning .out >/dev/null 2>&1; then
11788                         echo "However, you might get some warnings that look like this:"
11789                         $cat .out
11790                 fi
11791         else
11792 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
11793                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
11794                         echo "It supports 1..."
11795                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
11796                                 echo "It also supports 2..."
11797                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
11798                                         voidflags=7
11799                                         echo "And it supports 4 but not 8 definitely."
11800                                 else
11801                                         echo "It doesn't support 4..."
11802                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
11803                                                 voidflags=11
11804                                                 echo "But it supports 8."
11805                                         else
11806                                                 voidflags=3
11807                                                 echo "Neither does it support 8."
11808                                         fi
11809                                 fi
11810                         else
11811                                 echo "It does not support 2..."
11812                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
11813                                         voidflags=13
11814                                         echo "But it supports 4 and 8."
11815                                 else
11816                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
11817                                                 voidflags=5
11818                                                 echo "And it supports 4 but has not heard about 8."
11819                                         else
11820                                                 echo "However it supports 8 but not 4."
11821                                         fi
11822                                 fi
11823                         fi
11824                 else
11825                         echo "There is no support at all for void."
11826                         voidflags=0
11827                 fi
11828         fi
11829 esac
11830 case "$voidflags" in
11831 "$defvoidused") ;;
11832 *)      $cat >&4 <<'EOM'
11833   Support flag bits are:
11834     1: basic void declarations.
11835     2: arrays of pointers to functions returning void.
11836     4: operations between pointers to and addresses of void functions.
11837     8: generic void pointers.
11838 EOM
11839         dflt="$voidflags";
11840         rp="Your void support flags add up to what?"
11841         . ./myread
11842         voidflags="$ans"
11843         ;;
11844 esac
11845 $rm -f try.* .out
11846
11847
11848 : How can we generate normalized random numbers ?
11849 echo " "
11850 echo "Looking for a random number function..." >&4
11851 case "$randfunc" in
11852 '')
11853         if set drand48 val -f; eval $csym; $val; then
11854                 dflt="drand48"
11855                 echo "Good, found drand48()." >&4
11856         elif set random val -f; eval $csym; $val; then
11857                 dflt="random"
11858                 echo "OK, found random()." >&4
11859         else
11860                 dflt="rand"
11861                 echo "Yick, looks like I have to use rand()." >&4
11862         fi
11863         echo " "
11864         ;;
11865 *)
11866         dflt="$randfunc"
11867         ;;
11868 esac
11869 cont=true
11870
11871 case "$ccflags" in
11872 *-Dmy_rand=*|*-Dmy_srand=*)
11873         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
11874         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
11875         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
11876         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
11877         ;;
11878 esac
11879
11880 while $test "$cont"; do
11881         rp="Use which function to generate random numbers?"
11882         . ./myread
11883         if $test "$ans" = "$dflt"; then
11884                 : null
11885         else
11886                 randbits=''
11887         fi
11888         randfunc="$ans"
11889         if set $ans val -f; eval $csym; $val; then
11890                 cont=''
11891         else
11892                 dflt=y
11893                 rp="I cannot find function $ans. Use that name anyway?"
11894                 . ./myread
11895                 dflt=rand
11896                 case "$ans" in
11897                         [yY]*) cont='';;
11898                 esac
11899         fi
11900         case "$cont" in
11901         '')
11902                 case "$randfunc" in
11903                 drand48)
11904                         drand01="drand48()"
11905                         seedfunc="srand48"
11906                         randbits=48
11907                         randseedtype=long
11908                         ;;
11909                 rand|random)
11910                         case "$randbits" in
11911                         '')
11912 echo "Checking to see how many bits your $randfunc() function produces..." >&4
11913                                 $cat >try.c <<EOCP
11914 #$i_unistd I_UNISTD
11915 #$i_stdlib I_STDLIB
11916 #include <stdio.h>
11917 #ifdef I_UNISTD
11918 #  include <unistd.h>
11919 #endif
11920 #ifdef I_STDLIB
11921 #  include <stdlib.h>
11922 #endif
11923 int main()
11924 {
11925         register int i;
11926         register unsigned long tmp;
11927         register unsigned long max = 0L;
11928
11929         for (i = 1000; i; i--) {
11930                 tmp = (unsigned long) $randfunc();
11931                 if (tmp > max) max = tmp;
11932         }
11933         for (i = 0; max; i++)
11934                 max /= 2;
11935         printf("%d\n",i);
11936 }
11937 EOCP
11938                                 set try
11939                                 if eval $compile_ok; then
11940                                         dflt=`try`
11941                                 else
11942                                         dflt='?'
11943                                         echo "(I can't seem to compile the test program...)"
11944                                 fi
11945                                 ;;
11946                         *)
11947                                 dflt="$randbits"
11948                                 ;;
11949                         esac
11950                         rp="How many bits does your $randfunc() function produce?"
11951                         . ./myread
11952                         randbits="$ans"
11953                         $rm -f try.c try
11954                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
11955                         seedfunc="s$randfunc"
11956                         randseedtype=unsigned
11957                         ;;
11958                 *)
11959                         dflt="31"
11960                         rp="How many bits does your $randfunc() function produce?"
11961                         . ./myread
11962                         randbits="$ans"
11963                         seedfunc="s$randfunc"
11964                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
11965                         if set $seedfunc val -f; eval $csym; $val; then
11966                                 echo "(Using $seedfunc() to seed random generator)"
11967                         else
11968                                 echo "(Warning: no $seedfunc() to seed random generator)"
11969                                 seedfunc=rand
11970                         fi
11971                         randseedtype=unsigned
11972                         ;;
11973                 esac
11974                 ;;
11975         esac
11976 done
11977
11978 echo " "
11979 echo "Determining whether or not we are on an EBCDIC system..." >&4
11980 $cat >tebcdic.c <<'EOM'
11981 int main()
11982 {
11983   if ('M'==0xd4) return 0;
11984   return 1;
11985 }
11986 EOM
11987
11988 val=$undef
11989 set tebcdic
11990 if eval $compile_ok; then
11991         if ./tebcdic; then
11992                 echo "You have EBCDIC." >&4
11993                 val="$define"
11994         else
11995                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
11996         fi
11997 else
11998         echo "I'm unable to compile the test program." >&4
11999         echo "I'll assume ASCII or some ISO Latin." >&4
12000 fi
12001 $rm -f tebcdic.c tebcdic
12002 set ebcdic
12003 eval $setvar
12004
12005 echo " "
12006 $cat >&4 <<EOM
12007 Checking how to flush all pending stdio output...
12008 EOM
12009 # I only know how to find the first 32 possibly open files on SunOS.
12010 # See also hints/sunos_4_1.sh and util.c  --AD
12011 case "$osname" in
12012 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12013 esac
12014 $cat >>try.c <<EOCP
12015 #include <stdio.h>
12016 #$i_unistd I_UNISTD
12017 #ifdef I_UNISTD
12018 # include <unistd.h>
12019 #endif
12020 #$d_sysconf HAS_SYSCONF
12021 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12022 #ifdef HAS_STDIO_STREAM_ARRAY
12023 # define STDIO_STREAM_ARRAY $stdio_stream_array
12024 #endif
12025 int main() {
12026   FILE* p = fopen("try.out", "w");
12027 #ifdef TRY_FPUTC
12028   fputc('x', p);
12029 #else
12030 # ifdef TRY_FPRINTF
12031   fprintf(p, "x");
12032 # endif
12033 #endif
12034 #ifdef TRY_FFLUSH_NULL
12035   fflush(NULL);
12036 #endif
12037 #ifdef TRY_FFLUSH_ALL
12038   {
12039     long open_max = -1;
12040 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12041     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12042 # else
12043 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12044     open_max = sysconf(_SC_OPEN_MAX);
12045 #  else
12046 #   ifdef FOPEN_MAX
12047     open_max = FOPEN_MAX;
12048 #   else
12049 #    ifdef OPEN_MAX
12050     open_max = OPEN_MAX;
12051 #    else
12052 #     ifdef _NFILE
12053     open_max = _NFILE;
12054 #     endif
12055 #    endif
12056 #   endif
12057 #  endif
12058 # endif 
12059 # ifdef HAS_STDIO_STREAM_ARRAY
12060     if (open_max > 0) {
12061       long i;
12062       for (i = 0; i < open_max; i++)
12063             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12064                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12065                 STDIO_STREAM_ARRAY[i]._flag)
12066                 fflush(&STDIO_STREAM_ARRAY[i]);
12067     }   
12068   }
12069 # endif
12070 #endif
12071   _exit(42);
12072 }
12073 EOCP
12074 : first we have to find out how _not_ to flush
12075 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12076     output=''
12077     set try -DTRY_FPUTC
12078     if eval $compile; then
12079             $rm -f try.out
12080             ./try$exe_ext 2>/dev/null
12081             if $test ! -s try.out -a "X$?" = X42; then
12082                 output=-DTRY_FPUTC
12083             fi
12084     fi
12085     case "$output" in
12086     '')
12087             set try -DTRY_FPRINTF
12088             $rm -f try.out
12089             if eval $compile; then
12090                     $rm -f try.out
12091                     ./try$exe_ext 2>/dev/null
12092                     if $test ! -s try.out -a "X$?" = X42; then
12093                         output=-DTRY_FPRINTF
12094                     fi
12095             fi
12096         ;;
12097     esac
12098 fi
12099 : check for fflush NULL behaviour
12100 case "$fflushNULL" in
12101 '')     set try -DTRY_FFLUSH_NULL $output
12102         if eval $compile; then
12103                 $rm -f try.out
12104                 ./try$exe_ext 2>/dev/null
12105                 code="$?"
12106                 if $test -s try.out -a "X$code" = X42; then
12107                         fflushNULL="`$cat try.out`"
12108                 else
12109                         if $test "X$code" != X42; then
12110                                 $cat >&4 <<EOM
12111 (If this test failed, don't worry, we'll try another method shortly.)
12112 EOM
12113                         fi
12114                 fi
12115         fi
12116         $rm -f core try.core core.try.*
12117         case "$fflushNULL" in
12118         x)      $cat >&4 <<EOM
12119 Your fflush(NULL) works okay.
12120 EOM
12121                 fflushNULL="$define"
12122                 ;;
12123         '')     $cat >&4 <<EOM
12124 Your fflush(NULL) isn't working (contrary to ANSI C).
12125 EOM
12126                 fflushNULL="$undef"
12127                 ;;
12128         *)      $cat >&4 <<EOM
12129 Cannot figure out whether your fflush(NULL) works or not.
12130 I'm assuming it doesn't (contrary to ANSI C).
12131 EOM
12132                 fflushNULL="$undef"
12133                 ;;
12134         esac
12135         ;;
12136 $define|true|[yY]*)
12137         fflushNULL="$define"
12138         ;;
12139 *)
12140         fflushNULL="$undef"
12141         ;;
12142 esac
12143 : check explicit looping only if NULL did not work
12144 case "$fflushNULL" in
12145 "$undef")
12146         : check for fflush all behaviour
12147         case "$fflushall" in
12148         '')     set try -DTRY_FFLUSH_ALL $output
12149                 if eval $compile; then
12150                         $cat >&4 <<EOM
12151 (Now testing the other method--but note that also this may fail.)
12152 EOM
12153                         $rm -f try.out
12154                         ./try$exe_ext 2>/dev/null
12155                         if $test -s try.out -a "X$?" = X42; then
12156                                 fflushall="`$cat try.out`"
12157                         fi
12158                 fi
12159                 $rm -f core try.core core.try.*
12160                 case "$fflushall" in
12161                 x)      $cat >&4 <<EOM
12162 Whew. Flushing explicitly all the stdio streams works.
12163 EOM
12164                         fflushall="$define"
12165                         ;;
12166                 '')     $cat >&4 <<EOM
12167 Sigh. Flushing explicitly all the stdio streams doesn't work.
12168 EOM
12169                         fflushall="$undef"
12170                         ;;
12171                 *)      $cat >&4 <<EOM
12172 Cannot figure out whether flushing stdio streams explicitly works or not.
12173 I'm assuming it doesn't.
12174 EOM
12175                         fflushall="$undef"
12176                         ;;
12177                 esac
12178                 ;;
12179         "$define"|true|[yY]*)
12180                 fflushall="$define"
12181                 ;;
12182         *)
12183                 fflushall="$undef"
12184                 ;;
12185         esac
12186         ;;
12187 *)      fflushall="$undef"      
12188         ;;
12189 esac
12190 case "$fflushNULL$fflushall" in
12191 undefundef)
12192         $cat <<EOM
12193 I cannot figure out how to flush pending stdio output.
12194 EOM
12195         ;;
12196 esac
12197 $rm -f try.* try$exe_ext
12198
12199 : Store the full pathname to the ar program for use in the C program
12200 : Respect a hint or command line value for full_ar.
12201 case "$full_ar" in
12202 '') full_ar=$ar ;;
12203 esac
12204
12205 : Store the full pathname to the sed program for use in the C program
12206 full_sed=$sed
12207
12208 : see what type gids are declared as in the kernel
12209 echo " "
12210 echo "Looking for the type for group ids returned by getgid()."
12211 set gid_t gidtype xxx stdio.h sys/types.h
12212 eval $typedef
12213 case "$gidtype" in
12214 xxx)
12215         xxx=`./findhdr sys/user.h`
12216         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12217         case $1 in
12218         unsigned) dflt="$1 $2" ;;
12219         *) dflt="$1" ;;
12220         esac
12221         ;;
12222 *) dflt="$gidtype";;
12223 esac
12224 case "$gidtype" in
12225 gid_t) echo "gid_t found." ;;
12226 *)      rp="What is the type for group ids returned by getgid()?"
12227         . ./myread
12228         gidtype="$ans"
12229         ;;
12230 esac
12231
12232 echo " "
12233 case "$gidtype" in
12234 *_t) zzz="$gidtype"     ;;
12235 *)   zzz="gid"          ;;
12236 esac
12237 echo "Checking the size of $zzz..." >&4 
12238 cat > try.c <<EOCP
12239 #include <sys/types.h>
12240 #include <stdio.h>
12241 int main() {
12242     printf("%d\n", (int)sizeof($gidtype));
12243     exit(0);
12244 }
12245 EOCP
12246 set try
12247 if eval $compile_ok; then
12248         yyy=`./try`
12249         case "$yyy" in
12250         '')     gidsize=4
12251                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12252                 ;;
12253         *)      gidsize=$yyy
12254                 echo "Your $zzz size is $gidsize bytes."
12255                 ;;
12256         esac
12257 else
12258         gidsize=4
12259         echo "(I can't compile the test program--guessing $gidsize.)" >&4
12260 fi
12261
12262
12263 echo " "
12264 case "$gidtype" in
12265 *_t) zzz="$gidtype"     ;;
12266 *)   zzz="gid"          ;;
12267 esac
12268 echo "Checking the sign of $zzz..." >&4 
12269 cat > try.c <<EOCP
12270 #include <sys/types.h>
12271 #include <stdio.h>
12272 int main() {
12273         $gidtype foo = -1;
12274         if (foo < 0)
12275                 printf("-1\n");
12276         else
12277                 printf("1\n");
12278 }
12279 EOCP
12280 set try
12281 if eval $compile; then
12282         yyy=`./try`
12283         case "$yyy" in
12284         '')     gidsign=1
12285                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12286                 ;;
12287         *)      gidsign=$yyy
12288                 case "$gidsign" in
12289                  1) echo "Your $zzz is unsigned." ;;
12290                 -1) echo "Your $zzz is signed."   ;;
12291                 esac
12292                 ;;
12293         esac
12294 else
12295         gidsign=1
12296         echo "(I can't compile the test program--guessing unsigned.)" >&4
12297 fi
12298
12299
12300 echo " "
12301
12302 if $test X"$quadtype" != X; then
12303
12304 echo "Checking how to print 64-bit integers..." >&4
12305
12306 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12307         $cat >try.c <<'EOCP'
12308 #include <sys/types.h>
12309 #include <stdio.h>
12310 int main() {
12311   int q = 12345678901;
12312   printf("%ld\n", q);
12313 }
12314 EOCP
12315         set try
12316         if eval $compile; then
12317                 yyy=`./try$exe_ext`
12318                 case "$yyy" in
12319                 12345678901)
12320                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12321                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12322                         echo "We will use %d."
12323                         ;;
12324                 esac
12325         fi
12326 fi
12327
12328 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12329         $cat >try.c <<'EOCP'
12330 #include <sys/types.h>
12331 #include <stdio.h>
12332 int main() {
12333   long q = 12345678901;
12334   printf("%ld\n", q);
12335 }
12336 EOCP
12337         set try
12338         if eval $compile; then
12339                 yyy=`./try$exe_ext`
12340                 case "$yyy" in
12341                 12345678901)
12342                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12343                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12344                         echo "We will use %ld."
12345                         ;;
12346                 esac
12347         fi
12348 fi
12349
12350 if $test X"$sPRId64" = X -a X"$i_inttypes.h" = X"$define" -a X"$quadtype" = Xint64_t; then
12351         $cat >try.c <<'EOCP'
12352 #include <sys/types.h>
12353 #include <inttypes.h>
12354 #include <stdio.h>
12355 int main() {
12356   int64_t q = 12345678901;
12357   printf("%" PRId64 "\n", q);
12358 }
12359 EOCP
12360         set try
12361         if eval $compile; then
12362                 yyy=`./try$exe_ext`
12363                 case "$yyy" in
12364                 12345678901)
12365                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12366                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12367                         echo "We will use the C9X style."
12368                         ;;
12369                 esac
12370         fi
12371 fi
12372
12373 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12374         $cat >try.c <<'EOCP'
12375 #include <sys/types.h>
12376 #include <stdio.h>
12377 int main() {
12378   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12379   printf("%lld\n", q);
12380 }
12381 EOCP
12382         set try
12383         if eval $compile; then
12384                 yyy=`./try$exe_ext`
12385                 case "$yyy" in
12386                 12345678901)
12387                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12388                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12389                         echo "We will use the %lld style."
12390                         ;;
12391                 esac
12392         fi
12393 fi
12394
12395 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12396         $cat >try.c <<EOCP
12397 #include <sys/types.h>
12398 #include <stdio.h>
12399 int main() {
12400   $quadtype q = 12345678901;
12401   printf("%Ld\n", q);
12402 }
12403 EOCP
12404         set try
12405         if eval $compile; then
12406                 yyy=`./try$exe_ext`
12407                 case "$yyy" in
12408                 12345678901)
12409                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12410                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12411                         echo "We will use %Ld."
12412                         ;;
12413                 esac
12414         fi
12415 fi
12416
12417 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12418         $cat >try.c <<EOCP
12419 #include <sys/types.h>
12420 #include <stdio.h>
12421 int main() {
12422   $quadtype q = 12345678901;
12423   printf("%qd\n", q);
12424 }
12425 EOCP
12426         set try
12427         if eval $compile; then
12428                 yyy=`./try$exe_ext`
12429                 case "$yyy" in
12430                 12345678901)
12431                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12432                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12433                         echo "We will use %qd."
12434                         ;;
12435                 esac
12436         fi
12437 fi
12438
12439 if $test X"$sPRId64" = X; then
12440         echo "Cannot figure out how to print 64-bit integers." >&4
12441 fi
12442
12443 $rm -f try try.*
12444
12445 fi
12446
12447 case "$sPRId64" in
12448 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
12449         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
12450         ;;
12451 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
12452         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
12453         ;;
12454 esac
12455
12456
12457 echo " "
12458 $echo "Checking the format strings to be used for Perl's internal types..." >&4
12459
12460 if $test X"$ivsize" = X8; then
12461         ivdformat="$sPRId64"
12462         uvuformat="$sPRIu64"
12463         uvoformat="$sPRIo64"
12464         uvxformat="$sPRIx64"
12465 else
12466         if $test X"$ivsize" = X"$longsize"; then
12467                 ivdformat='"ld"'
12468                 uvuformat='"lu"'
12469                 uvoformat='"lo"'
12470                 uvxformat='"lx"'
12471         else
12472                 if $test X"$ivsize" = X"$intsize"; then
12473                         ivdformat='"d"'
12474                         uvuformat='"u"'
12475                         uvoformat='"o"'
12476                         uvxformat='"x"'
12477                 else
12478                         : far out
12479                         if $test X"$ivsize" = X"$shortsize"; then
12480                                 ivdformat='"hd"'
12481                                 uvuformat='"hu"'
12482                                 uvoformat='"ho"'
12483                                 uvxformat='"hx"'
12484                         fi
12485                 fi
12486         fi
12487 fi
12488
12489 case "$ivdformat" in
12490 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
12491     exit 1
12492     ;;
12493 esac
12494
12495
12496 echo " "
12497 $echo "Checking the format string to be used for gids..." >&4
12498
12499 case "$gidsign" in
12500 -1)     if $test X"$gidsize" = X"$ivsize"; then
12501                 gidformat="$ivdformat"
12502         else
12503                 if $test X"$gidsize" = X"$longsize"; then
12504                         gidformat='"ld"'
12505                 else
12506                         if $test X"$gidsize" = X"$intsize"; then
12507                                 gidformat='"d"'
12508                         else
12509                                 if $test X"$gidsize" = X"$shortsize"; then
12510                                         gidformat='"hd"'
12511                                 fi
12512                         fi
12513                 fi
12514         fi
12515         ;;
12516 *)      if $test X"$gidsize" = X"$uvsize"; then
12517                 gidformat="$uvuformat"
12518         else
12519                 if $test X"$gidsize" = X"$longsize"; then
12520                         gidformat='"lu"'
12521                 else
12522                         if $test X"$gidsize" = X"$intsize"; then
12523                                 gidformat='"u"'
12524                         else
12525                                 if $test X"$gidsize" = X"$shortsize"; then
12526                                         gidformat='"hu"'
12527                                 fi
12528                         fi
12529                 fi
12530         fi
12531         ;;
12532 esac
12533
12534 : see if getgroups exists
12535 set getgroups d_getgrps
12536 eval $inlibc
12537
12538 : see if setgroups exists
12539 set setgroups d_setgrps
12540 eval $inlibc
12541
12542
12543 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
12544 echo " "
12545 case "$d_getgrps$d_setgrps" in
12546 *define*)
12547         case "$groupstype" in
12548         '') dflt="$gidtype" ;;
12549         *)  dflt="$groupstype" ;;
12550         esac
12551         $cat <<EOM
12552 What type of pointer is the second argument to getgroups() and setgroups()?
12553 Usually this is the same as group ids, $gidtype, but not always.
12554
12555 EOM
12556         rp='What type pointer is the second argument to getgroups() and setgroups()?'
12557         . ./myread
12558         groupstype="$ans"
12559         ;;
12560 *)  groupstype="$gidtype";;
12561 esac
12562
12563 echo " "
12564 echo "Checking if your $make program sets \$(MAKE)..." >&4
12565 case "$make_set_make" in
12566 '')
12567         $sed 's/^X //' > testmake.mak << 'EOF'
12568 Xall:
12569 X       @echo 'maketemp="$(MAKE)"'
12570 EOF
12571         case "`$make -f testmake.mak 2>/dev/null`" in
12572         *maketemp=*) make_set_make='#' ;;
12573         *)      make_set_make="MAKE=$make" ;;
12574         esac
12575         $rm -f testmake.mak
12576         ;;
12577 esac
12578 case "$make_set_make" in
12579 '#') echo "Yup, it does.";;
12580 *) echo "Nope, it doesn't.";;
12581 esac
12582
12583 : see what type is used for mode_t
12584 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
12585 set mode_t modetype int stdio.h sys/types.h
12586 eval $typedef_ask
12587
12588 : define a fucntion to check prototypes
12589 $cat > protochk <<EOSH
12590 $startsh
12591 cc="$cc"
12592 optimize="$optimize"
12593 ccflags="$ccflags"
12594 prototype="$prototype"
12595 define="$define"
12596 rm=$rm
12597 EOSH
12598
12599 $cat >> protochk <<'EOSH'
12600
12601 $rm -f try.c
12602 foo="$1"
12603 shift
12604 while test $# -ge 2; do
12605         case "$1" in
12606                 $define) echo "#include <$2>" >> try.c ;;
12607                 literal) echo "$2" >> try.c ;;
12608         esac
12609     shift 2
12610 done
12611 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
12612 cat >> try.c <<'EOCP'
12613 #ifdef CAN_PROTOTYPE
12614 #define _(args) args
12615 #else
12616 #define _(args) ()
12617 #endif
12618 EOCP
12619 echo "$foo" >> try.c
12620 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
12621 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
12622 status=$?
12623 $rm -f try.[co]
12624 exit $status
12625 EOSH
12626 chmod +x protochk
12627 $eunicefix protochk
12628
12629 : see what type is used for size_t
12630 rp="What is the type used for the length parameter for string functions?"
12631 set size_t sizetype 'unsigned int' stdio.h sys/types.h
12632 eval $typedef_ask
12633
12634 : check for type of arguments to gethostbyaddr. 
12635 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
12636         case "$d_gethbyaddr" in
12637         $define)
12638                 $cat <<EOM
12639
12640 Checking to see what type of arguments are accepted by gethostbyaddr().
12641 EOM
12642                 hdrs="$define sys/types.h
12643                         $d_socket sys/socket.h 
12644                         $i_niin netinet/in.h 
12645                         $i_netdb netdb.h
12646                         $i_unistd unistd.h"
12647                 : The first arg can 'char *' or 'void *'
12648                 : The second arg is some of integral type
12649                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
12650                         for yyy in size_t long int; do
12651                                 case "$netdb_host_type" in
12652                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
12653                                         if ./protochk "$try" $hdrs; then
12654                                                 echo "Your system accepts $xxx for the first arg."
12655                                                 echo "...and $yyy for the second arg."
12656                                                 netdb_host_type="$xxx"
12657                                                 netdb_hlen_type="$yyy"
12658                                         fi
12659                                         ;;
12660                                 esac
12661                         done
12662                 done
12663                 : In case none of those worked, prompt the user.
12664                 case "$netdb_host_type" in
12665                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
12666                         dflt='char *'
12667                         . ./myread
12668                         netdb_host_type=$ans
12669                         rp='What is the type for the 2nd argument to gethostbyaddr?'
12670                         dflt="$sizetype"
12671                         . ./myread
12672                         netdb_hlen_type=$ans
12673                         ;;
12674                 esac
12675                 ;;
12676         *)      : no gethostbyaddr, so pick harmless defaults
12677                 netdb_host_type='char *'
12678                 netdb_hlen_type="$sizetype"
12679                 ;;
12680         esac
12681         # Remove the "const" if needed. -- but then we'll have a 
12682         # prototype clash!
12683         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
12684 fi
12685
12686 : check for type of argument to gethostbyname. 
12687 if test "X$netdb_name_type" = X ; then
12688         case "$d_gethbyname" in
12689         $define)
12690                 $cat <<EOM
12691
12692 Checking to see what type of argument is accepted by gethostbyname().
12693 EOM
12694                 hdrs="$define sys/types.h
12695                         $d_socket sys/socket.h 
12696                         $i_niin netinet/in.h 
12697                         $i_netdb netdb.h
12698                         $i_unistd unistd.h"
12699                 for xxx in "const char *" "char *"; do
12700                         case "$netdb_name_type" in
12701                         '')     try="extern struct hostent *gethostbyname($xxx);"
12702                                 if ./protochk "$try" $hdrs; then
12703                                         echo "Your system accepts $xxx."
12704                                         netdb_name_type="$xxx"
12705                                 fi
12706                                 ;;
12707                         esac
12708                 done
12709                 : In case none of those worked, prompt the user.
12710                 case "$netdb_name_type" in
12711                 '')     rp='What is the type for the 1st argument to gethostbyname?'
12712                         dflt='char *'
12713                         . ./myread
12714                         netdb_name_type=$ans
12715                         ;;
12716                 esac
12717                 ;;
12718         *)      : no gethostbyname, so pick harmless default
12719                 netdb_name_type='char *'
12720                 ;;
12721         esac
12722 fi
12723
12724 : check for type of 1st argument to getnetbyaddr. 
12725 if test "X$netdb_net_type" = X ; then
12726         case "$d_getnbyaddr" in
12727         $define)
12728                 $cat <<EOM
12729
12730 Checking to see what type of 1st argument is accepted by getnetbyaddr().
12731 EOM
12732                 hdrs="$define sys/types.h
12733                         $d_socket sys/socket.h 
12734                         $i_niin netinet/in.h 
12735                         $i_netdb netdb.h
12736                         $i_unistd unistd.h"
12737                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
12738                         case "$netdb_net_type" in
12739                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
12740                                 if ./protochk "$try" $hdrs; then
12741                                         echo "Your system accepts $xxx."
12742                                         netdb_net_type="$xxx"
12743                                 fi
12744                                 ;;
12745                         esac
12746                 done
12747                 : In case none of those worked, prompt the user.
12748                 case "$netdb_net_type" in
12749                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
12750                         dflt='long'
12751                         . ./myread
12752                         netdb_net_type=$ans
12753                         ;;
12754                 esac
12755                 ;;
12756         *)      : no getnetbyaddr, so pick harmless default
12757                 netdb_net_type='long'
12758                 ;;
12759         esac
12760 fi
12761 : locate the preferred pager for this system
12762 case "$pager" in
12763 '')
12764         dflt=''
12765         case "$pg" in
12766         /*) dflt=$pg;;
12767         esac
12768         case "$more" in
12769         /*) dflt=$more;;
12770         esac
12771         case "$less" in
12772         /*) dflt=$less;;
12773         esac
12774         case "$dflt" in
12775         '') dflt=/usr/ucb/more;;
12776         esac
12777         ;;
12778 *) dflt="$pager";;
12779 esac
12780 echo " "
12781 fn=f/
12782 rp='What pager is used on your system?'
12783 . ./getfile
12784 pager="$ans"
12785
12786 : see what type pids are declared as in the kernel
12787 rp="What is the type of process ids on this system?"
12788 set pid_t pidtype int stdio.h sys/types.h
12789 eval $typedef_ask
12790
12791 : check for length of pointer
12792 echo " "
12793 case "$ptrsize" in
12794 '')
12795         $echo $n "Checking to see how big your pointers are...$c" >&4
12796         if test "$voidflags" -gt 7; then
12797                 echo '#define VOID_PTR char *' > try.c
12798         else
12799                 echo '#define VOID_PTR void *' > try.c
12800         fi
12801         $cat >>try.c <<'EOCP'
12802 #include <stdio.h>
12803 int main()
12804 {
12805     printf("%d\n", (int)sizeof(VOID_PTR));
12806     exit(0);
12807 }
12808 EOCP
12809         set try
12810         if eval $compile_ok; then
12811                 ptrsize=`./try`
12812                 $echo " $ptrsize bytes." >&4
12813         else
12814                 dflt='4'
12815                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
12816                 rp="What is the size of a pointer (in bytes)?"
12817                 . ./myread
12818                 ptrsize="$ans"
12819         fi
12820         ;;
12821 esac
12822 $rm -f try.c try
12823
12824 : see if ar generates random libraries by itself
12825 echo " "
12826 echo "Checking how to generate random libraries on your machine..." >&4
12827 echo 'int bar1() { return bar2(); }' > bar1.c
12828 echo 'int bar2() { return 2; }' > bar2.c
12829 $cat > foo.c <<'EOP'
12830 int main() { printf("%d\n", bar1()); exit(0); }
12831 EOP
12832 $cc $ccflags -c bar1.c >/dev/null 2>&1
12833 $cc $ccflags -c bar2.c >/dev/null 2>&1
12834 $cc $ccflags -c foo.c >/dev/null 2>&1
12835 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
12836 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12837         ./foobar >/dev/null 2>&1; then
12838         echo "$ar appears to generate random libraries itself."
12839         orderlib=false
12840         ranlib=":"
12841 elif $ar ts bar$_a >/dev/null 2>&1 &&
12842         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12843         ./foobar >/dev/null 2>&1; then
12844                 echo "a table of contents needs to be added with '$ar ts'."
12845                 orderlib=false
12846                 ranlib="$ar ts"
12847 else
12848         case "$ranlib" in
12849         :) ranlib='';;
12850         '')
12851                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
12852                 $test -f $ranlib || ranlib=''
12853                 ;;
12854         esac
12855         if $test -n "$ranlib"; then
12856                 echo "your system has '$ranlib'; we'll use that."
12857                 orderlib=false
12858         else
12859                 echo "your system doesn't seem to support random libraries"
12860                 echo "so we'll use lorder and tsort to order the libraries."
12861                 orderlib=true
12862                 ranlib=":"
12863         fi
12864 fi
12865 $rm -f foo* bar* 
12866
12867 : check for type of arguments to select. 
12868 case "$selecttype" in
12869 '') case "$d_select" in
12870         $define)
12871                 echo " "
12872                 $cat <<EOM
12873 Checking to see what type of arguments are accepted by select().
12874 EOM
12875                 hdrs="$define sys/types.h
12876                         $i_systime sys/time.h 
12877                         $i_sysselct sys/select.h
12878                         $d_socket sys/socket.h"
12879                 : The first arg can be int, unsigned, or size_t
12880                 : The last arg may or may not be 'const'
12881                 val=''
12882                 : void pointer has been seen but using that
12883                 : breaks the selectminbits test
12884                 for xxx in 'fd_set *' 'int *'; do
12885                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
12886                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
12887                                         case "$val" in
12888                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
12889                                                 if ./protochk "$try" $hdrs; then
12890                                                         echo "Your system accepts $xxx."
12891                                                         val="$xxx"
12892                                                 fi
12893                                                 ;;
12894                                         esac
12895                                 done
12896                         done
12897                 done
12898                 case "$val" in
12899                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
12900                         case "$d_fd_set" in
12901                                 $define) dflt="fd_set *" ;;
12902                                 *)              dflt="int *" ;;
12903                         esac
12904                         . ./myread
12905                         val=$ans
12906                         ;;
12907                 esac
12908                 selecttype="$val"
12909                 ;;
12910         *)      : no select, so pick a harmless default
12911                 selecttype='int *'
12912                 ;;
12913         esac
12914         ;;
12915 esac
12916
12917 : check for the select 'width'
12918 case "$selectminbits" in
12919 '') case "$d_select" in
12920         $define)
12921                 $cat <<EOM
12922
12923 Checking to see on how many bits at a time your select() operates...
12924 EOM
12925                 $cat >try.c <<EOCP
12926 #include <sys/types.h>
12927 #$i_time I_TIME
12928 #$i_systime I_SYS_TIME
12929 #$i_systimek I_SYS_TIME_KERNEL
12930 #ifdef I_TIME
12931 #   include <time.h>
12932 #endif
12933 #ifdef I_SYS_TIME
12934 #   ifdef I_SYS_TIME_KERNEL
12935 #       define KERNEL
12936 #   endif
12937 #   include <sys/time.h>
12938 #   ifdef I_SYS_TIME_KERNEL
12939 #       undef KERNEL
12940 #   endif
12941 #endif
12942 #$i_sysselct I_SYS_SELECT
12943 #ifdef I_SYS_SELECT
12944 #include <sys/select.h>
12945 #endif
12946 #$d_socket HAS_SOCKET
12947 #ifdef HAS_SOCKET
12948 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12949 #endif
12950 #include <stdio.h>
12951 $selecttype b;
12952 #define S sizeof(*(b))
12953 #define MINBITS 64
12954 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
12955 #define NBITS  (NBYTES * 8)
12956 int main() {
12957     char s[NBYTES];
12958     struct timeval t;
12959     int i;
12960     FILE* fp;
12961     int fd;
12962
12963     fclose(stdin);
12964     fp = fopen("try.c", "r");
12965     if (fp == 0)
12966       exit(1);
12967     fd = fileno(fp);
12968     if (fd < 0)
12969       exit(2);
12970     b = ($selecttype)s;
12971     for (i = 0; i < NBITS; i++)
12972         FD_SET(i, b);
12973     t.tv_sec  = 0;
12974     t.tv_usec = 0;
12975     select(fd + 1, b, 0, 0, &t);
12976     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
12977     printf("%d\n", i + 1);
12978     return 0;
12979 }
12980 EOCP
12981                 set try
12982                 if eval $compile_ok; then
12983                         selectminbits=`./try`
12984                         case "$selectminbits" in
12985                         '')     cat >&4 <<EOM
12986 Cannot figure out on how many bits at a time your select() operates.
12987 I'll play safe and guess it is 32 bits.
12988 EOM
12989                                 selectminbits=32
12990                                 bits="32 bits"
12991                                 ;;
12992                         1)      bits="1 bit" ;;
12993                         *)      bits="$selectminbits bits" ;;
12994                         esac
12995                         echo "Your select() operates on $bits at a time." >&4
12996                 else
12997                         rp='What is the minimum number of bits your select() operates on?'
12998                         case "$byteorder" in
12999                         1234|12345678)  dflt=32 ;;
13000                         *)              dflt=1  ;;
13001                         esac
13002                         . ./myread
13003                         val=$ans
13004                         selectminbits="$val"
13005                 fi
13006                 $rm -f try.* try
13007                 ;;
13008         *)      : no select, so pick a harmless default
13009                 selectminbits='32'
13010                 ;;
13011         esac
13012         ;;
13013 esac
13014
13015 : Trace out the files included by signal.h, then look for SIGxxx names.
13016 : Remove SIGARRAYSIZE used by HPUX.
13017 : Remove SIGSTKSIZE used by Linux.
13018 : Remove SIGSTKSZ used by Posix.
13019 : Remove SIGTYP void lines used by OS2.
13020 : Some cpps, like os390, dont give the file name anywhere
13021 if [ "X$fieldn" = X ]; then
13022         : Just make some guesses.  We check them later.
13023         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13024 else
13025         xxx=`echo '#include <signal.h>' |
13026         $cppstdin $cppminus $cppflags 2>/dev/null |
13027         $grep '^[       ]*#.*include' | 
13028         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13029 fi
13030 : Check this list of files to be sure we have parsed the cpp output ok.
13031 : This will also avoid potentially non-existent files, such 
13032 : as ../foo/bar.h
13033 xxxfiles=''
13034 for xx in $xxx /dev/null ; do
13035         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13036 done
13037 : If we have found no files, at least try signal.h
13038 case "$xxxfiles" in
13039 '')     xxxfiles=`./findhdr signal.h` ;;
13040 esac
13041 xxx=`awk '
13042 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13043         print substr($2, 4, 20)
13044 }
13045 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13046         print substr($3, 4, 20)
13047 }' $xxxfiles`
13048 : Append some common names just in case the awk scan failed.
13049 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13050 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13051 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13052 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13053 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13054
13055 : generate a few handy files for later
13056 $cat > signal.c <<'EOCP'
13057 #include <sys/types.h>
13058 #include <signal.h>
13059 #include <stdio.h>
13060 int main() {
13061
13062 /* Strange style to avoid deeply-nested #if/#else/#endif */
13063 #ifndef NSIG
13064 #  ifdef _NSIG
13065 #    define NSIG (_NSIG)
13066 #  endif
13067 #endif
13068
13069 #ifndef NSIG
13070 #  ifdef SIGMAX
13071 #    define NSIG (SIGMAX+1)
13072 #  endif
13073 #endif
13074
13075 #ifndef NSIG
13076 #  ifdef SIG_MAX
13077 #    define NSIG (SIG_MAX+1)
13078 #  endif
13079 #endif
13080
13081 #ifndef NSIG
13082 #  ifdef MAXSIG
13083 #    define NSIG (MAXSIG+1)
13084 #  endif
13085 #endif
13086
13087 #ifndef NSIG
13088 #  ifdef MAX_SIG
13089 #    define NSIG (MAX_SIG+1)
13090 #  endif
13091 #endif
13092
13093 #ifndef NSIG
13094 #  ifdef SIGARRAYSIZE
13095 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13096 #  endif
13097 #endif
13098
13099 #ifndef NSIG
13100 #  ifdef _sys_nsig
13101 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13102 #  endif
13103 #endif
13104
13105 /* Default to some arbitrary number that's big enough to get most
13106    of the common signals.
13107 */
13108 #ifndef NSIG
13109 #    define NSIG 50
13110 #endif
13111
13112 printf("NSIG %d\n", NSIG);
13113
13114 #ifndef JUST_NSIG
13115
13116 EOCP
13117
13118 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13119 {
13120         printf "#ifdef SIG"; printf $1; printf "\n"
13121         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13122         printf $1; printf ");\n"
13123         printf "#endif\n"
13124 }
13125 END {
13126         printf "#endif /* JUST_NSIG */\n";
13127         printf "exit(0);\n}\n";
13128 }
13129 ' >>signal.c
13130 $cat >signal.awk <<'EOP'
13131 BEGIN { ndups = 0 }
13132 $1 ~ /^NSIG$/ { nsig = $2 }
13133 ($1 !~ /^NSIG$/) && (NF == 2) {
13134     if ($2 > maxsig) { maxsig = $2 }
13135     if (sig_name[$2]) {
13136         dup_name[ndups] = $1
13137         dup_num[ndups] = $2
13138         ndups++ 
13139     }
13140     else {
13141         sig_name[$2] = $1
13142         sig_num[$2] = $2
13143     }
13144 }
13145 END { 
13146     if (nsig == 0) {
13147         nsig = maxsig + 1
13148     }
13149     printf("NSIG %d\n", nsig);
13150     for (n = 1; n < nsig; n++) {
13151         if (sig_name[n]) {
13152             printf("%s %d\n", sig_name[n], sig_num[n])
13153         }
13154         else {
13155             printf("NUM%d %d\n", n, n) 
13156         }
13157     }
13158     for (n = 0; n < ndups; n++) {
13159         printf("%s %d\n", dup_name[n], dup_num[n])
13160     }
13161 }
13162 EOP
13163 $cat >signal_cmd <<EOS
13164 $startsh
13165 if $test -s signal.lst; then
13166     echo "Using your existing signal.lst file"
13167         exit 0
13168 fi
13169 xxx="$xxx"
13170 EOS
13171 $cat >>signal_cmd <<'EOS'
13172
13173 set signal
13174 if eval $compile_ok; then
13175         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13176 else
13177         echo "(I can't seem be able to compile the whole test program)" >&4
13178         echo "(I'll try it in little pieces.)" >&4
13179         set signal -DJUST_NSIG
13180         if eval $compile_ok; then
13181                 ./signal$_exe > signal.nsg
13182                 $cat signal.nsg
13183         else
13184                 echo "I can't seem to figure out how many signals you have." >&4
13185                 echo "Guessing 50." >&4
13186                 echo 'NSIG 50' > signal.nsg
13187         fi
13188         : Now look at all the signal names, one at a time.
13189         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13190                 $cat > signal.c <<EOCP
13191 #include <sys/types.h>
13192 #include <signal.h>
13193 #include <stdio.h>
13194 int main() {
13195 printf("$xx %d\n", SIG${xx});
13196 return 0;
13197 }
13198 EOCP
13199                 set signal
13200                 if eval $compile; then
13201                         echo "SIG${xx} found."
13202                         ./signal$_exe  >> signal.ls1
13203                 else
13204                         echo "SIG${xx} NOT found."
13205                 fi
13206         done
13207         if $test -s signal.ls1; then
13208                 $cat signal.nsg signal.ls1 |
13209                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13210         fi
13211
13212 fi
13213 if $test -s signal.lst; then
13214         :
13215 else
13216         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13217         echo 'kill -l' >signal
13218         set X `csh -f <signal`
13219         $rm -f signal
13220         shift
13221         case $# in
13222         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13223         esac
13224         echo $@ | $tr ' ' $trnl | \
13225             $awk '{ printf "%s %d\n", $1, ++s; }
13226                   END { printf "NSIG %d\n", ++s }' >signal.lst
13227 fi
13228 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13229 EOS
13230 chmod a+x signal_cmd
13231 $eunicefix signal_cmd
13232
13233 : generate list of signal names
13234 echo " "
13235 case "$sig_name_init" in
13236 '') doinit=yes ;;
13237 *)  case "$sig_num_init" in
13238     ''|*,*) doinit=yes ;;
13239     esac ;;
13240 esac
13241 case "$doinit" in
13242 yes)
13243         echo "Generating a list of signal names and numbers..." >&4
13244         . ./signal_cmd
13245         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13246         sig_name=`$awk 'BEGIN { printf "ZERO " }
13247                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13248         sig_num=`$awk  'BEGIN { printf "0 " }
13249                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13250         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
13251                              !/^NSIG/   { printf "\"%s\", ", $1 }
13252                              END        { printf "0\n" }' signal.lst`
13253         sig_num_init=`$awk  'BEGIN      { printf "0, " }
13254                              !/^NSIG/   { printf "%d, ", $2}
13255                              END        { printf "0\n"}' signal.lst`
13256         ;;
13257 esac
13258 echo "The following $sig_count signals are available:"
13259 echo " "
13260 echo $sig_name | $awk \
13261 'BEGIN { linelen = 0 }
13262 {
13263         for (i = 1; i <= NF; i++) {
13264                 name = "SIG" $i " "
13265                 linelen = linelen + length(name)
13266                 if (linelen > 70) {
13267                         printf "\n"
13268                         linelen = length(name)
13269                 }
13270                 printf "%s", name
13271         }
13272         printf "\n"
13273 }'
13274 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
13275
13276 : see what type is used for signed size_t
13277 set ssize_t ssizetype int stdio.h sys/types.h
13278 eval $typedef
13279 dflt="$ssizetype"
13280 $cat > ssize.c <<EOM
13281 #include <stdio.h>
13282 #include <sys/types.h>
13283 #define Size_t $sizetype
13284 #define SSize_t $dflt
13285 int main()
13286 {
13287         if (sizeof(Size_t) == sizeof(SSize_t))
13288                 printf("$dflt\n");
13289         else if (sizeof(Size_t) == sizeof(int))
13290                 printf("int\n");
13291         else 
13292                 printf("long\n");
13293         exit(0);
13294 }
13295 EOM
13296 echo " "
13297 set ssize
13298 if eval $compile_ok && ./ssize > /dev/null; then
13299         ssizetype=`./ssize`
13300         echo "I'll be using $ssizetype for functions returning a byte count." >&4
13301 else
13302         $cat >&4 <<EOM
13303 Help! I can't compile and run the ssize_t test program: please enlighten me!
13304 (This is probably a misconfiguration in your system or libraries, and
13305 you really ought to fix it.  Still, I'll try anyway.)
13306
13307 I need a type that is the same size as $sizetype, but is guaranteed to
13308 be signed.  Common values are ssize_t, int and long.
13309
13310 EOM
13311         rp="What signed type is the same size as $sizetype?"
13312         . ./myread
13313         ssizetype="$ans"
13314 fi
13315 $rm -f ssize ssize.*
13316
13317 : see what type of char stdio uses.
13318 echo " "
13319 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13320         echo "Your stdio uses unsigned chars." >&4
13321         stdchar="unsigned char"
13322 else
13323         echo "Your stdio uses signed chars." >&4
13324         stdchar="char"
13325 fi
13326
13327 : see if time exists
13328 echo " "
13329 if test "X$d_time" = X -o X"$timetype" = X; then
13330     if set time val -f d_time; eval $csym; $val; then
13331                 echo 'time() found.' >&4
13332                 val="$define"
13333                 rp="What is the type returned by time() on this system?"
13334                 set time_t timetype long stdio.h sys/types.h
13335                 eval $typedef_ask
13336     else
13337                 echo 'time() not found, hope that will do.' >&4
13338                 val="$undef"
13339                 timetype='int';
13340     fi
13341     set d_time
13342     eval $setvar
13343 fi
13344
13345 : see what type uids are declared as in the kernel
13346 echo " "
13347 echo "Looking for the type for user ids returned by getuid()."
13348 set uid_t uidtype xxx stdio.h sys/types.h
13349 eval $typedef
13350 case "$uidtype" in
13351 xxx)
13352         xxx=`./findhdr sys/user.h`
13353         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13354         case $1 in
13355         unsigned) dflt="$1 $2" ;;
13356         *) dflt="$1" ;;
13357         esac
13358         ;;
13359 *) dflt="$uidtype";;
13360 esac
13361 case "$uidtype" in
13362 uid_t)  echo "uid_t found." ;;
13363 *)      rp="What is the type for user ids returned by getuid()?"
13364         . ./myread
13365         uidtype="$ans"
13366         ;;
13367 esac
13368
13369 echo " "
13370 case "$uidtype" in
13371 *_t) zzz="$uidtype"     ;;
13372 *)   zzz="uid"          ;;
13373 esac
13374 echo "Checking the size of $zzz..." >&4 
13375 cat > try.c <<EOCP
13376 #include <sys/types.h>
13377 #include <stdio.h>
13378 int main() {
13379     printf("%d\n", (int)sizeof($uidtype));
13380     exit(0);
13381 }
13382 EOCP
13383 set try
13384 if eval $compile_ok; then
13385         yyy=`./try`
13386         case "$yyy" in
13387         '')     uidsize=4
13388                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
13389                 ;;
13390         *)      uidsize=$yyy
13391                 echo "Your $zzz size is $uidsize bytes."
13392                 ;;
13393         esac
13394 else
13395         uidsize=4
13396         echo "(I can't compile the test program--guessing $uidsize.)" >&4
13397 fi
13398
13399 echo " "
13400 case "$uidtype" in
13401 *_t) zzz="$uidtype"     ;;
13402 *)   zzz="uid"          ;;
13403 esac
13404 echo "Checking the sign of $zzz..." >&4
13405 cat > try.c <<EOCP
13406 #include <sys/types.h>
13407 #include <stdio.h>
13408 int main() {
13409         $uidtype foo = -1;
13410         if (foo < 0)
13411                 printf("-1\n");
13412         else
13413                 printf("1\n");
13414 }
13415 EOCP
13416 set try
13417 if eval $compile; then
13418         yyy=`./try`
13419         case "$yyy" in
13420         '')     uidsign=1
13421                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13422                 ;;
13423         *)      uidsign=$yyy
13424                 case "$uidsign" in
13425                  1) echo "Your $zzz is unsigned." ;;
13426                 -1) echo "Your $zzz is signed."   ;;
13427                 esac
13428                 ;;
13429         esac
13430 else
13431         uidsign=1
13432         echo "(I can't compile the test program--guessing unsigned.)" >&4
13433 fi
13434
13435
13436
13437 echo " "
13438 $echo "Checking the format string to be used for uids..." >&4
13439
13440 case "$uidsign" in
13441 -1)     if $test X"$uidsize" = X"$ivsize"; then
13442                 uidformat="$ivdformat"
13443         else
13444                 if $test X"$uidsize" = X"$longsize"; then
13445                         uidformat='"ld"'
13446                 else
13447                         if $test X"$uidsize" = X"$intsize"; then
13448                                 uidformat='"d"'
13449                         else
13450                                 if $test X"$uidsize" = X"$shortsize"; then
13451                                         uidformat='"hd"'
13452                                 fi
13453                         fi
13454                 fi
13455         fi
13456         ;;
13457 *)      if $test X"$uidsize" = X"$uvsize"; then
13458                 uidformat="$uvuformat"
13459         else
13460                 if $test X"$uidsize" = X"$longsize"; then
13461                         uidformat='"lu"'
13462                 else
13463                         if $test X"$uidsize" = X"$intsize"; then
13464                                 uidformat='"u"'
13465                         else
13466                                 if $test X"$uidsize" = X"$shortsize"; then
13467                                         uidformat='"hu"'
13468                                 fi
13469                         fi
13470                 fi
13471         fi
13472         ;;
13473 esac
13474
13475 : see if dbm.h is available
13476 : see if dbmclose exists
13477 set dbmclose d_dbmclose
13478 eval $inlibc
13479
13480 case "$d_dbmclose" in
13481 $define)
13482         set dbm.h i_dbm
13483         eval $inhdr
13484         case "$i_dbm" in
13485         $define)
13486                 val="$undef"
13487                 set i_rpcsvcdbm
13488                 eval $setvar
13489                 ;;
13490         *)      set rpcsvc/dbm.h i_rpcsvcdbm
13491                 eval $inhdr
13492                 ;;
13493         esac
13494         ;;
13495 *)      echo "We won't be including <dbm.h>"
13496         val="$undef"
13497         set i_dbm
13498         eval $setvar
13499         val="$undef"
13500         set i_rpcsvcdbm
13501         eval $setvar
13502         ;;
13503 esac
13504
13505 : see if this is a sys/file.h system
13506 val=''
13507 set sys/file.h val
13508 eval $inhdr
13509
13510 : do we need to include sys/file.h ?
13511 case "$val" in
13512 "$define")
13513         echo " "
13514         if $h_sysfile; then
13515                 val="$define"
13516                 echo "We'll be including <sys/file.h>." >&4
13517         else
13518                 val="$undef"
13519                 echo "We won't be including <sys/file.h>." >&4
13520         fi
13521         ;;
13522 *)
13523         h_sysfile=false
13524         ;;
13525 esac
13526 set i_sysfile
13527 eval $setvar
13528
13529 : see if fcntl.h is there
13530 val=''
13531 set fcntl.h val
13532 eval $inhdr
13533
13534 : see if we can include fcntl.h
13535 case "$val" in
13536 "$define")
13537         echo " "
13538         if $h_fcntl; then
13539                 val="$define"
13540                 echo "We'll be including <fcntl.h>." >&4
13541         else
13542                 val="$undef"
13543                 if $h_sysfile; then
13544         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
13545                 else
13546                         echo "We won't be including <fcntl.h>." >&4
13547                 fi
13548         fi
13549         ;;
13550 *)
13551         h_fcntl=false
13552         val="$undef"
13553         ;;
13554 esac
13555 set i_fcntl
13556 eval $setvar
13557
13558 : see if locale.h is available
13559 set locale.h i_locale
13560 eval $inhdr
13561
13562 : see if mach cthreads are available
13563 if test "X$usethreads" = "X$define"; then
13564         set mach/cthreads.h i_machcthr
13565         eval $inhdr
13566 else
13567         i_machcthr="$undef"
13568 fi
13569
13570
13571
13572 : see if this is a math.h system
13573 set math.h i_math
13574 eval $inhdr
13575
13576 : see if this is a mntent.h system
13577 set mntent.h i_mntent
13578 eval $inhdr
13579
13580 : see if ndbm.h is available
13581 set ndbm.h t_ndbm
13582 eval $inhdr
13583 case "$t_ndbm" in
13584 $define)
13585         : see if dbm_open exists
13586         set dbm_open d_dbm_open
13587         eval $inlibc
13588         case "$d_dbm_open" in
13589         $undef)
13590                 t_ndbm="$undef"
13591                 echo "We won't be including <ndbm.h>"
13592                 ;;
13593         esac
13594         ;;
13595 esac
13596 val="$t_ndbm"
13597 set i_ndbm
13598 eval $setvar
13599
13600 : see if net/errno.h is available
13601 val=''
13602 set net/errno.h val
13603 eval $inhdr
13604
13605 : Unfortunately, it causes problems on some systems.  Arrgh.
13606 case "$val" in
13607 $define)
13608         cat > try.c <<'EOM'
13609 #include <stdio.h>
13610 #include <errno.h>
13611 #include <net/errno.h>
13612 int func()
13613 {
13614         return ENOTSOCK;
13615 }
13616 EOM
13617         if $cc $ccflags -c try.c >/dev/null 2>&1; then
13618                 echo "We'll be including <net/errno.h>." >&4
13619         else
13620                 echo "We won't be including <net/errno.h>." >&4
13621                 val="$undef"
13622         fi
13623         $rm -f try.* try
13624         ;;
13625 esac
13626 set i_neterrno
13627 eval $setvar
13628
13629 : see if netinet/tcp.h is available
13630 set netinet/tcp.h i_netinettcp
13631 eval $inhdr
13632
13633 : see if this is a poll.h system
13634 set poll.h i_poll
13635 eval $inhdr
13636
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 | sort | uniq > Cppsym.know
13706 $rm -f Cppsym.a Cppsym.b
13707 cat <<EOSH > Cppsym
13708 $startsh
13709 if $test \$# -gt 0; then
13710  echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
13711 else
13712   $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
13713 fi
13714 $test -s Cppsym.got && exit 0
13715 exit 1
13716 EOSH
13717 chmod +x Cppsym
13718 $eunicefix Cppsym
13719 cat <<EOSH > Cppsym.try
13720 cat <<'EOCP' > try.c
13721 #include <stdio.h>
13722 int main() {
13723 EOCP
13724 $awk \\
13725 EOSH
13726 cat <<'EOSH' >> Cppsym.try
13727 'length($1) > 0 {
13728     printf "#ifdef %s\nprintf(\"%s\\n\");\n#endif\n", $1, $1
13729     printf "#ifdef _%s\nprintf(\"_%s\\n\");\n#endif\n", $1, $1
13730     printf "#ifdef __%s\nprintf(\"__%s\\n\");\n#endif\n", $1, $1
13731     printf "#ifdef __%s__\nprintf(\"__%s__\\n\");\n#endif\n", $1, $1 }' \
13732          >> try.c
13733 echo '}' >> try.c
13734 EOSH
13735 cat <<'EOSH' >> Cppsym.try
13736 set try
13737 eval $compile_ok && ./try$exe_ext
13738 EOSH
13739 chmod +x Cppsym.try
13740 $eunicefix Cppsym.try
13741 ./Cppsym < Cppsym.know > Cppsym.true
13742 : now check the C compiler for additional symbols
13743 postprocess_cc_v=''
13744 case "$osname" in
13745 aix) postprocess_cc_v="|$tr , ' '" ;;
13746 esac
13747 $cat >ccsym <<EOS
13748 $startsh
13749 $cat >tmp.c <<EOF
13750 extern int foo;
13751 EOF
13752 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
13753 do
13754         case "\$i" in
13755         -D*) echo "\$i" | $sed 's/^-D//';;
13756         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
13757         esac
13758 done
13759 $rm -f try.c
13760 EOS
13761 postprocess_cc_v=''
13762 chmod +x ccsym
13763 $eunicefix ccsym
13764 ./ccsym > ccsym1.raw
13765 if $test -s ccsym1.raw; then
13766        $sort ccsym1.raw | $uniq >ccsym.raw
13767 else
13768        mv ccsym1.raw ccsym.raw
13769 fi
13770
13771 $awk '/\=/ { print $0; next }
13772         { print $0"=1" }' ccsym.raw >ccsym.list
13773 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
13774 $comm -13 ccsym.true ccsym.list >ccsym.own
13775 $comm -12 ccsym.true ccsym.list >ccsym.com
13776 $comm -23 ccsym.true ccsym.list >ccsym.cpp
13777 also=''
13778 if $test -z ccsym.raw; then
13779         echo "Your C compiler doesn't seem to define any symbols!" >&4
13780         echo " "
13781         echo "However, your C preprocessor defines the following symbols:"
13782         $cat Cppsym.true
13783         ccsymbols=''
13784         cppsymbols=`$cat Cppsym.true`
13785         cppsymbols=`echo $cppsymbols`
13786         cppccsymbols="$cppsymbols"
13787 else
13788         if $test -s ccsym.com; then
13789                 echo "Your C compiler and pre-processor define these symbols:"
13790                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
13791                 also='also '
13792                 symbols='ones'
13793                 cppccsymbols=`$cat ccsym.com`
13794                 cppccsymbols=`echo $cppccsymbols`
13795                 $test "$silent" || sleep 1
13796         fi
13797         if $test -s ccsym.cpp; then
13798                 $test "$also" && echo " "
13799                 echo "Your C pre-processor ${also}defines the following symbols:"
13800                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
13801                 also='further '
13802                 cppsymbols=`$cat ccsym.cpp`
13803                 cppsymbols=`echo $cppsymbols`
13804                 $test "$silent" || sleep 1
13805         fi
13806         if $test -s ccsym.own; then
13807                 $test "$also" && echo " "
13808                 echo "Your C compiler ${also}defines the following cpp symbols:"
13809                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
13810                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
13811                 ccsymbols=`$cat ccsym.own`
13812                 ccsymbols=`echo $ccsymbols`
13813                 $test "$silent" || sleep 1
13814         fi
13815 fi
13816 $rm -f ccsym*
13817
13818 : see if this is a termio system
13819 val="$undef"
13820 val2="$undef"
13821 val3="$undef"
13822 if $test `./findhdr termios.h`; then
13823         set tcsetattr i_termios
13824         eval $inlibc
13825         val3="$i_termios"
13826 fi
13827 echo " "
13828 case "$val3" in
13829 "$define") echo "You have POSIX termios.h... good!" >&4;;
13830 *) if ./Cppsym pyr; then
13831                 case "`/bin/universe`" in
13832                 ucb) if $test `./findhdr sgtty.h`; then
13833                                 val2="$define"
13834                                 echo "<sgtty.h> found." >&4
13835                         else
13836                                 echo "System is pyramid with BSD universe."
13837                                 echo "<sgtty.h> not found--you could have problems." >&4
13838                         fi;;
13839                 *) if $test `./findhdr termio.h`; then
13840                                 val="$define"
13841                                 echo "<termio.h> found." >&4
13842                         else
13843                                 echo "System is pyramid with USG universe."
13844                                 echo "<termio.h> not found--you could have problems." >&4
13845                         fi;;
13846                 esac
13847         elif ./usg; then
13848                 if $test `./findhdr termio.h`; then
13849                         echo "<termio.h> found." >&4
13850                         val="$define"
13851                 elif $test `./findhdr sgtty.h`; then
13852                         echo "<sgtty.h> found." >&4
13853                         val2="$define"
13854                 else
13855 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
13856                 fi
13857         else
13858                 if $test `./findhdr sgtty.h`; then
13859                         echo "<sgtty.h> found." >&4
13860                         val2="$define"
13861                 elif $test `./findhdr termio.h`; then
13862                         echo "<termio.h> found." >&4
13863                         val="$define"
13864                 else
13865 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
13866                 fi
13867         fi;;
13868 esac
13869 set i_termio; eval $setvar
13870 val=$val2; set i_sgtty; eval $setvar
13871 val=$val3; set i_termios; eval $setvar
13872
13873 : see if this is a shadow.h system
13874 set shadow.h i_shadow
13875 eval $inhdr
13876
13877 : see if this is a socks.h system
13878 set socks.h i_socks
13879 eval $inhdr
13880
13881 : see if stdarg is available
13882 echo " "
13883 if $test `./findhdr stdarg.h`; then
13884         echo "<stdarg.h> found." >&4
13885         valstd="$define"
13886 else
13887         echo "<stdarg.h> NOT found." >&4
13888         valstd="$undef"
13889 fi
13890
13891 : see if varags is available
13892 echo " "
13893 if $test `./findhdr varargs.h`; then
13894         echo "<varargs.h> found." >&4
13895 else
13896         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
13897 fi
13898
13899 : set up the varargs testing programs
13900 $cat > varargs.c <<EOP
13901 #ifdef I_STDARG
13902 #include <stdarg.h>
13903 #endif
13904 #ifdef I_VARARGS
13905 #include <varargs.h>
13906 #endif
13907
13908 #ifdef I_STDARG
13909 int f(char *p, ...)
13910 #else
13911 int f(va_alist)
13912 va_dcl
13913 #endif
13914 {
13915         va_list ap;
13916 #ifndef I_STDARG
13917         char *p;
13918 #endif
13919 #ifdef I_STDARG
13920         va_start(ap,p);
13921 #else
13922         va_start(ap);
13923         p = va_arg(ap, char *);
13924 #endif
13925         va_end(ap);
13926 }
13927 EOP
13928 $cat > varargs <<EOP
13929 $startsh
13930 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
13931         echo "true"
13932 else
13933         echo "false"
13934 fi
13935 $rm -f varargs$_o
13936 EOP
13937 chmod +x varargs
13938
13939 : now check which varargs header should be included
13940 echo " "
13941 i_varhdr=''
13942 case "$valstd" in
13943 "$define")
13944         if `./varargs I_STDARG`; then
13945                 val='stdarg.h'
13946         elif `./varargs I_VARARGS`; then
13947                 val='varargs.h'
13948         fi
13949         ;;
13950 *)
13951         if `./varargs I_VARARGS`; then
13952                 val='varargs.h'
13953         fi
13954         ;;
13955 esac
13956 case "$val" in
13957 '')
13958 echo "I could not find the definition for va_dcl... You have problems..." >&4
13959         val="$undef"; set i_stdarg; eval $setvar
13960         val="$undef"; set i_varargs; eval $setvar
13961         ;;
13962 *) 
13963         set i_varhdr
13964         eval $setvar
13965         case "$i_varhdr" in
13966         stdarg.h)
13967                 val="$define"; set i_stdarg; eval $setvar
13968                 val="$undef"; set i_varargs; eval $setvar
13969                 ;;
13970         varargs.h)
13971                 val="$undef"; set i_stdarg; eval $setvar
13972                 val="$define"; set i_varargs; eval $setvar
13973                 ;;
13974         esac
13975         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
13976 esac
13977 $rm -f varargs*
13978
13979 : see if stddef is available
13980 set stddef.h i_stddef
13981 eval $inhdr
13982
13983 : see if sys/access.h is available
13984 set sys/access.h i_sysaccess
13985 eval $inhdr
13986
13987 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
13988 set sys/filio.h i_sysfilio
13989 eval $inhdr
13990 echo " "
13991 if $test `./findhdr sys/ioctl.h`; then
13992         val="$define"
13993         echo '<sys/ioctl.h> found.' >&4
13994 else
13995         val="$undef"
13996         if $test $i_sysfilio = "$define"; then
13997             echo '<sys/ioctl.h> NOT found.' >&4
13998         else
13999                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14000                 $test $i_termio = "$define" && xxx="termio.h"
14001                 $test $i_termios = "$define" && xxx="termios.h"
14002 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14003         fi
14004 fi
14005 set i_sysioctl
14006 eval $setvar
14007
14008 : see if sys/resource.h has to be included
14009 set sys/resource.h i_sysresrc
14010 eval $inhdr
14011
14012 : see if sys/security.h is available
14013 set sys/security.h i_syssecrt
14014 eval $inhdr
14015
14016 : see if this is a sys/statvfs.h system
14017 set sys/statvfs.h i_sysstatvfs
14018 eval $inhdr
14019
14020 : see if this is a sys/uio.h system
14021 set sys/uio.h i_sysuio
14022 eval $inhdr
14023
14024 : see if this is a sys/un.h system
14025 set sys/un.h i_sysun
14026 eval $inhdr
14027
14028 : see if this is a syswait system
14029 set sys/wait.h i_syswait
14030 eval $inhdr
14031
14032 : see if this is a ustat.h system
14033 set ustat.h i_ustat
14034 eval $inhdr
14035
14036 : see if this is an utime system
14037 set utime.h i_utime
14038 eval $inhdr
14039
14040 : see if this is a values.h system
14041 set values.h i_values
14042 eval $inhdr
14043
14044 : see if this is a vfork system
14045 case "$d_vfork" in
14046 "$define")
14047         set vfork.h i_vfork
14048         eval $inhdr
14049         ;;
14050 *)
14051         i_vfork="$undef"
14052         ;;
14053 esac
14054
14055 : see if gdbm.h is available
14056 set gdbm.h t_gdbm
14057 eval $inhdr
14058 case "$t_gdbm" in
14059 $define)
14060         : see if gdbm_open exists
14061         set gdbm_open d_gdbm_open
14062         eval $inlibc
14063         case "$d_gdbm_open" in
14064         $undef)
14065                 t_gdbm="$undef"
14066                 echo "We won't be including <gdbm.h>"
14067                 ;;
14068         esac
14069         ;;
14070 esac
14071 val="$t_gdbm"
14072 set i_gdbm
14073 eval $setvar
14074
14075 echo " "
14076 echo "Looking for extensions..." >&4
14077 : If we are using the old config.sh, known_extensions may contain
14078 : old or inaccurate or duplicate values.
14079 known_extensions=''
14080 nonxs_extensions=''
14081 : We do not use find because it might not be available.
14082 : We do not just use MANIFEST because the user may have dropped
14083 : some additional extensions into the source tree and expect them
14084 : to be built.
14085
14086 : Function to recursively find available extensions, ignoring DynaLoader
14087 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14088 find_extensions='
14089     for xxx in *; do
14090        case "$xxx" in
14091            DynaLoader|dynaload) ;;
14092            *)
14093            if $test -f $xxx/$xxx.xs; then
14094                known_extensions="$known_extensions $1$xxx";
14095            elif $test -f $xxx/Makefile.PL; then
14096                nonxs_extensions="$nonxs_extensions $1$xxx";
14097            else
14098                if $test -d $xxx -a $# -lt 10; then
14099                    set $1$xxx/ $*;
14100                    cd $xxx;
14101                    eval $find_extensions;
14102                    cd ..;
14103                    shift;
14104                fi;
14105            fi
14106            ;;
14107        esac;
14108     done'
14109 tdir=`pwd`
14110 cd $rsrc/ext
14111 set X
14112 shift
14113 eval $find_extensions
14114 set X $nonxs_extensions
14115 shift
14116 nonxs_extensions="$*"
14117 set X $known_extensions
14118 shift
14119 known_extensions="$*"
14120 cd $tdir
14121
14122 : Now see which are supported on this system.
14123 avail_ext=''
14124 for xxx in $known_extensions ; do
14125         case "$xxx" in
14126         DB_File|db_file)
14127                 case "$i_db" in
14128                 $define) avail_ext="$avail_ext $xxx" ;;
14129                 esac
14130                 ;;
14131         GDBM_File|gdbm_fil)
14132                 case "$i_gdbm" in 
14133                 $define) avail_ext="$avail_ext $xxx" ;;
14134                 esac
14135                 ;;
14136         NDBM_File|ndbm_fil)
14137                 case "$i_ndbm" in
14138                 $define) avail_ext="$avail_ext $xxx" ;;
14139                 esac
14140                 ;;
14141         ODBM_File|odbm_fil) 
14142                 case "${i_dbm}${i_rpcsvcdbm}" in
14143                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14144                 esac
14145                 ;;
14146         POSIX|posix)
14147                 case "$useposix" in
14148                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14149                 esac
14150                 ;;
14151         Opcode|opcode)
14152                 case "$useopcode" in
14153                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14154                 esac
14155                 ;;
14156         Socket|socket)
14157                 case "$d_socket" in 
14158                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14159                 esac
14160                 ;;
14161         Thread|thread)
14162                 case "$usethreads" in 
14163                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14164                 esac
14165                 ;;
14166         IPC/SysV|ipc/sysv)
14167                 : XXX Do we need a useipcsysv variable here
14168                 case "${d_msg}${d_sem}${d_shm}" in 
14169                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14170                 esac
14171                 ;;
14172         *)      avail_ext="$avail_ext $xxx"
14173                 ;;
14174         esac
14175 done
14176
14177 set X $avail_ext
14178 shift
14179 avail_ext="$*"
14180
14181 : Now see which nonxs extensions are supported on this system.
14182 : For now assume all are.
14183 nonxs_ext=''
14184 for xxx in $nonxs_extensions ; do
14185         case "$xxx" in
14186         *)      nonxs_ext="$nonxs_ext $xxx"
14187                 ;;
14188         esac
14189 done
14190
14191 set X $nonxs_ext
14192 shift
14193 nonxs_ext="$*"
14194
14195 case $usedl in
14196 $define)
14197         $cat <<EOM
14198 A number of extensions are supplied with $package.  You may choose to
14199 compile these extensions for dynamic loading (the default), compile
14200 them into the $package executable (static loading), or not include
14201 them at all.  Answer "none" to include no extensions.
14202 Note that DynaLoader is always built and need not be mentioned here.
14203
14204 EOM
14205         case "$dynamic_ext" in
14206         '') dflt="$avail_ext" ;;
14207         *)      dflt="$dynamic_ext"
14208                 # Perhaps we are reusing an old out-of-date config.sh.
14209                 case "$hint" in
14210                 previous)
14211                         if test X"$dynamic_ext" != X"$avail_ext"; then
14212                                 $cat <<EOM
14213 NOTICE:  Your previous config.sh list may be incorrect. 
14214 The extensions now available to you are 
14215         ${avail_ext}
14216 but the default list from your previous config.sh is
14217         ${dynamic_ext} 
14218
14219 EOM
14220                         fi
14221                         ;;
14222                 esac
14223                 ;;
14224         esac
14225         case "$dflt" in
14226         '')     dflt=none;;
14227         esac
14228         rp="What extensions do you wish to load dynamically?"
14229         . ./myread
14230         case "$ans" in
14231         none) dynamic_ext=' ' ;;
14232         *) dynamic_ext="$ans" ;;
14233         esac
14234
14235         case "$static_ext" in
14236         '')
14237                 : Exclude those already listed in dynamic linking
14238                 dflt=''
14239                 for xxx in $avail_ext; do
14240                         case " $dynamic_ext " in
14241                         *" $xxx "*) ;;
14242                         *) dflt="$dflt $xxx" ;;
14243                         esac
14244                 done
14245                 set X $dflt
14246                 shift
14247                 dflt="$*"
14248                 ;;
14249         *)  dflt="$static_ext" 
14250                 ;;
14251         esac
14252
14253         case "$dflt" in
14254         '')     dflt=none;;
14255         esac
14256         rp="What extensions do you wish to load statically?"
14257         . ./myread
14258         case "$ans" in
14259         none) static_ext=' ' ;;
14260         *) static_ext="$ans" ;;
14261         esac
14262         ;;
14263 *)
14264         $cat <<EOM
14265 A number of extensions are supplied with $package.  Answer "none" 
14266 to include no extensions. 
14267 Note that DynaLoader is always built and need not be mentioned here.
14268
14269 EOM
14270         case "$static_ext" in
14271         '') dflt="$avail_ext" ;;
14272         *)      dflt="$static_ext"
14273                 # Perhaps we are reusing an old out-of-date config.sh.
14274                 case "$hint" in
14275                 previous)
14276                         if test X"$static_ext" != X"$avail_ext"; then
14277                                 $cat <<EOM
14278 NOTICE:  Your previous config.sh list may be incorrect. 
14279 The extensions now available to you are 
14280         ${avail_ext}
14281 but the default list from your previous config.sh is
14282         ${static_ext} 
14283
14284 EOM
14285                         fi
14286                         ;;
14287                 esac
14288                 ;;
14289         esac
14290         : Exclude those that are not xs extensions
14291         case "$dflt" in
14292         '')     dflt=none;;
14293         esac
14294         rp="What extensions do you wish to include?"
14295         . ./myread
14296         case "$ans" in
14297         none) static_ext=' ' ;;
14298         *) static_ext="$ans" ;;
14299         esac
14300         ;;
14301 esac
14302
14303 set X $dynamic_ext $static_ext $nonxs_ext
14304 shift
14305 extensions="$*"
14306
14307 : Remove build directory name from cppstdin so it can be used from
14308 : either the present location or the final installed location.
14309 echo " "
14310 : Get out of the UU directory to get correct path name.
14311 cd ..
14312 case "$cppstdin" in
14313 `pwd`/cppstdin)
14314         echo "Stripping down cppstdin path name"
14315         cppstdin=cppstdin
14316         ;;
14317 esac
14318 cd UU
14319
14320 : end of configuration questions
14321 echo " "
14322 echo "End of configuration questions."
14323 echo " "
14324
14325 : back to where it started
14326 if test -d ../UU; then
14327         cd ..
14328 fi
14329
14330 : configuration may be patched via a 'config.over' file
14331 if $test -f config.over; then
14332         echo " "
14333         dflt=y
14334         rp='I see a config.over file.  Do you wish to load it?'
14335         . UU/myread
14336         case "$ans" in
14337         n*) echo "OK, I'll ignore it.";;
14338         *)      . ./config.over
14339                 echo "Configuration override changes have been loaded."
14340                 ;;
14341         esac
14342 fi
14343
14344 : in case they want portability, strip down executable paths
14345 case "$d_portable" in
14346 "$define")
14347         echo " "
14348         echo "Stripping down executable paths..." >&4
14349         for file in $loclist $trylist; do
14350                 eval temp=\$$file
14351                 eval $file=`basename $temp`
14352         done
14353         ;;
14354 esac
14355
14356 : create config.sh file
14357 echo " "
14358 echo "Creating config.sh..." >&4
14359 $spitshell <<EOT >config.sh
14360 $startsh
14361 #
14362 # This file was produced by running the Configure script. It holds all the
14363 # definitions figured out by Configure. Should you modify one of these values,
14364 # do not forget to propagate your changes by running "Configure -der". You may
14365 # instead choose to run each of the .SH files by yourself, or "Configure -S".
14366 #
14367
14368 # Package name      : $package
14369 # Source directory  : $src
14370 # Configuration time: $cf_time
14371 # Configured by     : $cf_by
14372 # Target system     : $myuname
14373
14374 Author='$Author'
14375 Date='$Date'
14376 Header='$Header'
14377 Id='$Id'
14378 Locker='$Locker'
14379 Log='$Log'
14380 Mcc='$Mcc'
14381 RCSfile='$RCSfile'
14382 Revision='$Revision'
14383 Source='$Source'
14384 State='$State'
14385 _a='$_a'
14386 _exe='$_exe'
14387 _o='$_o'
14388 afs='$afs'
14389 alignbytes='$alignbytes'
14390 ansi2knr='$ansi2knr'
14391 aphostname='$aphostname'
14392 api_revision='$api_revision'
14393 api_subversion='$api_subversion'
14394 api_version='$api_version'
14395 api_versionstring='$api_versionstring'
14396 ar='$ar'
14397 archlib='$archlib'
14398 archlibexp='$archlibexp'
14399 archname64='$archname64'
14400 archname='$archname'
14401 archobjs='$archobjs'
14402 awk='$awk'
14403 baserev='$baserev'
14404 bash='$bash'
14405 bin='$bin'
14406 bincompat5005='$bincompat5005'
14407 binexp='$binexp'
14408 bison='$bison'
14409 byacc='$byacc'
14410 byteorder='$byteorder'
14411 c='$c'
14412 castflags='$castflags'
14413 cat='$cat'
14414 cc='$cc'
14415 cccdlflags='$cccdlflags'
14416 ccdlflags='$ccdlflags'
14417 ccflags='$ccflags'
14418 ccsymbols='$ccsymbols'
14419 cf_by='$cf_by'
14420 cf_email='$cf_email'
14421 cf_time='$cf_time'
14422 charsize='$charsize'
14423 chgrp='$chgrp'
14424 chmod='$chmod'
14425 chown='$chown'
14426 clocktype='$clocktype'
14427 comm='$comm'
14428 compress='$compress'
14429 contains='$contains'
14430 cp='$cp'
14431 cpio='$cpio'
14432 cpp='$cpp'
14433 cpp_stuff='$cpp_stuff'
14434 cppccsymbols='$cppccsymbols'
14435 cppflags='$cppflags'
14436 cpplast='$cpplast'
14437 cppminus='$cppminus'
14438 cpprun='$cpprun'
14439 cppstdin='$cppstdin'
14440 cppsymbols='$cppsymbols'
14441 crosscompile='$crosscompile'
14442 cryptlib='$cryptlib'
14443 csh='$csh'
14444 d_Gconvert='$d_Gconvert'
14445 d_PRIEldbl='$d_PRIEldbl'
14446 d_PRIFldbl='$d_PRIFldbl'
14447 d_PRIGldbl='$d_PRIGldbl'
14448 d_PRIX64='$d_PRIX64'
14449 d_PRId64='$d_PRId64'
14450 d_PRIeldbl='$d_PRIeldbl'
14451 d_PRIfldbl='$d_PRIfldbl'
14452 d_PRIgldbl='$d_PRIgldbl'
14453 d_PRIi64='$d_PRIi64'
14454 d_PRIo64='$d_PRIo64'
14455 d_PRIu64='$d_PRIu64'
14456 d_PRIx64='$d_PRIx64'
14457 d_access='$d_access'
14458 d_accessx='$d_accessx'
14459 d_alarm='$d_alarm'
14460 d_archlib='$d_archlib'
14461 d_atolf='$d_atolf'
14462 d_atoll='$d_atoll'
14463 d_attribut='$d_attribut'
14464 d_bcmp='$d_bcmp'
14465 d_bcopy='$d_bcopy'
14466 d_bincompat5005='$d_bincompat5005'
14467 d_bsd='$d_bsd'
14468 d_bsdgetpgrp='$d_bsdgetpgrp'
14469 d_bsdsetpgrp='$d_bsdsetpgrp'
14470 d_bzero='$d_bzero'
14471 d_casti32='$d_casti32'
14472 d_castneg='$d_castneg'
14473 d_charvspr='$d_charvspr'
14474 d_chown='$d_chown'
14475 d_chroot='$d_chroot'
14476 d_chsize='$d_chsize'
14477 d_closedir='$d_closedir'
14478 d_const='$d_const'
14479 d_crypt='$d_crypt'
14480 d_csh='$d_csh'
14481 d_cuserid='$d_cuserid'
14482 d_dbl_dig='$d_dbl_dig'
14483 d_difftime='$d_difftime'
14484 d_dirnamlen='$d_dirnamlen'
14485 d_dlerror='$d_dlerror'
14486 d_dlopen='$d_dlopen'
14487 d_dlsymun='$d_dlsymun'
14488 d_dosuid='$d_dosuid'
14489 d_drand48proto='$d_drand48proto'
14490 d_dup2='$d_dup2'
14491 d_eaccess='$d_eaccess'
14492 d_endgrent='$d_endgrent'
14493 d_endhent='$d_endhent'
14494 d_endnent='$d_endnent'
14495 d_endpent='$d_endpent'
14496 d_endpwent='$d_endpwent'
14497 d_endsent='$d_endsent'
14498 d_endspent='$d_endspent'
14499 d_eofnblk='$d_eofnblk'
14500 d_eunice='$d_eunice'
14501 d_fchmod='$d_fchmod'
14502 d_fchown='$d_fchown'
14503 d_fcntl='$d_fcntl'
14504 d_fd_macros='$d_fd_macros'
14505 d_fd_set='$d_fd_set'
14506 d_fds_bits='$d_fds_bits'
14507 d_fgetpos='$d_fgetpos'
14508 d_flexfnam='$d_flexfnam'
14509 d_flock='$d_flock'
14510 d_fork='$d_fork'
14511 d_fpathconf='$d_fpathconf'
14512 d_fpos64_t='$d_fpos64_t'
14513 d_fs_data_s='$d_fs_data_s'
14514 d_fseeko='$d_fseeko'
14515 d_fsetpos='$d_fsetpos'
14516 d_fstatfs='$d_fstatfs'
14517 d_fstatvfs='$d_fstatvfs'
14518 d_ftello='$d_ftello'
14519 d_ftime='$d_ftime'
14520 d_getgrent='$d_getgrent'
14521 d_getgrps='$d_getgrps'
14522 d_gethbyaddr='$d_gethbyaddr'
14523 d_gethbyname='$d_gethbyname'
14524 d_gethent='$d_gethent'
14525 d_gethname='$d_gethname'
14526 d_gethostprotos='$d_gethostprotos'
14527 d_getlogin='$d_getlogin'
14528 d_getmnt='$d_getmnt'
14529 d_getmntent='$d_getmntent'
14530 d_getnbyaddr='$d_getnbyaddr'
14531 d_getnbyname='$d_getnbyname'
14532 d_getnent='$d_getnent'
14533 d_getnetprotos='$d_getnetprotos'
14534 d_getpbyname='$d_getpbyname'
14535 d_getpbynumber='$d_getpbynumber'
14536 d_getpent='$d_getpent'
14537 d_getpgid='$d_getpgid'
14538 d_getpgrp2='$d_getpgrp2'
14539 d_getpgrp='$d_getpgrp'
14540 d_getppid='$d_getppid'
14541 d_getprior='$d_getprior'
14542 d_getprotoprotos='$d_getprotoprotos'
14543 d_getpwent='$d_getpwent'
14544 d_getsbyname='$d_getsbyname'
14545 d_getsbyport='$d_getsbyport'
14546 d_getsent='$d_getsent'
14547 d_getservprotos='$d_getservprotos'
14548 d_getspent='$d_getspent'
14549 d_getspnam='$d_getspnam'
14550 d_gettimeod='$d_gettimeod'
14551 d_gnulibc='$d_gnulibc'
14552 d_grpasswd='$d_grpasswd'
14553 d_hasmntopt='$d_hasmntopt'
14554 d_htonl='$d_htonl'
14555 d_index='$d_index'
14556 d_inetaton='$d_inetaton'
14557 d_int64t='$d_int64t'
14558 d_isascii='$d_isascii'
14559 d_killpg='$d_killpg'
14560 d_lchown='$d_lchown'
14561 d_ldbl_dig='$d_ldbl_dig'
14562 d_link='$d_link'
14563 d_locconv='$d_locconv'
14564 d_lockf='$d_lockf'
14565 d_longdbl='$d_longdbl'
14566 d_longlong='$d_longlong'
14567 d_lstat='$d_lstat'
14568 d_mblen='$d_mblen'
14569 d_mbstowcs='$d_mbstowcs'
14570 d_mbtowc='$d_mbtowc'
14571 d_memchr='$d_memchr'
14572 d_memcmp='$d_memcmp'
14573 d_memcpy='$d_memcpy'
14574 d_memmove='$d_memmove'
14575 d_memset='$d_memset'
14576 d_mkdir='$d_mkdir'
14577 d_mkfifo='$d_mkfifo'
14578 d_mktime='$d_mktime'
14579 d_msg='$d_msg'
14580 d_msg_ctrunc='$d_msg_ctrunc'
14581 d_msg_dontroute='$d_msg_dontroute'
14582 d_msg_oob='$d_msg_oob'
14583 d_msg_peek='$d_msg_peek'
14584 d_msg_proxy='$d_msg_proxy'
14585 d_msgctl='$d_msgctl'
14586 d_msgget='$d_msgget'
14587 d_msgrcv='$d_msgrcv'
14588 d_msgsnd='$d_msgsnd'
14589 d_mymalloc='$d_mymalloc'
14590 d_nice='$d_nice'
14591 d_nv_preserves_uv='$d_nv_preserves_uv'
14592 d_off64_t='$d_off64_t'
14593 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
14594 d_oldpthreads='$d_oldpthreads'
14595 d_oldsock='$d_oldsock'
14596 d_open3='$d_open3'
14597 d_pathconf='$d_pathconf'
14598 d_pause='$d_pause'
14599 d_phostname='$d_phostname'
14600 d_pipe='$d_pipe'
14601 d_poll='$d_poll'
14602 d_portable='$d_portable'
14603 d_pthread_yield='$d_pthread_yield'
14604 d_pwage='$d_pwage'
14605 d_pwchange='$d_pwchange'
14606 d_pwclass='$d_pwclass'
14607 d_pwcomment='$d_pwcomment'
14608 d_pwexpire='$d_pwexpire'
14609 d_pwgecos='$d_pwgecos'
14610 d_pwpasswd='$d_pwpasswd'
14611 d_pwquota='$d_pwquota'
14612 d_quad='$d_quad'
14613 d_readdir='$d_readdir'
14614 d_readlink='$d_readlink'
14615 d_rename='$d_rename'
14616 d_rewinddir='$d_rewinddir'
14617 d_rmdir='$d_rmdir'
14618 d_safebcpy='$d_safebcpy'
14619 d_safemcpy='$d_safemcpy'
14620 d_sanemcmp='$d_sanemcmp'
14621 d_sched_yield='$d_sched_yield'
14622 d_scm_rights='$d_scm_rights'
14623 d_seekdir='$d_seekdir'
14624 d_select='$d_select'
14625 d_sem='$d_sem'
14626 d_semctl='$d_semctl'
14627 d_semctl_semid_ds='$d_semctl_semid_ds'
14628 d_semctl_semun='$d_semctl_semun'
14629 d_semget='$d_semget'
14630 d_semop='$d_semop'
14631 d_setegid='$d_setegid'
14632 d_seteuid='$d_seteuid'
14633 d_setgrent='$d_setgrent'
14634 d_setgrps='$d_setgrps'
14635 d_sethent='$d_sethent'
14636 d_setlinebuf='$d_setlinebuf'
14637 d_setlocale='$d_setlocale'
14638 d_setnent='$d_setnent'
14639 d_setpent='$d_setpent'
14640 d_setpgid='$d_setpgid'
14641 d_setpgrp2='$d_setpgrp2'
14642 d_setpgrp='$d_setpgrp'
14643 d_setprior='$d_setprior'
14644 d_setpwent='$d_setpwent'
14645 d_setregid='$d_setregid'
14646 d_setresgid='$d_setresgid'
14647 d_setresuid='$d_setresuid'
14648 d_setreuid='$d_setreuid'
14649 d_setrgid='$d_setrgid'
14650 d_setruid='$d_setruid'
14651 d_setsent='$d_setsent'
14652 d_setsid='$d_setsid'
14653 d_setspent='$d_setspent'
14654 d_setvbuf='$d_setvbuf'
14655 d_sfio='$d_sfio'
14656 d_shm='$d_shm'
14657 d_shmat='$d_shmat'
14658 d_shmatprototype='$d_shmatprototype'
14659 d_shmctl='$d_shmctl'
14660 d_shmdt='$d_shmdt'
14661 d_shmget='$d_shmget'
14662 d_sigaction='$d_sigaction'
14663 d_sigsetjmp='$d_sigsetjmp'
14664 d_socket='$d_socket'
14665 d_sockpair='$d_sockpair'
14666 d_sqrtl='$d_sqrtl'
14667 d_statblks='$d_statblks'
14668 d_statfs_f_flags='$d_statfs_f_flags'
14669 d_statfs_s='$d_statfs_s'
14670 d_statvfs='$d_statvfs'
14671 d_stdio_cnt_lval='$d_stdio_cnt_lval'
14672 d_stdio_ptr_lval='$d_stdio_ptr_lval'
14673 d_stdio_stream_array='$d_stdio_stream_array'
14674 d_stdiobase='$d_stdiobase'
14675 d_stdstdio='$d_stdstdio'
14676 d_strchr='$d_strchr'
14677 d_strcoll='$d_strcoll'
14678 d_strctcpy='$d_strctcpy'
14679 d_strerrm='$d_strerrm'
14680 d_strerror='$d_strerror'
14681 d_strtod='$d_strtod'
14682 d_strtol='$d_strtol'
14683 d_strtold='$d_strtold'
14684 d_strtoll='$d_strtoll'
14685 d_strtoul='$d_strtoul'
14686 d_strtoull='$d_strtoull'
14687 d_strtouq='$d_strtouq'
14688 d_strxfrm='$d_strxfrm'
14689 d_suidsafe='$d_suidsafe'
14690 d_symlink='$d_symlink'
14691 d_syscall='$d_syscall'
14692 d_sysconf='$d_sysconf'
14693 d_sysernlst='$d_sysernlst'
14694 d_syserrlst='$d_syserrlst'
14695 d_system='$d_system'
14696 d_tcgetpgrp='$d_tcgetpgrp'
14697 d_tcsetpgrp='$d_tcsetpgrp'
14698 d_telldir='$d_telldir'
14699 d_telldirproto='$d_telldirproto'
14700 d_time='$d_time'
14701 d_times='$d_times'
14702 d_truncate='$d_truncate'
14703 d_tzname='$d_tzname'
14704 d_umask='$d_umask'
14705 d_uname='$d_uname'
14706 d_union_semun='$d_union_semun'
14707 d_ustat='$d_ustat'
14708 d_vendorbin='$d_vendorbin'
14709 d_vendorlib='$d_vendorlib'
14710 d_vfork='$d_vfork'
14711 d_void_closedir='$d_void_closedir'
14712 d_voidsig='$d_voidsig'
14713 d_voidtty='$d_voidtty'
14714 d_volatile='$d_volatile'
14715 d_vprintf='$d_vprintf'
14716 d_wait4='$d_wait4'
14717 d_waitpid='$d_waitpid'
14718 d_wcstombs='$d_wcstombs'
14719 d_wctomb='$d_wctomb'
14720 d_xenix='$d_xenix'
14721 date='$date'
14722 db_hashtype='$db_hashtype'
14723 db_prefixtype='$db_prefixtype'
14724 defvoidused='$defvoidused'
14725 direntrytype='$direntrytype'
14726 dlext='$dlext'
14727 dlsrc='$dlsrc'
14728 doublesize='$doublesize'
14729 drand01='$drand01'
14730 dynamic_ext='$dynamic_ext'
14731 eagain='$eagain'
14732 ebcdic='$ebcdic'
14733 echo='$echo'
14734 egrep='$egrep'
14735 emacs='$emacs'
14736 eunicefix='$eunicefix'
14737 exe_ext='$exe_ext'
14738 expr='$expr'
14739 extensions='$extensions'
14740 fflushNULL='$fflushNULL'
14741 fflushall='$fflushall'
14742 find='$find'
14743 firstmakefile='$firstmakefile'
14744 flex='$flex'
14745 fpossize='$fpossize'
14746 fpostype='$fpostype'
14747 freetype='$freetype'
14748 full_ar='$full_ar'
14749 full_csh='$full_csh'
14750 full_sed='$full_sed'
14751 gccversion='$gccversion'
14752 gidformat='$gidformat'
14753 gidsign='$gidsign'
14754 gidsize='$gidsize'
14755 gidtype='$gidtype'
14756 glibpth='$glibpth'
14757 grep='$grep'
14758 groupcat='$groupcat'
14759 groupstype='$groupstype'
14760 gzip='$gzip'
14761 h_fcntl='$h_fcntl'
14762 h_sysfile='$h_sysfile'
14763 hint='$hint'
14764 hostcat='$hostcat'
14765 huge='$huge'
14766 i16size='$i16size'
14767 i16type='$i16type'
14768 i32size='$i32size'
14769 i32type='$i32type'
14770 i64size='$i64size'
14771 i64type='$i64type'
14772 i8size='$i8size'
14773 i8type='$i8type'
14774 i_arpainet='$i_arpainet'
14775 i_bsdioctl='$i_bsdioctl'
14776 i_db='$i_db'
14777 i_dbm='$i_dbm'
14778 i_dirent='$i_dirent'
14779 i_dld='$i_dld'
14780 i_dlfcn='$i_dlfcn'
14781 i_fcntl='$i_fcntl'
14782 i_float='$i_float'
14783 i_gdbm='$i_gdbm'
14784 i_grp='$i_grp'
14785 i_inttypes='$i_inttypes'
14786 i_limits='$i_limits'
14787 i_locale='$i_locale'
14788 i_machcthr='$i_machcthr'
14789 i_malloc='$i_malloc'
14790 i_math='$i_math'
14791 i_memory='$i_memory'
14792 i_mntent='$i_mntent'
14793 i_ndbm='$i_ndbm'
14794 i_netdb='$i_netdb'
14795 i_neterrno='$i_neterrno'
14796 i_netinettcp='$i_netinettcp'
14797 i_niin='$i_niin'
14798 i_poll='$i_poll'
14799 i_pthread='$i_pthread'
14800 i_pwd='$i_pwd'
14801 i_rpcsvcdbm='$i_rpcsvcdbm'
14802 i_sfio='$i_sfio'
14803 i_sgtty='$i_sgtty'
14804 i_shadow='$i_shadow'
14805 i_socks='$i_socks'
14806 i_stdarg='$i_stdarg'
14807 i_stddef='$i_stddef'
14808 i_stdlib='$i_stdlib'
14809 i_string='$i_string'
14810 i_sysaccess='$i_sysaccess'
14811 i_sysdir='$i_sysdir'
14812 i_sysfile='$i_sysfile'
14813 i_sysfilio='$i_sysfilio'
14814 i_sysin='$i_sysin'
14815 i_sysioctl='$i_sysioctl'
14816 i_sysmount='$i_sysmount'
14817 i_sysndir='$i_sysndir'
14818 i_sysparam='$i_sysparam'
14819 i_sysresrc='$i_sysresrc'
14820 i_syssecrt='$i_syssecrt'
14821 i_sysselct='$i_sysselct'
14822 i_syssockio='$i_syssockio'
14823 i_sysstat='$i_sysstat'
14824 i_sysstatfs='$i_sysstatfs'
14825 i_sysstatvfs='$i_sysstatvfs'
14826 i_systime='$i_systime'
14827 i_systimek='$i_systimek'
14828 i_systimes='$i_systimes'
14829 i_systypes='$i_systypes'
14830 i_sysuio='$i_sysuio'
14831 i_sysun='$i_sysun'
14832 i_sysvfs='$i_sysvfs'
14833 i_syswait='$i_syswait'
14834 i_termio='$i_termio'
14835 i_termios='$i_termios'
14836 i_time='$i_time'
14837 i_unistd='$i_unistd'
14838 i_ustat='$i_ustat'
14839 i_utime='$i_utime'
14840 i_values='$i_values'
14841 i_varargs='$i_varargs'
14842 i_varhdr='$i_varhdr'
14843 i_vfork='$i_vfork'
14844 ignore_versioned_solibs='$ignore_versioned_solibs'
14845 inc_version_list='$inc_version_list'
14846 inc_version_list_init='$inc_version_list_init'
14847 incpath='$incpath'
14848 inews='$inews'
14849 installarchlib='$installarchlib'
14850 installbin='$installbin'
14851 installman1dir='$installman1dir'
14852 installman3dir='$installman3dir'
14853 installprefix='$installprefix'
14854 installprefixexp='$installprefixexp'
14855 installprivlib='$installprivlib'
14856 installscript='$installscript'
14857 installsitearch='$installsitearch'
14858 installsitebin='$installsitebin'
14859 installsitelib='$installsitelib'
14860 installstyle='$installstyle'
14861 installusrbinperl='$installusrbinperl'
14862 installvendorbin='$installvendorbin'
14863 installvendorlib='$installvendorlib'
14864 intsize='$intsize'
14865 ivdformat='$ivdformat'
14866 ivsize='$ivsize'
14867 ivtype='$ivtype'
14868 known_extensions='$known_extensions'
14869 ksh='$ksh'
14870 large='$large'
14871 ld='$ld'
14872 lddlflags='$lddlflags'
14873 ldflags='$ldflags'
14874 ldlibpthname='$ldlibpthname'
14875 less='$less'
14876 lib_ext='$lib_ext'
14877 libc='$libc'
14878 libperl='$libperl'
14879 libpth='$libpth'
14880 libs='$libs'
14881 libswanted='$libswanted'
14882 line='$line'
14883 lint='$lint'
14884 lkflags='$lkflags'
14885 ln='$ln'
14886 lns='$lns'
14887 locincpth='$locincpth'
14888 loclibpth='$loclibpth'
14889 longdblsize='$longdblsize'
14890 longlongsize='$longlongsize'
14891 longsize='$longsize'
14892 lp='$lp'
14893 lpr='$lpr'
14894 ls='$ls'
14895 lseeksize='$lseeksize'
14896 lseektype='$lseektype'
14897 mail='$mail'
14898 mailx='$mailx'
14899 make='$make'
14900 make_set_make='$make_set_make'
14901 mallocobj='$mallocobj'
14902 mallocsrc='$mallocsrc'
14903 malloctype='$malloctype'
14904 man1dir='$man1dir'
14905 man1direxp='$man1direxp'
14906 man1ext='$man1ext'
14907 man3dir='$man3dir'
14908 man3direxp='$man3direxp'
14909 man3ext='$man3ext'
14910 medium='$medium'
14911 mips_type='$mips_type'
14912 mkdir='$mkdir'
14913 models='$models'
14914 modetype='$modetype'
14915 more='$more'
14916 multiarch='$multiarch'
14917 mv='$mv'
14918 myarchname='$myarchname'
14919 mydomain='$mydomain'
14920 myhostname='$myhostname'
14921 myuname='$myuname'
14922 n='$n'
14923 netdb_hlen_type='$netdb_hlen_type'
14924 netdb_host_type='$netdb_host_type'
14925 netdb_name_type='$netdb_name_type'
14926 netdb_net_type='$netdb_net_type'
14927 nm='$nm'
14928 nm_opt='$nm_opt'
14929 nm_so_opt='$nm_so_opt'
14930 nonxs_ext='$nonxs_ext'
14931 nroff='$nroff'
14932 nvsize='$nvsize'
14933 nvtype='$nvtype'
14934 o_nonblock='$o_nonblock'
14935 obj_ext='$obj_ext'
14936 old_pthread_create_joinable='$old_pthread_create_joinable'
14937 optimize='$optimize'
14938 orderlib='$orderlib'
14939 osname='$osname'
14940 osvers='$osvers'
14941 package='$package'
14942 pager='$pager'
14943 passcat='$passcat'
14944 patchlevel='$patchlevel'
14945 path_sep='$path_sep'
14946 perl='$perl'
14947 perladmin='$perladmin'
14948 perlpath='$perlpath'
14949 pg='$pg'
14950 phostname='$phostname'
14951 pidtype='$pidtype'
14952 plibpth='$plibpth'
14953 pmake='$pmake'
14954 pr='$pr'
14955 prefix='$prefix'
14956 prefixexp='$prefixexp'
14957 privlib='$privlib'
14958 privlibexp='$privlibexp'
14959 prototype='$prototype'
14960 ptrsize='$ptrsize'
14961 quadkind='$quadkind'
14962 quadtype='$quadtype'
14963 randbits='$randbits'
14964 randfunc='$randfunc'
14965 randseedtype='$randseedtype'
14966 ranlib='$ranlib'
14967 rd_nodata='$rd_nodata'
14968 rm='$rm'
14969 rmail='$rmail'
14970 runnm='$runnm'
14971 sPRIEldbl='$sPRIEldbl'
14972 sPRIFldbl='$sPRIFldbl'
14973 sPRIGldbl='$sPRIGldbl'
14974 sPRIX64='$sPRIX64'
14975 sPRId64='$sPRId64'
14976 sPRIeldbl='$sPRIeldbl'
14977 sPRIfldbl='$sPRIfldbl'
14978 sPRIgldbl='$sPRIgldbl'
14979 sPRIi64='$sPRIi64'
14980 sPRIo64='$sPRIo64'
14981 sPRIu64='$sPRIu64'
14982 sPRIx64='$sPRIx64'
14983 sched_yield='$sched_yield'
14984 scriptdir='$scriptdir'
14985 scriptdirexp='$scriptdirexp'
14986 sed='$sed'
14987 seedfunc='$seedfunc'
14988 selectminbits='$selectminbits'
14989 selecttype='$selecttype'
14990 sendmail='$sendmail'
14991 sh='$sh'
14992 shar='$shar'
14993 sharpbang='$sharpbang'
14994 shmattype='$shmattype'
14995 shortsize='$shortsize'
14996 shrpenv='$shrpenv'
14997 shsharp='$shsharp'
14998 sig_count='$sig_count'
14999 sig_name='$sig_name'
15000 sig_name_init='$sig_name_init'
15001 sig_num='$sig_num'
15002 sig_num_init='$sig_num_init'
15003 signal_t='$signal_t'
15004 sitearch='$sitearch'
15005 sitearchexp='$sitearchexp'
15006 sitebin='$sitebin'
15007 sitebinexp='$sitebinexp'
15008 sitelib='$sitelib'
15009 sitelibexp='$sitelibexp'
15010 siteprefix='$siteprefix'
15011 siteprefixexp='$siteprefixexp'
15012 sizetype='$sizetype'
15013 sleep='$sleep'
15014 smail='$smail'
15015 small='$small'
15016 so='$so'
15017 sockethdr='$sockethdr'
15018 socketlib='$socketlib'
15019 sort='$sort'
15020 spackage='$spackage'
15021 spitshell='$spitshell'
15022 split='$split'
15023 src='$src'
15024 ssizetype='$ssizetype'
15025 startperl='$startperl'
15026 startsh='$startsh'
15027 static_ext='$static_ext'
15028 stdchar='$stdchar'
15029 stdio_base='$stdio_base'
15030 stdio_bufsiz='$stdio_bufsiz'
15031 stdio_cnt='$stdio_cnt'
15032 stdio_filbuf='$stdio_filbuf'
15033 stdio_ptr='$stdio_ptr'
15034 stdio_stream_array='$stdio_stream_array'
15035 strings='$strings'
15036 submit='$submit'
15037 subversion='$subversion'
15038 sysman='$sysman'
15039 tail='$tail'
15040 tar='$tar'
15041 tbl='$tbl'
15042 tee='$tee'
15043 test='$test'
15044 timeincl='$timeincl'
15045 timetype='$timetype'
15046 touch='$touch'
15047 tr='$tr'
15048 trnl='$trnl'
15049 troff='$troff'
15050 u16size='$u16size'
15051 u16type='$u16type'
15052 u32size='$u32size'
15053 u32type='$u32type'
15054 u64size='$u64size'
15055 u64type='$u64type'
15056 u8size='$u8size'
15057 u8type='$u8type'
15058 uidformat='$uidformat'
15059 uidsign='$uidsign'
15060 uidsize='$uidsize'
15061 uidtype='$uidtype'
15062 uname='$uname'
15063 uniq='$uniq'
15064 uquadtype='$uquadtype'
15065 use5005threads='$use5005threads'
15066 use64bits='$use64bits'
15067 usedl='$usedl'
15068 useithreads='$useithreads'
15069 uselargefiles='$uselargefiles'
15070 uselongdouble='$uselongdouble'
15071 uselonglong='$uselonglong'
15072 usemorebits='$usemorebits'
15073 usemultiplicity='$usemultiplicity'
15074 usemymalloc='$usemymalloc'
15075 usenm='$usenm'
15076 useopcode='$useopcode'
15077 useperlio='$useperlio'
15078 useposix='$useposix'
15079 usesfio='$usesfio'
15080 useshrplib='$useshrplib'
15081 usesocks='$usesocks'
15082 usethreads='$usethreads'
15083 usevendorprefix='$usevendorprefix'
15084 usevfork='$usevfork'
15085 usrinc='$usrinc'
15086 uuname='$uuname'
15087 uvoformat='$uvoformat'
15088 uvsize='$uvsize'
15089 uvtype='$uvtype'
15090 uvuformat='$uvuformat'
15091 uvxformat='$uvxformat'
15092 vendorbin='$vendorbin'
15093 vendorbinexp='$vendorbinexp'
15094 vendorlib='$vendorlib'
15095 vendorlibexp='$vendorlibexp'
15096 vendorprefix='$vendorprefix'
15097 vendorprefixexp='$vendorprefixexp'
15098 version='$version'
15099 vi='$vi'
15100 voidflags='$voidflags'
15101 xlibpth='$xlibpth'
15102 zcat='$zcat'
15103 zip='$zip'
15104 EOT
15105
15106 : Add in command line options if available
15107 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15108
15109 : add special variables
15110 $test -f $src/patchlevel.h && \
15111 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15112 echo "CONFIGDOTSH=true" >>config.sh
15113
15114 : propagate old symbols
15115 if $test -f UU/config.sh; then
15116         <UU/config.sh sort | uniq >UU/oldconfig.sh
15117         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15118         sort | uniq -u >UU/oldsyms
15119         set X `cat UU/oldsyms`
15120         shift
15121         case $# in
15122         0) ;;
15123         *)
15124                 cat <<EOM
15125 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15126 EOM
15127                 echo "# Variables propagated from previous config.sh file." >>config.sh
15128                 for sym in `cat UU/oldsyms`; do
15129                         echo "    Propagating $hint variable "'$'"$sym..."
15130                         eval 'tmp="$'"${sym}"'"'
15131                         echo "$tmp" | \
15132                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15133                 done
15134                 ;;
15135         esac
15136 fi
15137
15138 : Finish up by extracting the .SH files
15139 case "$alldone" in
15140 exit)
15141         $rm -rf UU
15142         echo "Done."
15143         exit 0
15144         ;;
15145 cont)
15146         ;;
15147 '')
15148         dflt=''
15149         nostick=true
15150         $cat <<EOM
15151
15152 If you'd like to make any changes to the config.sh file before I begin
15153 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15154
15155 EOM
15156         rp="Press return or use a shell escape to edit config.sh:"
15157         . UU/myread
15158         nostick=''
15159         case "$ans" in
15160         '') ;;
15161         *) : in case they cannot read
15162                 sh 1>&4 -c "$ans";;
15163         esac
15164         ;;
15165 esac
15166
15167 : if this fails, just run all the .SH files by hand
15168 . ./config.sh
15169
15170 echo " "
15171 exec 1>&4
15172 . ./UU/extract
15173
15174 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15175         dflt=y
15176         case "$silent" in
15177         true) ;;
15178         *)
15179                 $cat <<EOM
15180
15181 Now you need to generate make dependencies by running "$make depend".
15182 You might prefer to run it in background: "$make depend > makedepend.out &"
15183 It can take a while, so you might not want to run it right now.
15184
15185 EOM
15186                 ;;
15187         esac
15188         rp="Run $make depend now?"
15189         . UU/myread
15190         case "$ans" in
15191         y*)
15192                 $make depend && echo "Now you must run a $make."
15193                 ;;
15194         *)
15195                 echo "You must run '$make depend' then '$make'."
15196                 ;;
15197         esac
15198 elif test -f [Mm]akefile; then
15199         echo " "
15200         echo "Now you must run a $make."
15201 else
15202         echo "Done."
15203 fi
15204
15205 if $test -f Policy.sh; then
15206     $cat <<EOM
15207
15208 If you compile $package on a different machine or from a different object
15209 directory, copy the Policy.sh file from this object directory to the
15210 new one before you run Configure -- this will help you with most of
15211 the policy defaults.
15212
15213 EOM
15214 fi
15215 if $test -f config.msg; then
15216     echo "Hmm.  I also noted the following information while running:"
15217     echo " "
15218     $cat config.msg >&4
15219     $rm -f config.msg
15220 fi
15221 $rm -f kit*isdone ark*isdone
15222 $rm -rf UU
15223
15224 : End of Configure
15225