integrate cfgperl contents into mainline, update Changes
[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 Tue Feb 22 06:52:47 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_getcwd=''
366 d_getgrent=''
367 d_getgrps=''
368 d_gethbyaddr=''
369 d_gethbyname=''
370 d_gethent=''
371 aphostname=''
372 d_gethname=''
373 d_phostname=''
374 d_uname=''
375 d_gethostprotos=''
376 d_getlogin=''
377 d_getmnt=''
378 d_getmntent=''
379 d_getnbyaddr=''
380 d_getnbyname=''
381 d_getnent=''
382 d_getnetprotos=''
383 d_getpent=''
384 d_getpgid=''
385 d_getpgrp2=''
386 d_bsdgetpgrp=''
387 d_getpgrp=''
388 d_getppid=''
389 d_getprior=''
390 d_getpbyname=''
391 d_getpbynumber=''
392 d_getprotoprotos=''
393 d_getpwent=''
394 d_getsent=''
395 d_getservprotos=''
396 d_getspent=''
397 d_getspnam=''
398 d_getsbyname=''
399 d_getsbyport=''
400 d_gnulibc=''
401 d_hasmntopt=''
402 d_htonl=''
403 d_iconv=''
404 d_inetaton=''
405 d_int64t=''
406 d_isascii=''
407 d_killpg=''
408 d_lchown=''
409 d_ldbl_dig=''
410 d_link=''
411 d_locconv=''
412 d_lockf=''
413 d_longdbl=''
414 longdblsize=''
415 d_longlong=''
416 longlongsize=''
417 d_lstat=''
418 d_mblen=''
419 d_mbstowcs=''
420 d_mbtowc=''
421 d_memchr=''
422 d_memcmp=''
423 d_memcpy=''
424 d_memmove=''
425 d_memset=''
426 d_mkdir=''
427 d_mkdtemp=''
428 d_mkfifo=''
429 d_mkstemp=''
430 d_mkstemps=''
431 d_mktime=''
432 d_mmap=''
433 mmaptype=''
434 d_mprotect=''
435 d_msg=''
436 d_msgctl=''
437 d_msgget=''
438 d_msgrcv=''
439 d_msgsnd=''
440 d_msync=''
441 d_munmap=''
442 d_nice=''
443 d_open3=''
444 d_fpathconf=''
445 d_pathconf=''
446 d_pause=''
447 d_pipe=''
448 d_poll=''
449 d_portable=''
450 d_old_pthread_create_joinable=''
451 old_pthread_create_joinable=''
452 d_pthread_yield=''
453 d_sched_yield=''
454 sched_yield=''
455 d_readdir=''
456 d_rewinddir=''
457 d_seekdir=''
458 d_telldir=''
459 d_readlink=''
460 d_rename=''
461 d_rmdir=''
462 d_safebcpy=''
463 d_safemcpy=''
464 d_sanemcmp=''
465 d_select=''
466 d_sem=''
467 d_semctl=''
468 d_semget=''
469 d_semop=''
470 d_setegid=''
471 d_seteuid=''
472 d_setgrent=''
473 d_setgrps=''
474 d_sethent=''
475 d_setlinebuf=''
476 d_setlocale=''
477 d_setnent=''
478 d_setpent=''
479 d_setpgid=''
480 d_setpgrp2=''
481 d_bsdsetpgrp=''
482 d_setpgrp=''
483 d_setprior=''
484 d_setpwent=''
485 d_setregid=''
486 d_setresgid=''
487 d_setresuid=''
488 d_setreuid=''
489 d_setrgid=''
490 d_setruid=''
491 d_setsent=''
492 d_setsid=''
493 d_setspent=''
494 d_setvbuf=''
495 d_sfio=''
496 usesfio=''
497 d_shm=''
498 d_shmat=''
499 d_shmatprototype=''
500 shmattype=''
501 d_shmctl=''
502 d_shmdt=''
503 d_shmget=''
504 d_sigaction=''
505 d_sigsetjmp=''
506 d_msg_ctrunc=''
507 d_msg_dontroute=''
508 d_msg_oob=''
509 d_msg_peek=''
510 d_msg_proxy=''
511 d_oldsock=''
512 d_scm_rights=''
513 d_socket=''
514 d_sockpair=''
515 sockethdr=''
516 socketlib=''
517 d_sqrtl=''
518 d_statblks=''
519 d_statfs_f_flags=''
520 d_statfs_s=''
521 d_fstatvfs=''
522 d_statvfs=''
523 d_stdio_cnt_lval=''
524 d_stdio_ptr_lval=''
525 d_stdiobase=''
526 d_stdstdio=''
527 stdio_base=''
528 stdio_bufsiz=''
529 stdio_cnt=''
530 stdio_filbuf=''
531 stdio_ptr=''
532 d_index=''
533 d_strchr=''
534 d_strcoll=''
535 d_strctcpy=''
536 d_strerrm=''
537 d_strerror=''
538 d_sysernlst=''
539 d_syserrlst=''
540 d_strtod=''
541 d_strtol=''
542 d_strtold=''
543 d_strtoll=''
544 d_strtoul=''
545 d_strtoull=''
546 d_strtouq=''
547 d_strxfrm=''
548 d_symlink=''
549 d_syscall=''
550 d_sysconf=''
551 d_system=''
552 d_tcgetpgrp=''
553 d_tcsetpgrp=''
554 d_telldirproto=''
555 d_time=''
556 timetype=''
557 clocktype=''
558 d_times=''
559 d_truncate=''
560 d_tzname=''
561 d_umask=''
562 d_semctl_semid_ds=''
563 d_semctl_semun=''
564 d_union_semun=''
565 d_ustat=''
566 d_vfork=''
567 usevfork=''
568 d_voidsig=''
569 signal_t=''
570 d_volatile=''
571 d_charvspr=''
572 d_vprintf=''
573 d_wait4=''
574 d_waitpid=''
575 d_wcstombs=''
576 d_wctomb=''
577 dlext=''
578 cccdlflags=''
579 ccdlflags=''
580 dlsrc=''
581 ld=''
582 lddlflags=''
583 usedl=''
584 doublesize=''
585 ebcdic=''
586 fflushNULL=''
587 fflushall=''
588 fpossize=''
589 fpostype=''
590 gidformat=''
591 gidsign=''
592 gidsize=''
593 gidtype=''
594 groupstype=''
595 h_fcntl=''
596 h_sysfile=''
597 i_arpainet=''
598 db_hashtype=''
599 db_prefixtype=''
600 i_db=''
601 i_dbm=''
602 i_rpcsvcdbm=''
603 d_dirnamlen=''
604 direntrytype=''
605 i_dirent=''
606 i_dld=''
607 i_dlfcn=''
608 i_fcntl=''
609 i_float=''
610 i_gdbm=''
611 d_grpasswd=''
612 i_grp=''
613 i_iconv=''
614 i_inttypes=''
615 i_limits=''
616 i_locale=''
617 i_machcthr=''
618 i_malloc=''
619 i_math=''
620 i_memory=''
621 i_mntent=''
622 i_ndbm=''
623 i_netdb=''
624 i_neterrno=''
625 i_netinettcp=''
626 i_niin=''
627 i_sysin=''
628 i_poll=''
629 i_pthread=''
630 d_pwage=''
631 d_pwchange=''
632 d_pwclass=''
633 d_pwcomment=''
634 d_pwexpire=''
635 d_pwgecos=''
636 d_pwpasswd=''
637 d_pwquota=''
638 i_pwd=''
639 i_sfio=''
640 i_shadow=''
641 i_socks=''
642 i_stddef=''
643 i_stdlib=''
644 i_string=''
645 strings=''
646 i_sysaccess=''
647 i_sysdir=''
648 i_sysfile=''
649 d_voidtty=''
650 i_bsdioctl=''
651 i_sysfilio=''
652 i_sysioctl=''
653 i_syssockio=''
654 i_syslog=''
655 i_sysmman=''
656 i_sysmode=''
657 i_sysmount=''
658 i_sysndir=''
659 i_sysparam=''
660 i_sysresrc=''
661 i_syssecrt=''
662 i_sysselct=''
663 i_sysstat=''
664 i_sysstatfs=''
665 i_sysstatvfs=''
666 i_systimes=''
667 i_systypes=''
668 i_sysuio=''
669 i_sysun=''
670 i_sysutsname=''
671 i_sysvfs=''
672 i_syswait=''
673 i_sgtty=''
674 i_termio=''
675 i_termios=''
676 i_systime=''
677 i_systimek=''
678 i_time=''
679 timeincl=''
680 i_unistd=''
681 i_ustat=''
682 i_utime=''
683 i_values=''
684 i_stdarg=''
685 i_varargs=''
686 i_varhdr=''
687 i_vfork=''
688 inc_version_list=''
689 inc_version_list_init=''
690 installprefix=''
691 installprefixexp=''
692 installstyle=''
693 installusrbinperl=''
694 intsize=''
695 longsize=''
696 shortsize=''
697 d_fpos64_t=''
698 d_off64_t=''
699 libc=''
700 ldlibpthname=''
701 libperl=''
702 shrpenv=''
703 useshrplib=''
704 glibpth=''
705 libpth=''
706 loclibpth=''
707 plibpth=''
708 xlibpth=''
709 ignore_versioned_solibs=''
710 libs=''
711 libsdirs=''
712 libsfiles=''
713 libsfound=''
714 lns=''
715 d_PRIEldbl=''
716 d_PRIFldbl=''
717 d_PRIGldbl=''
718 d_PRIeldbl=''
719 d_PRIfldbl=''
720 d_PRIgldbl=''
721 sPRIEldbl=''
722 sPRIFldbl=''
723 sPRIGldbl=''
724 sPRIeldbl=''
725 sPRIfldbl=''
726 sPRIgldbl=''
727 lseeksize=''
728 lseektype=''
729 make_set_make=''
730 d_mymalloc=''
731 freetype=''
732 mallocobj=''
733 mallocsrc=''
734 malloctype=''
735 usemymalloc=''
736 installman1dir=''
737 man1dir=''
738 man1direxp=''
739 man1ext=''
740 installman3dir=''
741 man3dir=''
742 man3direxp=''
743 man3ext=''
744 huge=''
745 large=''
746 medium=''
747 models=''
748 small=''
749 split=''
750 modetype=''
751 multiarch=''
752 mydomain=''
753 myhostname=''
754 phostname=''
755 c=''
756 n=''
757 d_eofnblk=''
758 eagain=''
759 o_nonblock=''
760 rd_nodata=''
761 netdb_hlen_type=''
762 netdb_host_type=''
763 netdb_name_type=''
764 netdb_net_type=''
765 groupcat=''
766 hostcat=''
767 passcat=''
768 orderlib=''
769 ranlib=''
770 package=''
771 spackage=''
772 pager=''
773 api_revision=''
774 api_subversion=''
775 api_version=''
776 api_versionstring=''
777 patchlevel=''
778 subversion=''
779 version=''
780 perladmin=''
781 perlpath=''
782 d_nv_preserves_uv=''
783 i16size=''
784 i16type=''
785 i32size=''
786 i32type=''
787 i64size=''
788 i64type=''
789 i8size=''
790 i8type=''
791 ivsize=''
792 ivtype=''
793 nvsize=''
794 nvtype=''
795 u16size=''
796 u16type=''
797 u32size=''
798 u32type=''
799 u64size=''
800 u64type=''
801 u8size=''
802 u8type=''
803 uvsize=''
804 uvtype=''
805 ivdformat=''
806 uvoformat=''
807 uvuformat=''
808 uvxformat=''
809 pidtype=''
810 prefix=''
811 prefixexp=''
812 installprivlib=''
813 privlib=''
814 privlibexp=''
815 prototype=''
816 ptrsize=''
817 d_PRIX64=''
818 d_PRId64=''
819 d_PRIi64=''
820 d_PRIo64=''
821 d_PRIu64=''
822 d_PRIx64=''
823 sPRIX64=''
824 sPRId64=''
825 sPRIi64=''
826 sPRIo64=''
827 sPRIu64=''
828 sPRIx64=''
829 d_quad=''
830 quadkind=''
831 quadtype=''
832 uquadtype=''
833 drand01=''
834 randbits=''
835 randfunc=''
836 randseedtype=''
837 seedfunc=''
838 installscript=''
839 scriptdir=''
840 scriptdirexp=''
841 selectminbits=''
842 selecttype=''
843 sh=''
844 sig_count=''
845 sig_name=''
846 sig_name_init=''
847 sig_num=''
848 sig_num_init=''
849 installsitearch=''
850 sitearch=''
851 sitearchexp=''
852 installsitebin=''
853 sitebin=''
854 sitebinexp=''
855 installsitelib=''
856 sitelib=''
857 sitelibexp=''
858 siteprefix=''
859 siteprefixexp=''
860 sizetype=''
861 so=''
862 sharpbang=''
863 shsharp=''
864 spitshell=''
865 src=''
866 ssizetype=''
867 startperl=''
868 startsh=''
869 stdchar=''
870 d_stdio_stream_array=''
871 stdio_stream_array=''
872 sysman=''
873 trnl=''
874 uidformat=''
875 uidsign=''
876 uidsize=''
877 uidtype=''
878 archname64=''
879 use64bits=''
880 uselargefiles=''
881 uselongdouble=''
882 usemorebits=''
883 usemultiplicity=''
884 nm_opt=''
885 nm_so_opt=''
886 runnm=''
887 usenm=''
888 useperlio=''
889 usesocks=''
890 d_oldpthreads=''
891 use5005threads=''
892 useithreads=''
893 usethreads=''
894 incpath=''
895 mips_type=''
896 usrinc=''
897 d_vendorbin=''
898 installvendorbin=''
899 vendorbin=''
900 vendorbinexp=''
901 d_vendorlib=''
902 installvendorlib=''
903 vendorlib=''
904 vendorlibexp=''
905 usevendorprefix=''
906 vendorprefix=''
907 vendorprefixexp=''
908 defvoidused=''
909 voidflags=''
910 pm_apiversion=''
911 xs_apiversion=''
912 CONFIG=''
913
914 define='define'
915 undef='undef'
916 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
917 rmlist=''
918
919 : We must find out about Eunice early
920 eunicefix=':'
921 if test -f /etc/unixtovms; then
922         eunicefix=/etc/unixtovms
923 fi
924 if test -f /etc/unixtovms.exe; then
925         eunicefix=/etc/unixtovms.exe
926 fi
927
928 i_whoami=''
929 : set useposix=false in your hint file to disable the POSIX extension.
930 useposix=true
931 : set useopcode=false in your hint file to disable the Opcode extension.
932 useopcode=true
933 : Trailing extension.  Override this in a hint file, if needed.
934 _exe=''
935 : Extra object files, if any, needed on this platform.
936 archobjs=''
937 : Possible local include directories to search.
938 : Set locincpth to "" in a hint file to defeat local include searches.
939 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
940 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
941 :
942 : no include file wanted by default
943 inclwanted=''
944
945 groupstype=''
946 : change the next line if compiling for Xenix/286 on Xenix/386
947 xlibpth='/usr/lib/386 /lib/386'
948 : Possible local library directories to search.
949 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
950 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
951
952 : general looking path for locating libraries
953 glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
954 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
955 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
956 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
957 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
958
959 : Private path used by Configure to find libraries.  Its value
960 : is prepended to libpth. This variable takes care of special
961 : machines, like the mips.  Usually, it should be empty.
962 plibpth=''
963
964 : default library list
965 libswanted=''
966 : some systems want to use only the non-versioned libso:s
967 ignore_versioned_solibs=''
968 : set usemultiplicity on the Configure command line to enable multiplicity.
969 : set usesocks on the Configure command line to enable socks.
970 : set usethreads on the Configure command line to enable threads.
971 : full support for void wanted by default
972 defvoidused=15
973
974 : List of libraries we want.
975 : If anyone needs -lnet, put it in a hint file.
976 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
977 libswanted="$libswanted dld ld sun m c cposix posix"
978 libswanted="$libswanted ndir dir crypt sec"
979 libswanted="$libswanted ucb bsd BSD PW x"
980 : We probably want to search /usr/shlib before most other libraries.
981 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
982 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
983 glibpth="/usr/shlib $glibpth"
984 : Do not use vfork unless overridden by a hint file.
985 usevfork=false
986
987 : Find the basic shell for Bourne shell scripts
988 case "$sh" in
989 '')
990         case "$SYSTYPE" in
991         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
992         *) xxx='/bin/sh';;
993         esac
994         if test -f "$xxx"; then
995                 sh="$xxx"
996         else
997                 : Build up a list and do a single loop so we can 'break' out.
998                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
999                 for xxx in sh bash ksh pdksh ash; do
1000                         for p in $pth; do
1001                                 try="$try ${p}/${xxx}"
1002                         done
1003                 done
1004                 for xxx in $try; do
1005                         if test -f "$xxx"; then
1006                                 sh="$xxx";
1007                                 break
1008                         elif test -f "$xxx.exe"; then
1009                                 sh="$xxx";
1010                                 break
1011                         fi
1012                 done
1013         fi
1014         ;;
1015 esac
1016
1017 case "$sh" in
1018 '')     cat <<EOM >&2
1019 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1020
1021 Usually it's in /bin/sh.  How did you even get this far?
1022 Please contact me (Perl Maintainers) at perlbug@perl.com and 
1023 we'll try to straighten this all out.
1024 EOM
1025         exit 1
1026         ;;
1027 esac
1028
1029 : see if sh knows # comments
1030 if `$sh -c '#' >/dev/null 2>&1`; then
1031         shsharp=true
1032         spitshell=cat
1033         xcat=/bin/cat
1034         test -f $xcat || xcat=/usr/bin/cat
1035         echo "#!$xcat" >try
1036         $eunicefix try
1037         chmod +x try
1038         ./try > today
1039         if test -s today; then
1040                 sharpbang='#!'
1041         else
1042                 echo "#! $xcat" > try
1043                 $eunicefix try
1044                 chmod +x try
1045                 ./try > today
1046                 if test -s today; then
1047                         sharpbang='#! '
1048                 else
1049                         sharpbang=': use '
1050                 fi
1051         fi
1052 else
1053         echo " "
1054         echo "Your $sh doesn't grok # comments--I will strip them later on."
1055         shsharp=false
1056         cd ..
1057         echo "exec grep -v '^[  ]*#'" >spitshell
1058         chmod +x spitshell
1059         $eunicefix spitshell
1060         spitshell=`pwd`/spitshell
1061         cd UU
1062         echo "I presume that if # doesn't work, #! won't work either!"
1063         sharpbang=': use '
1064 fi
1065 rm -f try today
1066
1067 : figure out how to guarantee sh startup
1068 case "$startsh" in
1069 '') startsh=${sharpbang}${sh} ;;
1070 *)
1071 esac
1072 cat >try <<EOSS
1073 $startsh
1074 set abc
1075 test "$?abc" != 1
1076 EOSS
1077
1078 chmod +x try
1079 $eunicefix try
1080 if ./try; then
1081         : echo "Yup, it does."
1082 else
1083         echo "Hmm... '$startsh' does not guarantee sh startup..."
1084         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1085 fi
1086 rm -f try
1087
1088
1089 : Save command line options in file UU/cmdline.opt for later use in
1090 : generating config.sh.
1091 cat > cmdline.opt <<EOSH
1092 # Configure command line arguments.
1093 config_arg0='$0'
1094 config_args='$*'
1095 config_argc=$#
1096 EOSH
1097 argn=1
1098 for arg in "$@"; do
1099         cat >>cmdline.opt <<EOSH
1100 config_arg$argn='$arg'
1101 EOSH
1102         argn=`expr $argn + 1`
1103 done
1104
1105 : produce awk script to parse command line options
1106 cat >options.awk <<'EOF'
1107 BEGIN {
1108         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1109
1110         len = length(optstr);
1111         for (i = 1; i <= len; i++) {
1112                 c = substr(optstr, i, 1);
1113                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1114                 if (a == ":") {
1115                         arg[c] = 1;
1116                         i++;
1117                 }
1118                 opt[c] = 1;
1119         }
1120 }
1121 {
1122         expect = 0;
1123         str = $0;
1124         if (substr(str, 1, 1) != "-") {
1125                 printf("'%s'\n", str);
1126                 next;
1127         }
1128         len = length($0);
1129         for (i = 2; i <= len; i++) {
1130                 c = substr(str, i, 1);
1131                 if (!opt[c]) {
1132                         printf("-%s\n", substr(str, i));
1133                         next;
1134                 }
1135                 printf("-%s\n", c);
1136                 if (arg[c]) {
1137                         if (i < len)
1138                                 printf("'%s'\n", substr(str, i + 1));
1139                         else
1140                                 expect = 1;
1141                         next;
1142                 }
1143         }
1144 }
1145 END {
1146         if (expect)
1147                 print "?";
1148 }
1149 EOF
1150
1151 : process the command line options
1152 set X `for arg in "$@"; do echo "X$arg"; done |
1153         sed -e s/X// | awk -f options.awk`
1154 eval "set $*"
1155 shift
1156 rm -f options.awk
1157
1158 : set up default values
1159 fastread=''
1160 reuseval=false
1161 config_sh=''
1162 alldone=''
1163 error=''
1164 silent=''
1165 extractsh=''
1166 override=''
1167 knowitall=''
1168 rm -f optdef.sh posthint.sh
1169 cat >optdef.sh <<EOS
1170 $startsh
1171 EOS
1172
1173
1174 : option parsing
1175 while test $# -gt 0; do
1176         case "$1" in
1177         -d) shift; fastread=yes;;
1178         -e) shift; alldone=cont;;
1179         -f)
1180                 shift
1181                 cd ..
1182                 if test -r "$1"; then
1183                         config_sh="$1"
1184                 else
1185                         echo "$me: cannot read config file $1." >&2
1186                         error=true
1187                 fi
1188                 cd UU
1189                 shift;;
1190         -h) shift; error=true;;
1191         -r) shift; reuseval=true;;
1192         -s) shift; silent=true; realsilent=true;;
1193         -E) shift; alldone=exit;;
1194         -K) shift; knowitall=true;;
1195         -O) shift; override=true;;
1196         -S) shift; silent=true; extractsh=true;;
1197         -D)
1198                 shift
1199                 case "$1" in
1200                 *=)
1201                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1202                         echo "$me: ignoring -D $1" >&2
1203                         ;;
1204                 *=*) echo "$1" | \
1205                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1206                 *) echo "$1='define'" >> optdef.sh;;
1207                 esac
1208                 shift
1209                 ;;
1210         -U)
1211                 shift
1212                 case "$1" in
1213                 *=) echo "$1" >> optdef.sh;;
1214                 *=*)
1215                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1216                         echo "$me: ignoring -U $1" >&2
1217                         ;;
1218                 *) echo "$1='undef'" >> optdef.sh;;
1219                 esac
1220                 shift
1221                 ;;
1222         -A)
1223             shift
1224             xxx=''
1225             yyy="$1"
1226             zzz=''
1227             uuu=undef
1228             case "$yyy" in
1229             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1230                  case "$zzz" in
1231                  *:*) zzz='' ;;
1232                  *)   xxx=append
1233                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1234                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1235                  esac
1236                  ;;
1237             esac
1238             case "$xxx" in
1239             '')  case "$yyy" in
1240                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1241                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1242                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1243                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1244                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1245                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1246                  esac
1247                  ;;       
1248             esac
1249             case "$xxx" in
1250             append)
1251                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1252             clear)
1253                 echo "$yyy=''"                  >> posthint.sh ;;
1254             define)
1255                 case "$zzz" in
1256                 '') zzz=define ;;
1257                 esac
1258                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1259             eval)
1260                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1261             prepend)
1262                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1263             undef)
1264                 case "$zzz" in
1265                 '') zzz="$uuu" ;;
1266                 esac
1267                 echo "$yyy=$zzz"                >> posthint.sh ;;
1268             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1269             esac
1270             shift
1271             ;;
1272         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1273             exit 0;;
1274         --) break;;
1275         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1276         *) break;;
1277         esac
1278 done
1279
1280 case "$error" in
1281 true)
1282         cat >&2 <<EOM
1283 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1284                  [-U symbol] [-U symbol=] [-A command:symbol...]
1285   -d : use defaults for all answers.
1286   -e : go on without questioning past the production of config.sh.
1287   -f : specify an alternate default configuration file.
1288   -h : print this help message and exit (with an error status).
1289   -r : reuse C symbols value if possible (skips costly nm extraction).
1290   -s : silent mode, only echoes questions and essential information.
1291   -D : define symbol to have some value:
1292          -D symbol         symbol gets the value 'define'
1293          -D symbol=value   symbol gets the value 'value'
1294   -E : stop at the end of questions, after having produced config.sh.
1295   -K : do not use unless you know what you are doing.
1296   -O : let -D and -U override definitions from loaded configuration file.
1297   -S : perform variable substitutions on all .SH files (can mix with -f)
1298   -U : undefine symbol:
1299          -U symbol    symbol gets the value 'undef'
1300          -U symbol=   symbol gets completely empty
1301   -A : manipulate symbol after the platform specific hints have been applied:
1302          -A symbol=value                append " "value to symbol
1303          -A append:symbol=value         append value to symbol
1304          -A define:symbol=value         define symbol to have value
1305          -A clear:symbol                define symbol to be ''
1306          -A define:symbol               define symbol to be 'define'
1307          -A eval:symbol=value           define symbol to be eval of value
1308          -A prepend:symbol=value        prepend value to symbol
1309          -A undef:symbol                define symbol to be 'undef'
1310          -A undef:symbol=               define symbol to be ''
1311   -V : print version number and exit (with a zero status).
1312 EOM
1313         exit 1
1314         ;;
1315 esac
1316
1317 : Sanity checks
1318 case "$fastread$alldone" in
1319 yescont|yesexit) ;;
1320 *)
1321         if test ! -t 0; then
1322                 echo "Say 'sh Configure', not 'sh <Configure'"
1323                 exit 1
1324         fi
1325         ;;
1326 esac
1327
1328 exec 4>&1
1329 case "$silent" in
1330 true) exec 1>/dev/null;;
1331 esac
1332
1333 : run the defines and the undefines, if any, but leave the file out there...
1334 touch optdef.sh
1335 . ./optdef.sh
1336 : create the posthint manipulation script and leave the file out there...
1337 touch posthint.sh
1338
1339 : set package name
1340 package=perl5
1341 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1342 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1343 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1344 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1345 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1346 esac
1347
1348 : Some greps do not return status, grrr.
1349 echo "grimblepritz" >grimble
1350 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1351         contains=contains
1352 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1353         contains=grep
1354 else
1355         contains=contains
1356 fi
1357 rm -f grimble
1358 : the following should work in any shell
1359 case "$contains" in
1360 contains*)
1361         echo " "
1362         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1363         cat >contains <<'EOSS'
1364 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1365 EOSS
1366 chmod +x contains
1367 esac
1368
1369 : Find the path to the source tree
1370 case "$src" in
1371 '') case "$0" in
1372     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1373          case "$src" in
1374          /*)    ;;
1375          *)     src=`cd ../$src && pwd` ;;
1376          esac
1377          ;;
1378     *)   src='.';;
1379     esac;;
1380 esac
1381 case "$src" in
1382 '')     src=/
1383         rsrc=/
1384         ;;
1385 /*) rsrc="$src";;
1386 *) rsrc="../$src";;
1387 esac
1388 if test -f $rsrc/Configure && \
1389         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1390 then
1391    : found it, so we are ok.
1392 else
1393         rsrc=''
1394         for src in . .. ../.. ../../.. ../../../..; do
1395                 if test -f ../$src/Configure && \
1396                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1397                 then
1398                         rsrc=../$src
1399                         break
1400                 fi
1401         done
1402 fi
1403 case "$rsrc" in
1404 '')
1405         cat <<EOM >&4
1406
1407 Sorry, I can't seem to locate the source dir for $package.  Please start
1408 Configure with an explicit path -- i.e. /some/path/Configure.
1409
1410 EOM
1411         exit 1
1412         ;;
1413 ../.)   rsrc='..';;
1414 *)
1415         echo " "
1416         echo "Sources for $package found in \"$src\"." >&4
1417         ;;
1418 esac
1419
1420 : script used to extract .SH files with variable substitutions
1421 cat >extract <<'EOS'
1422 CONFIGDOTSH=true
1423 echo "Doing variable substitutions on .SH files..."
1424 if test -f $src/MANIFEST; then
1425         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1426 else
1427         echo "(Looking for .SH files under the source directory.)"
1428         set x `(cd $src; find . -name "*.SH" -print)`
1429 fi
1430 shift
1431 case $# in
1432 0) set x `(cd $src; echo *.SH)`; shift;;
1433 esac
1434 if test ! -f $src/$1; then
1435         shift
1436 fi
1437 mkdir_p='
1438 name=$1;
1439 create="";
1440 while test $name; do
1441         if test ! -d "$name"; then
1442                 create="$name $create";
1443                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1444                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1445         else
1446                 name="";
1447         fi;
1448 done;
1449 for file in $create; do
1450         mkdir $file;
1451 done
1452 '
1453 for file in $*; do
1454         case "$src" in
1455         ".")
1456                 case "$file" in
1457                 */*)
1458                         dir=`expr X$file : 'X\(.*\)/'`
1459                         file=`expr X$file : 'X.*/\(.*\)'`
1460                         (cd $dir && . ./$file)
1461                         ;;
1462                 *)
1463                         . ./$file
1464                         ;;
1465                 esac
1466                 ;;
1467         *)
1468                 case "$file" in
1469                 */*)
1470                         dir=`expr X$file : 'X\(.*\)/'`
1471                         file=`expr X$file : 'X.*/\(.*\)'`
1472                         (set x $dir; shift; eval $mkdir_p)
1473                         sh <$src/$dir/$file
1474                         ;;
1475                 *)
1476                         sh <$src/$file
1477                         ;;
1478                 esac
1479                 ;;
1480         esac
1481 done
1482 if test -f $src/config_h.SH; then
1483         if test ! -f config.h; then
1484         : oops, they left it out of MANIFEST, probably, so do it anyway.
1485         . $src/config_h.SH
1486         fi
1487 fi
1488 EOS
1489
1490 : extract files and exit if asked to do so
1491 case "$extractsh" in
1492 true)
1493         case "$realsilent" in
1494         true) ;;
1495         *) exec 1>&4;;
1496         esac
1497         case "$config_sh" in
1498         '') config_sh='config.sh';;
1499         esac
1500         echo " "
1501         echo "Fetching answers from $config_sh..."
1502         cd ..
1503         . $config_sh
1504         test "$override" && . ./optdef.sh
1505         echo " "
1506         . UU/extract
1507         rm -rf UU
1508         echo "Done."
1509         exit 0
1510         ;;
1511 esac
1512
1513 : Eunice requires " " instead of "", can you believe it
1514 echo " "
1515 : Here we go...
1516 echo "Beginning of configuration questions for $package."
1517
1518 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1519
1520 : first determine how to suppress newline on echo command
1521 echo " "
1522 echo "Checking echo to see how to suppress newlines..."
1523 (echo "hi there\c" ; echo " ") >.echotmp
1524 if $contains c .echotmp >/dev/null 2>&1 ; then
1525         echo "...using -n."
1526         n='-n'
1527         c=''
1528 else
1529         cat <<'EOM'
1530 ...using \c
1531 EOM
1532         n=''
1533         c='\c'
1534 fi
1535 echo $n "The star should be here-->$c"
1536 echo '*'
1537 rm -f .echotmp
1538
1539 : Now test for existence of everything in MANIFEST
1540 echo " "
1541 if test -f $rsrc/MANIFEST; then
1542         echo "First let's make sure your kit is complete.  Checking..." >&4
1543         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1544         rm -f missing
1545         tmppwd=`pwd`
1546         for filelist in x??; do
1547                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1548         done
1549         if test -s missing; then
1550                 cat missing >&4
1551                 cat >&4 <<'EOM'
1552
1553 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1554
1555 You have the option of continuing the configuration process, despite the
1556 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1557 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1558 and contact the author (perlbug@perl.com).
1559
1560 EOM
1561                 echo $n "Continue? [n] $c" >&4
1562                 read ans
1563                 case "$ans" in
1564                 y*)
1565                         echo "Continuing..." >&4
1566                         rm -f missing
1567                         ;;
1568                 *)
1569                         echo "ABORTING..." >&4
1570                         kill $$
1571                         ;;
1572                 esac
1573         else
1574                 echo "Looks good..."
1575         fi
1576 else
1577         echo "There is no MANIFEST file.  I hope your kit is complete !"
1578 fi
1579 rm -f missing x??
1580
1581 echo " "
1582 : Find the appropriate value for a newline for tr
1583 if test -n "$DJGPP"; then
1584        trnl='\012'
1585 fi
1586 if test X"$trnl" = X; then
1587         case "`echo foo|tr '\n' x 2>/dev/null`" in
1588         foox) trnl='\n' ;;
1589         esac
1590 fi
1591 if test X"$trnl" = X; then
1592         case "`echo foo|tr '\012' x 2>/dev/null`" in
1593         foox) trnl='\012' ;;
1594         esac
1595 fi
1596 if test X"$trnl" = X; then
1597         cat <<EOM >&2
1598
1599 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1600
1601 EOM
1602         exit 1
1603 fi
1604
1605 : compute the number of columns on the terminal for proper question formatting
1606 case "$COLUMNS" in
1607 '') COLUMNS='80';;
1608 esac
1609
1610 : set up the echo used in my read
1611 myecho="case \"\$xxxm\" in
1612 '') echo $n \"\$rp $c\" >&4;;
1613 *) case \"\$rp\" in
1614         '') echo $n \"[\$xxxm] $c\";;
1615         *)
1616                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1617                         echo \"\$rp\" >&4
1618                         echo $n \"[\$xxxm] $c\" >&4
1619                 else
1620                         echo $n \"\$rp [\$xxxm] $c\" >&4
1621                 fi
1622                 ;;
1623         esac;;
1624 esac"
1625
1626 : now set up to do reads with possible shell escape and default assignment
1627 cat <<EOSC >myread
1628 $startsh
1629 xxxm=\$dflt
1630 $myecho
1631 ans='!'
1632 case "\$fastread" in
1633 yes) case "\$dflt" in
1634         '') ;;
1635         *) ans='';
1636                 case "\$silent-\$rp" in
1637                 true-) ;;
1638                 *) echo " " >&4;;
1639                 esac;;
1640         esac;;
1641 *) case "\$silent" in
1642         true) case "\$rp" in
1643                 '') ans='';;
1644                 esac;;
1645         esac;;
1646 esac
1647 while expr "X\$ans" : "X!" >/dev/null; do
1648         read answ
1649         set x \$xxxm
1650         shift
1651         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1652         case  "\$answ" in
1653         "!")
1654                 sh 1>&4
1655                 echo " "
1656                 $myecho
1657                 ;;
1658         !*)
1659                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1660                 shift
1661                 sh 1>&4 -c "\$*"
1662                 echo " "
1663                 $myecho
1664                 ;;
1665         "\$ans")
1666                 case "\$ans" in
1667                 \\&*)
1668                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1669                         shift
1670                         case "\$1" in
1671                         -d)
1672                                 fastread=yes
1673                                 echo "(OK, I'll run with -d after this question.)" >&4
1674                                 ;;
1675                         -*)
1676                                 echo "*** Sorry, \$1 not supported yet." >&4
1677                                 ;;
1678                         esac
1679                         $myecho
1680                         ans=!
1681                         ;;
1682                 esac;;
1683         *)
1684                 case "\$aok" in
1685                 y)
1686                         echo "*** Substitution done -- please confirm."
1687                         xxxm="\$ans"
1688                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1689                         xxxm="\$ans"
1690                         ans=!
1691                         ;;
1692                 *)
1693                         echo "*** Error -- try again."
1694                         ans=!
1695                         ;;
1696                 esac
1697                 $myecho
1698                 ;;
1699         esac
1700         case "\$ans\$xxxm\$nostick" in
1701         '')
1702                 ans=!
1703                 $myecho
1704                 ;;
1705         esac
1706 done
1707 case "\$ans" in
1708 '') ans="\$xxxm";;
1709 esac
1710 EOSC
1711
1712 : create .config dir to save info across Configure sessions
1713 test -d ../.config || mkdir ../.config
1714 cat >../.config/README <<EOF
1715 This directory created by Configure to save information that should
1716 persist across sessions for $package.
1717
1718 You may safely delete it if you wish.
1719 EOF
1720
1721 : general instructions
1722 needman=true
1723 firsttime=true
1724 user=`(logname) 2>/dev/null`
1725 case "$user" in
1726 '') user=`whoami 2>&1`;;
1727 esac
1728 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1729         firsttime=false
1730         echo " "
1731         rp='Would you like to see the instructions?'
1732         dflt=n
1733         . ./myread
1734         case "$ans" in
1735         [yY]*) ;;
1736         *) needman=false;;
1737         esac
1738 fi
1739 if $needman; then
1740         cat <<EOH
1741
1742 This installation shell script will examine your system and ask you questions
1743 to determine how the perl5 package should be installed. If you get
1744 stuck on a question, you may use a ! shell escape to start a subshell or
1745 execute a command.  Many of the questions will have default answers in square
1746 brackets; typing carriage return will give you the default.
1747
1748 On some of the questions which ask for file or directory names you are allowed
1749 to use the ~name construct to specify the login directory belonging to "name",
1750 even if you don't have a shell which knows about that.  Questions where this is
1751 allowed will be marked "(~name ok)".
1752
1753 EOH
1754         rp=''
1755         dflt='Type carriage return to continue'
1756         . ./myread
1757         cat <<'EOH'
1758
1759 The prompter used in this script allows you to use shell variables and
1760 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1761 in the default answer, as if the default line was a set of arguments given to a
1762 script shell.  This means you may also use $* to repeat the whole default line,
1763 so you do not have to re-type everything to add something to the default.
1764
1765 Everytime there is a substitution, you will have to confirm.  If there is an
1766 error (e.g. an unmatched backtick), the default answer will remain unchanged
1767 and you will be prompted again.
1768
1769 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1770 the questions and use the computed defaults (or the previous answers if there
1771 was already a config.sh file). Type 'Configure -h' for a list of options.
1772 You may also start interactively and then answer '& -d' at any prompt to turn
1773 on the non-interactive behaviour for the remainder of the execution.
1774
1775 EOH
1776         . ./myread
1777         cat <<EOH
1778
1779 Much effort has been expended to ensure that this shell script will run on any
1780 Unix system.  If despite that it blows up on yours, your best bet is to edit
1781 Configure and run it again.  If you can't run Configure for some reason,
1782 you'll have to generate a config.sh file by hand.  Whatever problems you
1783 have, let me (perlbug@perl.com) know how I blew it.
1784
1785 This installation script affects things in two ways:
1786
1787 1) it may do direct variable substitutions on some of the files included
1788    in this kit.
1789 2) it builds a config.h file for inclusion in C programs.  You may edit
1790    any of these files as the need arises after running this script.
1791
1792 If you make a mistake on a question, there is no easy way to back up to it
1793 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1794 files.  Configure will offer to let you do this before it runs the SH files.
1795
1796 EOH
1797         dflt='Type carriage return to continue'
1798         . ./myread
1799         case "$firsttime" in
1800         true) echo $user >>../.config/instruct;;
1801         esac
1802 fi
1803
1804 : find out where common programs are
1805 echo " "
1806 echo "Locating common programs..." >&4
1807 cat <<EOSC >loc
1808 $startsh
1809 case \$# in
1810 0) exit 1;;
1811 esac
1812 thing=\$1
1813 shift
1814 dflt=\$1
1815 shift
1816 for dir in \$*; do
1817         case "\$thing" in
1818         .)
1819         if test -d \$dir/\$thing; then
1820                 echo \$dir
1821                 exit 0
1822         fi
1823         ;;
1824         *)
1825         for thisthing in \$dir/\$thing; do
1826                 : just loop through to pick last item
1827         done
1828         if test -f \$thisthing; then
1829                 echo \$thisthing
1830                 exit 0
1831         elif test -f \$dir/\$thing.exe; then
1832                 if test -n "$DJGPP"; then
1833                         echo \$dir/\$thing.exe
1834                 else
1835                         : on Eunice apparently
1836                         echo \$dir/\$thing
1837                 fi
1838                 exit 0
1839         fi
1840         ;;
1841         esac
1842 done
1843 echo \$dflt
1844 exit 1
1845 EOSC
1846 chmod +x loc
1847 $eunicefix loc
1848 loclist="
1849 awk
1850 cat
1851 comm
1852 cp
1853 echo
1854 expr
1855 grep
1856 ls
1857 make
1858 mkdir
1859 rm
1860 sed
1861 sort
1862 touch
1863 tr
1864 uniq
1865 "
1866 trylist="
1867 Mcc
1868 ar
1869 byacc
1870 cpp
1871 csh
1872 date
1873 egrep
1874 gzip
1875 less
1876 ln
1877 more
1878 nm
1879 nroff
1880 perl
1881 pg
1882 test
1883 uname
1884 zip
1885 "
1886 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1887 pth="$pth /lib /usr/lib"
1888 for file in $loclist; do
1889         eval xxx=\$$file
1890         case "$xxx" in
1891         /*|?:[\\/]*)
1892                 if test -f "$xxx"; then
1893                         : ok
1894                 else
1895                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1896                         xxx=`./loc $file $file $pth`
1897                 fi
1898                 ;;
1899         '') xxx=`./loc $file $file $pth`;;
1900         *) xxx=`./loc $xxx $xxx $pth`;;
1901         esac
1902         eval $file=$xxx
1903         eval _$file=$xxx
1904         case "$xxx" in
1905         /*)
1906                 echo $file is in $xxx.
1907                 ;;
1908         ?:[\\/]*)
1909                 echo $file is in $xxx.
1910                 ;;
1911         *)
1912                 echo "I don't know where '$file' is, and my life depends on it." >&4
1913                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1914                 exit 1
1915                 ;;
1916         esac
1917 done
1918 echo " "
1919 echo "Don't worry if any of the following aren't found..."
1920 say=offhand
1921 for file in $trylist; do
1922         eval xxx=\$$file
1923         case "$xxx" in
1924         /*|?:[\\/]*)
1925                 if test -f "$xxx"; then
1926                         : ok
1927                 else
1928                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1929                         xxx=`./loc $file $file $pth`
1930                 fi
1931                 ;;
1932         '') xxx=`./loc $file $file $pth`;;
1933         *) xxx=`./loc $xxx $xxx $pth`;;
1934         esac
1935         eval $file=$xxx
1936         eval _$file=$xxx
1937         case "$xxx" in
1938         /*)
1939                 echo $file is in $xxx.
1940                 ;;
1941         ?:[\\/]*)
1942                 echo $file is in $xxx.
1943                 ;;
1944         *)
1945                 echo "I don't see $file out there, $say."
1946                 say=either
1947                 ;;
1948         esac
1949 done
1950 case "$egrep" in
1951 egrep)
1952         echo "Substituting grep for egrep."
1953         egrep=$grep
1954         ;;
1955 esac
1956 case "$ln" in
1957 ln)
1958         echo "Substituting cp for ln."
1959         ln=$cp
1960         ;;
1961 esac
1962 case "$test" in
1963 test)
1964         echo "Hopefully test is built into your sh."
1965         ;;
1966 *)
1967         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1968                 echo "Using the test built into your sh."
1969                 test=test
1970                 _test=test
1971         fi
1972         ;;
1973 esac
1974 case "$echo" in
1975 echo)
1976         echo "Hopefully echo is built into your sh."
1977         ;;
1978 '') ;;
1979 *)
1980         echo " "
1981 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1982         $echo $n "hi there$c" >foo1
1983         echo $n "hi there$c" >foo2
1984         if cmp foo1 foo2 >/dev/null 2>&1; then
1985                 echo "They are compatible.  In fact, they may be identical."
1986         else
1987                 case "$n" in
1988                 '-n') n='' c='\c';;
1989                 *) n='-n' c='';;
1990                 esac
1991                 cat <<FOO
1992 They are not compatible!  You are probably running ksh on a non-USG system.
1993 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1994 have echo built in and we may have to run some Bourne shell scripts.  That
1995 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
1996
1997 FOO
1998                 $echo $n "The star should be here-->$c"
1999                 $echo "*"
2000         fi
2001         $rm -f foo1 foo2
2002         ;;
2003 esac
2004
2005 : determine whether symbolic links are supported
2006 echo " "
2007 $touch blurfl
2008 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2009         echo "Symbolic links are supported." >&4
2010         lns="$ln -s"
2011 else
2012         echo "Symbolic links are NOT supported." >&4
2013         lns="$ln"
2014 fi
2015 $rm -f blurfl sym
2016
2017 : see whether [:lower:] and [:upper:] are supported character classes
2018 echo " "
2019 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2020 ABYZ)
2021         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2022         up='[:upper:]'
2023         low='[:lower:]'
2024         ;;
2025 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2026         # (0xc9 and 0xd1), therefore that is a nice testing point.
2027         if test "X$up" = X -o "X$low" = X; then
2028             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2029             ij) up='[A-Z]'
2030                 low='[a-z]'
2031                 ;;
2032             esac
2033         fi
2034         if test "X$up" = X -o "X$low" = X; then
2035             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2036             ij) up='A-Z'
2037                 low='a-z'
2038                 ;;
2039             esac
2040         fi
2041         if test "X$up" = X -o "X$low" = X; then
2042             case "`echo IJ | od -x 2>/dev/null`" in
2043             *C9D1*|*c9d1*)
2044                 echo "Hey, this might be EBCDIC." >&4
2045                 if test "X$up" = X -o "X$low" = X; then
2046                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2047                     ij) up='[A-IJ-RS-Z]'
2048                         low='[a-ij-rs-z]'
2049                         ;;
2050                     esac
2051                 fi
2052                 if test "X$up" = X -o "X$low" = X; then
2053                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2054                     ij) up='A-IJ-RS-Z'
2055                         low='a-ij-rs-z'
2056                         ;;
2057                     esac
2058                 fi
2059                 ;;
2060             esac
2061         fi
2062 esac
2063 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2064 ij)
2065     echo "Using $up and $low to convert case." >&4
2066     ;;
2067 *)
2068     echo "I don't know how to translate letters from upper to lower case." >&4
2069     echo "Your tr is not acting any way I know of." >&4
2070     exit 1
2071     ;;
2072 esac
2073 : set up the translation script tr, must be called with ./tr of course
2074 cat >tr <<EOSC
2075 $startsh
2076 case "\$1\$2" in
2077 '[A-Z][a-z]') exec $tr '$up' '$low';;
2078 '[a-z][A-Z]') exec $tr '$low' '$up';;
2079 esac
2080 exec $tr "\$@"
2081 EOSC
2082 chmod +x tr
2083 $eunicefix tr
2084
2085 : Try to determine whether config.sh was made on this system
2086 case "$config_sh" in
2087 '')
2088 myuname=`$uname -a 2>/dev/null`
2089 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2090 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2091 # because the A-Z/a-z are not consecutive.
2092 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2093         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2094 newmyuname="$myuname"
2095 dflt=n
2096 case "$knowitall" in
2097 '')
2098         if test -f ../config.sh; then
2099                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2100                         eval "`grep myuname= ../config.sh`"
2101                 fi
2102                 if test "X$myuname" = "X$newmyuname"; then
2103                         dflt=y
2104                 fi
2105         fi
2106         ;;
2107 *) dflt=y;;
2108 esac
2109
2110 : Get old answers from old config file if Configure was run on the
2111 : same system, otherwise use the hints.
2112 hint=default
2113 cd ..
2114 if test -f config.sh; then
2115         echo " "
2116         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2117         . UU/myread
2118         case "$ans" in
2119         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2120         *)  echo "Fetching default answers from your old config.sh file..." >&4
2121                 tmp_n="$n"
2122                 tmp_c="$c"
2123                 tmp_sh="$sh"
2124                 . ./config.sh
2125                 cp config.sh UU
2126                 n="$tmp_n"
2127                 c="$tmp_c"
2128                 : Older versions did not always set $sh.  Catch re-use of such
2129                 : an old config.sh.
2130                 case "$sh" in
2131                 '') sh="$tmp_sh" ;;
2132                 esac
2133                 hint=previous
2134                 ;;
2135         esac
2136 fi
2137 if test ! -f config.sh; then
2138         $cat <<EOM
2139
2140 First time through, eh?  I have some defaults handy for some systems
2141 that need some extra help getting the Configure answers right:
2142
2143 EOM
2144         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2145         dflt=''
2146         : Half the following guesses are probably wrong... If you have better
2147         : tests or hints, please send them to perlbug@perl.com
2148         : The metaconfig authors would also appreciate a copy...
2149         $test -f /irix && osname=irix
2150         $test -f /xenix && osname=sco_xenix
2151         $test -f /dynix && osname=dynix
2152         $test -f /dnix && osname=dnix
2153         $test -f /lynx.os && osname=lynxos
2154         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2155         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2156         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2157         $test -f /bin/mips && /bin/mips && osname=mips
2158         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2159                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2160         $test -d /usr/apollo/bin && osname=apollo
2161         $test -f /etc/saf/_sactab && osname=svr4
2162         $test -d /usr/include/minix && osname=minix
2163         if $test -d /MachTen -o -d /MachTen_Folder; then
2164                 osname=machten
2165                 if $test -x /sbin/version; then
2166                         osvers=`/sbin/version | $awk '{print $2}' |
2167                         $sed -e 's/[A-Za-z]$//'`
2168                 elif $test -x /usr/etc/version; then
2169                         osvers=`/usr/etc/version | $awk '{print $2}' |
2170                         $sed -e 's/[A-Za-z]$//'`
2171                 else
2172                         osvers="$2.$3"
2173                 fi
2174         fi
2175
2176         $test -f /sys/posix.dll &&
2177                 $test -f /usr/bin/what &&
2178                 set X `/usr/bin/what /sys/posix.dll` &&
2179                 $test "$3" = UWIN &&
2180                 osname=uwin &&
2181                 osvers="$5"
2182
2183         if $test -f $uname; then
2184                 set X $myuname
2185                 shift
2186
2187                 case "$5" in
2188                 fps*) osname=fps ;;
2189                 mips*)
2190                         case "$4" in
2191                         umips) osname=umips ;;
2192                         *) osname=mips ;;
2193                         esac;;
2194                 [23]100) osname=mips ;;
2195                 next*) osname=next ;;
2196                 i386*)
2197                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2198                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2199                                 osname='sco'
2200                                 osvers=$tmp
2201                         elif $test -f /etc/kconfig; then
2202                                 osname=isc
2203                                 if test "$lns" = "$ln -s"; then
2204                                         osvers=4
2205                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2206                                         osvers=3
2207                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2208                                         osvers=2
2209                                 fi
2210                         fi
2211                         tmp=''
2212                         ;;
2213                 pc*)
2214                         if test -n "$DJGPP"; then
2215                                 osname=dos
2216                                 osvers=djgpp
2217                         fi
2218                         ;;
2219                 esac
2220
2221                 case "$1" in
2222                 aix) osname=aix
2223                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2224                         case "$tmp" in
2225                         'not found') osvers="$4"."$3" ;;
2226                         '<3240'|'<>3240') osvers=3.2.0 ;;
2227                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2228                         '=3250'|'>3250') osvers=3.2.5 ;;
2229                         *) osvers=$tmp;;
2230                         esac
2231                         ;;
2232                 bsd386) osname=bsd386
2233                         osvers=`$uname -r`
2234                         ;;
2235                 cygwin*) osname=cygwin
2236                         osvers="$3"
2237                         ;;
2238                 *dc.osx) osname=dcosx
2239                         osvers="$3"
2240                         ;;
2241                 dnix) osname=dnix
2242                         osvers="$3"
2243                         ;;
2244                 domainos) osname=apollo
2245                         osvers="$3"
2246                         ;;
2247                 dgux) osname=dgux 
2248                         osvers="$3"
2249                         ;;
2250                 dynixptx*) osname=dynixptx
2251                         osvers=`echo "$4"|sed 's/^v//'`
2252                         ;;
2253                 freebsd) osname=freebsd 
2254                         osvers="$3" ;;
2255                 genix) osname=genix ;;
2256                 hp*) osname=hpux 
2257                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2258                         ;;
2259                 irix*) osname=irix
2260                         case "$3" in
2261                         4*) osvers=4 ;;
2262                         5*) osvers=5 ;;
2263                         *)      osvers="$3" ;;
2264                         esac
2265                         ;;
2266                 linux) osname=linux
2267                         case "$3" in
2268                         *)      osvers="$3" ;;
2269                         esac
2270                         ;;
2271                 MiNT) osname=mint
2272                         ;;
2273                 netbsd*) osname=netbsd
2274                         osvers="$3"
2275                         ;;
2276                 news-os) osvers="$3"
2277                         case "$3" in
2278                         4*) osname=newsos4 ;;
2279                         *) osname=newsos ;;
2280                         esac
2281                         ;;
2282                 next*) osname=next ;;
2283                 POSIX-BC | posix-bc ) osname=posix-bc
2284                         osvers="$3"
2285                         ;;
2286                 powerux | power_ux | powermax_os | powermaxos | \
2287                 powerunix | power_unix) osname=powerux
2288                         osvers="$3"
2289                         ;;
2290                 qnx) osname=qnx
2291                         osvers="$4"
2292                         ;;
2293                 solaris) osname=solaris
2294                         case "$3" in
2295                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2296                         *)      osvers="$3" ;;
2297                         esac
2298                         ;;
2299                 sunos) osname=sunos
2300                         case "$3" in
2301                         5*) osname=solaris
2302                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2303                         *)      osvers="$3" ;;
2304                         esac
2305                         ;;
2306                 titanos) osname=titanos
2307                         case "$3" in
2308                         1*) osvers=1 ;;
2309                         2*) osvers=2 ;;
2310                         3*) osvers=3 ;;
2311                         4*) osvers=4 ;;
2312                         *)      osvers="$3" ;;
2313                         esac
2314                         ;;
2315                 ultrix) osname=ultrix
2316                         osvers="$3"
2317                         ;;
2318                 osf1|mls+)      case "$5" in
2319                                 alpha)
2320                                         osname=dec_osf
2321                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2322                                         ;;
2323                         hp*)    osname=hp_osf1  ;;
2324                         mips)   osname=mips_osf1 ;;
2325                         esac
2326                         ;;
2327                 unixware) osname=svr5
2328                         osvers="$4"
2329                         ;;
2330                 uts) osname=uts
2331                         osvers="$3"
2332                         ;;
2333                 $2) case "$osname" in
2334                         *isc*) ;;
2335                         *freebsd*) ;;
2336                         svr*)
2337                                 : svr4.x or possibly later
2338                                 case "svr$3" in 
2339                                 ${osname}*)
2340                                         osname=svr$3
2341                                         osvers=$4
2342                                         ;;
2343                                 esac
2344                                 case "$osname" in
2345                                 svr4.0)
2346                                         : Check for ESIX
2347                                         if test -f /stand/boot ; then
2348                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2349                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2350                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2351                                                         if test -n "$isesix"; then
2352                                                                 osname=esix4
2353                                                         fi
2354                                                 fi
2355                                         fi
2356                                         ;;
2357                                 esac
2358                                 ;;
2359                         *)      if test -f /etc/systemid; then
2360                                         osname=sco
2361                                         set `echo $3 | $sed 's/\./ /g'` $4
2362                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2363                                                 osvers=$1.$2.$3
2364                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2365                                                 osvers=$1.$2
2366                                         elif $test -f $src/hints/sco_$1.sh; then
2367                                                 osvers=$1
2368                                         fi
2369                                 else
2370                                         case "$osname" in
2371                                         '') : Still unknown.  Probably a generic Sys V.
2372                                                 osname="sysv"
2373                                                 osvers="$3"
2374                                                 ;;
2375                                         esac
2376                                 fi
2377                                 ;;
2378                         esac
2379                         ;;
2380                 *)      case "$osname" in
2381                         '') : Still unknown.  Probably a generic BSD.
2382                                 osname="$1"
2383                                 osvers="$3"
2384                                 ;;
2385                         esac
2386                         ;;
2387                 esac
2388         else
2389                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2390                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2391                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2392                                 osname=news_os
2393                         fi
2394                         $rm -f UU/kernel.what
2395                 elif test -d c:/.; then
2396                         set X $myuname
2397                         osname=os2
2398                         osvers="$5"
2399                 fi
2400         fi
2401         
2402         : Now look for a hint file osname_osvers, unless one has been
2403         : specified already.
2404         case "$hintfile" in
2405         ''|' ')
2406                 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2407                 : Also try without trailing minor version numbers.
2408                 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2409                 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2410                 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2411                 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2412                 case "$file" in
2413                 '') dflt=none ;;
2414                 *)  case "$osvers" in
2415                         '') dflt=$file
2416                                 ;;
2417                         *)  if $test -f $src/hints/$file.sh ; then
2418                                         dflt=$file
2419                                 elif $test -f $src/hints/$xfile.sh ; then
2420                                         dflt=$xfile
2421                                 elif $test -f $src/hints/$xxfile.sh ; then
2422                                         dflt=$xxfile
2423                                 elif $test -f $src/hints/$xxxfile.sh ; then
2424                                         dflt=$xxxfile
2425                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2426                                         dflt=$xxxxfile
2427                                 elif $test -f "$src/hints/${osname}.sh" ; then
2428                                         dflt="${osname}"
2429                                 else
2430                                         dflt=none
2431                                 fi
2432                                 ;;
2433                         esac
2434                         ;;
2435                 esac
2436                 if $test -f Policy.sh ; then
2437                         case "$dflt" in
2438                         *Policy*) ;;
2439                         none) dflt="Policy" ;;
2440                         *) dflt="Policy $dflt" ;;
2441                         esac
2442                 fi
2443                 ;;
2444         *)
2445                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2446                 ;;
2447         esac
2448
2449         if $test -f Policy.sh ; then
2450                 $cat <<EOM
2451
2452 There's also a Policy hint file available, which should make the
2453 site-specific (policy) questions easier to answer.
2454 EOM
2455
2456         fi
2457
2458         $cat <<EOM
2459
2460 You may give one or more space-separated answers, or "none" if appropriate.
2461 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2462 is a good thing.  DO NOT give a wrong version or a wrong OS.
2463
2464 EOM
2465
2466         rp="Which of these apply, if any?"
2467         . UU/myread
2468         tans=$ans
2469         for file in $tans; do
2470                 if $test X$file = XPolicy -a -f Policy.sh; then
2471                         . Policy.sh
2472                         $cat Policy.sh >> UU/config.sh
2473                 elif $test -f $src/hints/$file.sh; then
2474                         . $src/hints/$file.sh
2475                         $cat $src/hints/$file.sh >> UU/config.sh
2476                 elif $test X$tans = X -o X$tans = Xnone ; then
2477                         : nothing
2478                 else
2479                         : Give one chance to correct a possible typo.
2480                         echo "$file.sh does not exist"
2481                         dflt=$file
2482                         rp="hint to use instead?"
2483                         . UU/myread
2484                         for file in $ans; do
2485                                 if $test -f "$src/hints/$file.sh"; then
2486                                         . $src/hints/$file.sh
2487                                         $cat $src/hints/$file.sh >> UU/config.sh
2488                                 elif $test X$ans = X -o X$ans = Xnone ; then
2489                                         : nothing
2490                                 else
2491                                         echo "$file.sh does not exist -- ignored."
2492                                 fi
2493                         done
2494                 fi
2495         done
2496
2497         hint=recommended
2498         : Remember our hint file for later.
2499         if $test -f "$src/hints/$file.sh" ; then
2500                 hintfile="$file"
2501         else
2502                 hintfile=''
2503         fi
2504 fi
2505 cd UU
2506 ;;
2507 *)
2508         echo " "
2509         echo "Fetching default answers from $config_sh..." >&4
2510         tmp_n="$n"
2511         tmp_c="$c"
2512         cd ..
2513         cp $config_sh config.sh 2>/dev/null
2514         chmod +w config.sh
2515         . ./config.sh
2516         cd UU
2517         cp ../config.sh .
2518         n="$tmp_n"
2519         c="$tmp_c"
2520         hint=previous
2521         ;;
2522 esac
2523 test "$override" && . ./optdef.sh
2524 myuname="$newmyuname"
2525
2526 : Restore computed paths
2527 for file in $loclist $trylist; do
2528         eval $file="\$_$file"
2529 done
2530
2531 cat << EOM
2532
2533 Configure uses the operating system name and version to set some defaults.
2534 The default value is probably right if the name rings a bell. Otherwise,
2535 since spelling matters for me, either accept the default or answer "none"
2536 to leave it blank.
2537
2538 EOM
2539 case "$osname" in
2540         ''|' ')
2541                 case "$hintfile" in
2542                 ''|' '|none) dflt=none ;;
2543                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2544                 esac
2545                 ;;
2546         *) dflt="$osname" ;;
2547 esac
2548 rp="Operating system name?"
2549 . ./myread
2550 case "$ans" in
2551 none)  osname='' ;;
2552 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2553 esac
2554 echo " "
2555 case "$osvers" in
2556         ''|' ')
2557                 case "$hintfile" in
2558                 ''|' '|none) dflt=none ;;
2559                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2560                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2561                         case "$dflt" in
2562                         ''|' ') dflt=none ;;
2563                         esac
2564                         ;;
2565                 esac
2566                 ;;
2567         *) dflt="$osvers" ;;
2568 esac
2569 rp="Operating system version?"
2570 . ./myread
2571 case "$ans" in
2572 none)  osvers='' ;;
2573 *) osvers="$ans" ;;
2574 esac
2575
2576
2577 . ./posthint.sh
2578
2579 : who configured the system
2580 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2581 cf_by=`(logname) 2>/dev/null`
2582 case "$cf_by" in
2583 "")
2584         cf_by=`(whoami) 2>/dev/null`
2585         case "$cf_by" in
2586         "") cf_by=unknown ;;
2587         esac ;;
2588 esac
2589
2590 : set up the script used to warn in case of inconsistency
2591 cat <<EOS >whoa
2592 $startsh
2593 EOS
2594 cat <<'EOSC' >>whoa
2595 dflt=y
2596 echo " "
2597 echo "*** WHOA THERE!!! ***" >&4
2598 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2599 rp="    Keep the $hint value?"
2600 . ./myread
2601 case "$ans" in
2602 y) td=$was; tu=$was;;
2603 esac
2604 EOSC
2605
2606 : function used to set $1 to $val
2607 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2608 case "$val$was" in
2609 $define$undef) . ./whoa; eval "$var=\$td";;
2610 $undef$define) . ./whoa; eval "$var=\$tu";;
2611 *) eval "$var=$val";;
2612 esac'
2613
2614 case "$usethreads" in
2615 $define|true|[yY]*)     dflt='y';;
2616 *) dflt='n';;
2617 esac
2618 cat <<EOM
2619
2620 Perl can be built to take advantage of threads on some systems.
2621 To do so, Configure can be run with -Dusethreads.
2622
2623 Note that threading is a highly experimental feature, and
2624 some known race conditions still remain.  If you choose to try
2625 it, be very sure to not actually deploy it for production
2626 purposes.  README.threads has more details, and is required
2627 reading if you enable threads.
2628
2629 If this doesn't make any sense to you, just accept the default '$dflt'.
2630 EOM
2631 rp='Build a threading Perl?'
2632 . ./myread
2633 case "$ans" in
2634 y|Y)    val="$define" ;;
2635 *)      val="$undef" ;;
2636 esac
2637 set usethreads
2638 eval $setvar
2639
2640 case "$usethreads" in
2641 $define)
2642         $cat <<EOM
2643
2644 As of 5.5.640, Perl has two different internal threading implementations,
2645 the 5.005 version (5005threads) and an interpreter-based version
2646 (ithreads) that has one interpreter per thread.  Both are very 
2647 experimental.  This arrangement exists to help developers work out
2648 which one is better.
2649
2650 If you're a casual user, you probably don't want interpreter-threads
2651 at this time.  There doesn't yet exist a way to create threads from
2652 within Perl in this model, i.e., "use Thread;" will NOT work.
2653 EOM
2654         : Default to ithreads unless overridden on command line or with
2655         : old config.sh
2656         dflt='y'
2657         case "$use5005threads" in
2658                 $define|true|[yY]*) dflt='n';;
2659         esac
2660         case "$useithreads" in
2661                 $undef|false|[nN]*) dflt='n';;
2662         esac
2663         rp='Use interpreter-based ithreads?'
2664         . ./myread
2665         case "$ans" in
2666         y|Y)    val="$define" ;;
2667         *)      val="$undef" ;;
2668         esac
2669         set useithreads
2670         eval $setvar
2671         : Now set use5005threads to the opposite value.
2672         case "$useithreads" in
2673         $define) val="$undef" ;;
2674         *) val="$define" ;;
2675         esac
2676         set use5005threads
2677         eval $setvar
2678         ;;
2679 *)
2680         useithreads="$undef"
2681         use5005threads="$undef"
2682         ;;
2683 esac
2684
2685 case "$d_oldpthreads" in
2686 '')     : Configure tests would be welcome here.  For now, assume undef.
2687         val="$undef" ;;
2688 *)      val="$d_oldpthreads" ;;
2689 esac
2690 set d_oldpthreads
2691 eval $setvar
2692
2693
2694 case "$usethreads" in
2695 "$define"|true|[yY]*)
2696 : Look for a hint-file generated 'call-back-unit'.  If the
2697 : user has specified that a threading perl is to be built,
2698 : we may need to set or change some other defaults.
2699         if $test -f usethreads.cbu; then
2700                 echo "Your platform has some specific hints for threaded builds, using them..."
2701                 . ./usethreads.cbu
2702         else
2703                 $cat <<EOM
2704 (Your platform doesn't have any specific hints for threaded builds.
2705  Assuming POSIX threads, then.)
2706 EOM
2707         fi
2708         ;;
2709 esac
2710
2711 cat <<EOM
2712
2713 Perl can be built so that multiple Perl interpreters can coexist
2714 within the same Perl executable.
2715 EOM
2716
2717 case "$useithreads" in
2718 $define)
2719         cat <<EOM
2720 This multiple interpreter support is required for interpreter-based threads.
2721 EOM
2722         val="$define"
2723         ;;
2724 *)      case "$usemultiplicity" in
2725         $define|true|[yY]*)     dflt='y';;
2726         *) dflt='n';;
2727         esac
2728         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2729         rp='Build Perl for multiplicity?'
2730         . ./myread
2731         case "$ans" in
2732         y|Y)    val="$define" ;;
2733         *)      val="$undef" ;;
2734         esac
2735         ;;
2736 esac
2737 set usemultiplicity
2738 eval $setvar
2739
2740 : determine where manual pages are on this system
2741 echo " "
2742 case "$sysman" in
2743 '') 
2744         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2745         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2746         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2747         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2748         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2749         sysman=`./loc . /usr/man/man1 $syspath`
2750         ;;
2751 esac
2752 if $test -d "$sysman"; then
2753         echo "System manual is in $sysman." >&4
2754 else
2755         echo "Could not find manual pages in source form." >&4
2756 fi
2757
2758 : see what memory models we can support
2759 case "$models" in
2760 '')
2761         $cat >pdp11.c <<'EOP'
2762 int main() {
2763 #ifdef pdp11
2764         exit(0);
2765 #else
2766         exit(1);
2767 #endif
2768 }
2769 EOP
2770         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2771         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2772                 dflt='unsplit split'
2773         else
2774                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2775                 case "$tans" in
2776                 X) dflt='none';;
2777                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2778                                 dflt='small'
2779                         else
2780                                 dflt=''
2781                         fi
2782                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2783                                 dflt="$dflt medium"
2784                         fi
2785                         if $test -d /lib/large || $test -d /usr/lib/large; then
2786                                 dflt="$dflt large"
2787                         fi
2788                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2789                                 dflt="$dflt huge"
2790                         fi
2791                 esac
2792         fi;;
2793 *) dflt="$models";;
2794 esac
2795 $cat <<EOM
2796  
2797 Some systems have different model sizes.  On most systems they are called
2798 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2799 split.  If your system doesn't support different memory models, say "none".
2800 If you wish to force everything to one memory model, say "none" here and
2801 put the appropriate flags later when it asks you for other cc and ld flags.
2802 Venix systems may wish to put "none" and let the compiler figure things out.
2803 (In the following question multiple model names should be space separated.)
2804
2805 The default for most systems is "none".
2806
2807 EOM
2808 rp="Which memory models are supported?"
2809 . ./myread
2810 models="$ans"
2811
2812 case "$models" in
2813 none)
2814         small=''
2815         medium=''
2816         large=''
2817         huge=''
2818         unsplit=''
2819         split=''
2820         ;;
2821 *split)
2822         case "$split" in
2823         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2824                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2825                         dflt='-i'
2826                 else
2827                         dflt='none'
2828                 fi;;
2829         *) dflt="$split";;
2830         esac
2831         rp="What flag indicates separate I and D space?"
2832         . ./myread
2833         tans="$ans"
2834         case "$tans" in
2835         none) tans='';;
2836         esac
2837         split="$tans"
2838         unsplit='';;
2839 *large*|*small*|*medium*|*huge*)
2840         case "$models" in
2841         *large*)
2842                 case "$large" in
2843                 '') dflt='-Ml';;
2844                 *) dflt="$large";;
2845                 esac
2846         rp="What flag indicates large model?"
2847         . ./myread
2848         tans="$ans"
2849         case "$tans" in
2850         none) tans='';
2851         esac
2852         large="$tans";;
2853         *) large='';;
2854         esac
2855         case "$models" in
2856         *huge*) case "$huge" in
2857                 '') dflt='-Mh';;
2858                 *) dflt="$huge";;
2859                 esac
2860                 rp="What flag indicates huge model?"
2861                 . ./myread
2862                 tans="$ans"
2863                 case "$tans" in
2864                 none) tans='';
2865                 esac
2866                 huge="$tans";;
2867         *) huge="$large";;
2868         esac
2869         case "$models" in
2870         *medium*) case "$medium" in
2871                 '') dflt='-Mm';;
2872                 *) dflt="$medium";;
2873                 esac
2874                 rp="What flag indicates medium model?"
2875                 . ./myread
2876                 tans="$ans"
2877                 case "$tans" in
2878                 none) tans='';
2879                 esac
2880                 medium="$tans";;
2881         *) medium="$large";;
2882         esac
2883         case "$models" in
2884         *small*) case "$small" in
2885                 '') dflt='none';;
2886                 *) dflt="$small";;
2887                 esac
2888                 rp="What flag indicates small model?"
2889                 . ./myread
2890                 tans="$ans"
2891                 case "$tans" in
2892                 none) tans='';
2893                 esac
2894                 small="$tans";;
2895         *) small='';;
2896         esac
2897         ;;
2898 *)
2899         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2900         ;;
2901 esac
2902 $rm -f pdp11.* pdp11
2903
2904 : make some quick guesses about what we are up against
2905 echo " "
2906 $echo $n "Hmm...  $c"
2907 echo exit 1 >bsd
2908 echo exit 1 >usg
2909 echo exit 1 >v7
2910 echo exit 1 >osf1
2911 echo exit 1 >eunice
2912 echo exit 1 >xenix
2913 echo exit 1 >venix
2914 echo exit 1 >os2
2915 d_bsd="$undef"
2916 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2917 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2918 then
2919         echo "Looks kind of like an OSF/1 system, but we'll see..."
2920         echo exit 0 >osf1
2921 elif test `echo abc | tr a-z A-Z` = Abc ; then
2922         xxx=`./loc addbib blurfl $pth`
2923         if $test -f $xxx; then
2924         echo "Looks kind of like a USG system with BSD features, but we'll see..."
2925                 echo exit 0 >bsd
2926                 echo exit 0 >usg
2927         else
2928                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2929                         echo "Looks kind of like an extended USG system, but we'll see..."
2930                 else
2931                         echo "Looks kind of like a USG system, but we'll see..."
2932                 fi
2933                 echo exit 0 >usg
2934         fi
2935 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2936         echo "Looks kind of like a BSD system, but we'll see..."
2937         d_bsd="$define"
2938         echo exit 0 >bsd
2939 else
2940         echo "Looks kind of like a Version 7 system, but we'll see..."
2941         echo exit 0 >v7
2942 fi
2943 case "$eunicefix" in
2944 *unixtovms*)
2945         $cat <<'EOI'
2946 There is, however, a strange, musty smell in the air that reminds me of
2947 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2948 EOI
2949         echo exit 0 >eunice
2950         d_eunice="$define"
2951 : it so happens the Eunice I know will not run shell scripts in Unix format
2952         ;;
2953 *)
2954         echo " "
2955         echo "Congratulations.  You aren't running Eunice."
2956         d_eunice="$undef"
2957         ;;
2958 esac
2959 : Detect OS2.  The p_ variable is set above in the Head.U unit.
2960 case "$p_" in
2961 :) ;;
2962 *)
2963         $cat <<'EOI'
2964 I have the feeling something is not exactly right, however...don't tell me...
2965 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2966 EOI
2967         echo exit 0 >os2
2968         ;;
2969 esac
2970 if test -f /xenix; then
2971         echo "Actually, this looks more like a XENIX system..."
2972         echo exit 0 >xenix
2973         d_xenix="$define"
2974 else
2975         echo " "
2976         echo "It's not Xenix..."
2977         d_xenix="$undef"
2978 fi
2979 chmod +x xenix
2980 $eunicefix xenix
2981 if test -f /venix; then
2982         echo "Actually, this looks more like a VENIX system..."
2983         echo exit 0 >venix
2984 else
2985         echo " "
2986         if ./xenix; then
2987                 : null
2988         else
2989                 echo "Nor is it Venix..."
2990         fi
2991 fi
2992 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2993 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2994 $rm -f foo
2995
2996 : see if we need a special compiler
2997 echo " "
2998 if ./usg; then
2999         case "$cc" in
3000         '') case "$Mcc" in
3001                 /*) dflt='Mcc';;
3002                 *) case "$large" in
3003                         -M*) dflt='cc';;
3004                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3005                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3006                                                 dflt='cc'
3007                                         else
3008                                                 dflt='cc -M'
3009                                         fi
3010                                 else
3011                                         dflt='cc'
3012                                 fi;;
3013                         esac;;
3014                 esac;;
3015         *)  dflt="$cc";;
3016         esac
3017         case "$dflt" in
3018         *M*)    $cat <<'EOM'
3019 On some older systems the default C compiler will not resolve multiple global
3020 references that happen to have the same name.  On some such systems the "Mcc"
3021 command may be used to force these to be resolved.  On other systems a "cc -M"
3022 command is required.  (Note that the -M flag on other systems indicates a
3023 memory model to use!) If you have the Gnu C compiler, you might wish to use
3024 that instead.
3025
3026 EOM
3027         ;;
3028         esac
3029         rp="Use which C compiler?"
3030         . ./myread
3031         cc="$ans"
3032 else
3033         case "$cc" in
3034         '') dflt=cc;;
3035         *) dflt="$cc";;
3036         esac
3037         rp="Use which C compiler?"
3038         . ./myread
3039         cc="$ans"
3040 fi
3041 : Look for a hint-file generated 'call-back-unit'.  Now that the
3042 : user has specified the compiler, we may need to set or change some
3043 : other defaults.
3044 if $test -f cc.cbu; then
3045     . ./cc.cbu
3046 fi
3047 echo " "
3048 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3049 $cat >gccvers.c <<EOM
3050 #include <stdio.h>
3051 int main() {
3052 #ifdef __GNUC__
3053 #ifdef __VERSION__
3054         printf("%s\n", __VERSION__);
3055 #else
3056         printf("%s\n", "1");
3057 #endif
3058 #endif
3059         exit(0);
3060 }
3061 EOM
3062 if $cc $ldflags -o gccvers gccvers.c; then
3063         gccversion=`./gccvers`
3064         case "$gccversion" in
3065         '') echo "You are not using GNU cc." ;;
3066         *)  echo "You are using GNU cc $gccversion."
3067             ;;
3068         esac
3069 else
3070         echo " "
3071         echo "*** WHOA THERE!!! ***" >&4
3072         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3073         case "$knowitall" in
3074         '')
3075         echo "    You'd better start hunting for one and let me know about it." >&4
3076                 exit 1
3077                 ;;
3078         esac
3079 fi
3080 $rm -f gccvers*
3081 case "$gccversion" in
3082 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3083 esac
3084
3085 : decide how portable to be.  Allow command line overrides.
3086 case "$d_portable" in
3087 "$undef") ;;
3088 *)      d_portable="$define" ;;
3089 esac
3090
3091 : set up shell script to do ~ expansion
3092 cat >filexp <<EOSS
3093 $startsh
3094 : expand filename
3095 case "\$1" in
3096  ~/*|~)
3097         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3098         ;;
3099  ~*)
3100         if $test -f /bin/csh; then
3101                 /bin/csh -f -c "glob \$1"
3102                 failed=\$?
3103                 echo ""
3104                 exit \$failed
3105         else
3106                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3107                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3108                 if $test ! -d "\$dir"; then
3109                         me=\`basename \$0\`
3110                         echo "\$me: can't locate home directory for: \$name" >&2
3111                         exit 1
3112                 fi
3113                 case "\$1" in
3114                 */*)
3115                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3116                         ;;
3117                 *)
3118                         echo \$dir
3119                         ;;
3120                 esac
3121         fi
3122         ;;
3123 *)
3124         echo \$1
3125         ;;
3126 esac
3127 EOSS
3128 chmod +x filexp
3129 $eunicefix filexp
3130
3131 : now set up to get a file name
3132 cat <<EOS >getfile
3133 $startsh
3134 EOS
3135 cat <<'EOSC' >>getfile
3136 tilde=''
3137 fullpath=''
3138 already=''
3139 skip=''
3140 none_ok=''
3141 exp_file=''
3142 nopath_ok=''
3143 orig_rp="$rp"
3144 orig_dflt="$dflt"
3145 case "$gfpth" in
3146 '') gfpth='.' ;;
3147 esac
3148
3149 case "$fn" in
3150 *\(*)
3151         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3152         fn=`echo $fn | sed 's/(.*)//'`
3153         ;;
3154 esac
3155
3156 case "$fn" in
3157 *:*)
3158         loc_file=`expr $fn : '.*:\(.*\)'`
3159         fn=`expr $fn : '\(.*\):.*'`
3160         ;;
3161 esac
3162
3163 case "$fn" in
3164 *~*) tilde=true;;
3165 esac
3166 case "$fn" in
3167 */*) fullpath=true;;
3168 esac
3169 case "$fn" in
3170 *+*) skip=true;;
3171 esac
3172 case "$fn" in
3173 *n*) none_ok=true;;
3174 esac
3175 case "$fn" in
3176 *e*) exp_file=true;;
3177 esac
3178 case "$fn" in
3179 *p*) nopath_ok=true;;
3180 esac
3181
3182 case "$fn" in
3183 *f*) type='File';;
3184 *d*) type='Directory';;
3185 *l*) type='Locate';;
3186 esac
3187
3188 what="$type"
3189 case "$what" in
3190 Locate) what='File';;
3191 esac
3192
3193 case "$exp_file" in
3194 '')
3195         case "$d_portable" in
3196         "$define") ;;
3197         *) exp_file=true;;
3198         esac
3199         ;;
3200 esac
3201
3202 cd ..
3203 while test "$type"; do
3204         redo=''
3205         rp="$orig_rp"
3206         dflt="$orig_dflt"
3207         case "$tilde" in
3208         true) rp="$rp (~name ok)";;
3209         esac
3210         . UU/myread
3211         if test -f UU/getfile.ok && \
3212                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3213         then
3214                 value="$ans"
3215                 ansexp="$ans"
3216                 break
3217         fi
3218         case "$ans" in
3219         none)
3220                 value=''
3221                 ansexp=''
3222                 case "$none_ok" in
3223                 true) type='';;
3224                 esac
3225                 ;;
3226         *)
3227                 case "$tilde" in
3228                 '') value="$ans"
3229                         ansexp="$ans";;
3230                 *)
3231                         value=`UU/filexp $ans`
3232                         case $? in
3233                         0)
3234                                 if test "$ans" != "$value"; then
3235                                         echo "(That expands to $value on this system.)"
3236                                 fi
3237                                 ;;
3238                         *) value="$ans";;
3239                         esac
3240                         ansexp="$value"
3241                         case "$exp_file" in
3242                         '') value="$ans";;
3243                         esac
3244                         ;;
3245                 esac
3246                 case "$fullpath" in
3247                 true)
3248                         case "$ansexp" in
3249                         /*) value="$ansexp" ;;
3250                         *)
3251                                 redo=true
3252                                 case "$already" in
3253                                 true)
3254                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3255                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3256                                         ;;
3257                                 *)
3258                                 echo "Please give a full path name, starting with slash." >&4
3259                                         case "$tilde" in
3260                                         true)
3261                                 echo "Note that using ~name is ok provided it expands well." >&4
3262                                                 already=true
3263                                                 ;;
3264                                         esac
3265                                 esac
3266                                 ;;
3267                         esac
3268                         ;;
3269                 esac
3270                 case "$redo" in
3271                 '')
3272                         case "$type" in
3273                         File)
3274                                 for fp in $gfpth; do
3275                                         if test "X$fp" = X.; then
3276                                             pf="$ansexp"
3277                                         else    
3278                                             pf="$fp/$ansexp"
3279                                         fi
3280                                         if test -f "$pf"; then
3281                                                 type=''
3282                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3283                                         then
3284                                                 echo "($value is not a plain file, but that's ok.)"
3285                                                 type=''
3286                                         fi
3287                                         if test X"$type" = X; then
3288                                             value="$pf"
3289                                             break
3290                                         fi
3291                                 done
3292                                 ;;
3293                         Directory)
3294                                 for fp in $gfpth; do
3295                                         if test "X$fp" = X.; then
3296                                             pf="$ansexp"
3297                                         else    
3298                                             pf="$fp/$ansexp"
3299                                         fi
3300                                         if test -d "$pf"; then
3301                                                 type=''
3302                                                 value="$pf"
3303                                                 break
3304                                         fi
3305                                 done
3306                                 ;;
3307                         Locate)
3308                                 if test -d "$ansexp"; then
3309                                         echo "(Looking for $loc_file in directory $value.)"
3310                                         value="$value/$loc_file"
3311                                         ansexp="$ansexp/$loc_file"
3312                                 fi
3313                                 if test -f "$ansexp"; then
3314                                         type=''
3315                                 fi
3316                                 case "$nopath_ok" in
3317                                 true)   case "$value" in
3318                                         */*) ;;
3319                                         *)      echo "Assuming $value will be in people's path."
3320                                                 type=''
3321                                                 ;;
3322                                         esac
3323                                         ;;
3324                                 esac
3325                                 ;;
3326                         esac
3327
3328                         case "$skip" in
3329                         true) type='';
3330                         esac
3331
3332                         case "$type" in
3333                         '') ;;
3334                         *)
3335                                 if test "$fastread" = yes; then
3336                                         dflt=y
3337                                 else
3338                                         dflt=n
3339                                 fi
3340                                 rp="$what $value doesn't exist.  Use that name anyway?"
3341                                 . UU/myread
3342                                 dflt=''
3343                                 case "$ans" in
3344                                 y*) type='';;
3345                                 *) echo " ";;
3346                                 esac
3347                                 ;;
3348                         esac
3349                         ;;
3350                 esac
3351                 ;;
3352         esac
3353 done
3354 cd UU
3355 ans="$value"
3356 rp="$orig_rp"
3357 dflt="$orig_dflt"
3358 rm -f getfile.ok
3359 test "X$gfpthkeep" != Xy && gfpth=""
3360 EOSC
3361
3362 : What should the include directory be ?
3363 echo " "
3364 $echo $n "Hmm...  $c"
3365 dflt='/usr/include'
3366 incpath=''
3367 mips_type=''
3368 if $test -f /bin/mips && /bin/mips; then
3369         echo "Looks like a MIPS system..."
3370         $cat >usr.c <<'EOCP'
3371 #ifdef SYSTYPE_BSD43
3372 /bsd43
3373 #endif
3374 EOCP
3375         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3376                 dflt='/bsd43/usr/include'
3377                 incpath='/bsd43'
3378                 mips_type='BSD 4.3'
3379         else
3380                 mips_type='System V'
3381         fi
3382         $rm -f usr.c usr.out
3383         echo "and you're compiling with the $mips_type compiler and libraries."
3384         xxx_prompt=y
3385         echo "exit 0" >mips
3386 else
3387         echo "Doesn't look like a MIPS system."
3388         xxx_prompt=n
3389         echo "exit 1" >mips
3390 fi
3391 chmod +x mips
3392 $eunicefix mips
3393 case "$usrinc" in
3394 '') ;;
3395 *) dflt="$usrinc";;
3396 esac
3397 case "$xxx_prompt" in
3398 y)      fn=d/
3399         echo " "
3400         rp='Where are the include files you want to use?'
3401         . ./getfile
3402         usrinc="$ans"
3403         ;;
3404 *)      usrinc="$dflt"
3405         ;;
3406 esac
3407
3408 : see how we invoke the C preprocessor
3409 echo " "
3410 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3411 cat <<'EOT' >testcpp.c
3412 #define ABC abc
3413 #define XYZ xyz
3414 ABC.XYZ
3415 EOT
3416 cd ..
3417 if test ! -f cppstdin; then
3418         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3419                 # AIX cc -E doesn't show the absolute headerfile
3420                 # locations but we'll cheat by using the -M flag.
3421                 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
3422         else
3423                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3424         fi
3425 else
3426         echo "Keeping your $hint cppstdin wrapper."
3427 fi
3428 chmod 755 cppstdin
3429 wrapper=`pwd`/cppstdin
3430 ok='false'
3431 cd UU
3432
3433 if $test "X$cppstdin" != "X" && \
3434         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3435         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3436 then
3437         echo "You used to use $cppstdin $cppminus so we'll use that again."
3438         case "$cpprun" in
3439         '') echo "But let's see if we can live without a wrapper..." ;;
3440         *)
3441                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3442                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3443                 then
3444                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3445                         ok='true'
3446                 else
3447                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3448                 fi
3449                 ;;
3450         esac
3451 else
3452         case "$cppstdin" in
3453         '') ;;
3454         *)
3455                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3456                 ;;
3457         esac
3458 fi
3459
3460 if $ok; then
3461         : nothing
3462 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3463         $cc -E <testcpp.c >testcpp.out 2>&1; \
3464         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3465         echo "Yup, it does."
3466         x_cpp="$cc -E"
3467         x_minus='';
3468 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3469         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3470         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3471         echo "Yup, it does."
3472         x_cpp="$cc -E"
3473         x_minus='-';
3474 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3475         $cc -P <testcpp.c >testcpp.out 2>&1; \
3476         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3477         echo "Yipee, that works!"
3478         x_cpp="$cc -P"
3479         x_minus='';
3480 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3481         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3482         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3483         echo "At long last!"
3484         x_cpp="$cc -P"
3485         x_minus='-';
3486 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3487         $cpp <testcpp.c >testcpp.out 2>&1; \
3488         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3489         echo "It works!"
3490         x_cpp="$cpp"
3491         x_minus='';
3492 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3493         $cpp - <testcpp.c >testcpp.out 2>&1; \
3494         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3495         echo "Hooray, it works!  I was beginning to wonder."
3496         x_cpp="$cpp"
3497         x_minus='-';
3498 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3499         $wrapper <testcpp.c >testcpp.out 2>&1; \
3500         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3501         x_cpp="$wrapper"
3502         x_minus=''
3503         echo "Eureka!"
3504 else
3505         dflt=''
3506         rp="No dice.  I can't find a C preprocessor.  Name one:"
3507         . ./myread
3508         x_cpp="$ans"
3509         x_minus=''
3510         $x_cpp <testcpp.c >testcpp.out 2>&1
3511         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3512                 echo "OK, that will do." >&4
3513         else
3514 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3515                 exit 1
3516         fi
3517 fi
3518
3519 case "$ok" in
3520 false)
3521         cppstdin="$x_cpp"
3522         cppminus="$x_minus"
3523         cpprun="$x_cpp"
3524         cpplast="$x_minus"
3525         set X $x_cpp
3526         shift
3527         case "$1" in
3528         "$cpp")
3529                 echo "Perhaps can we force $cc -E using a wrapper..."
3530                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3531                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3532                 then
3533                         echo "Yup, we can."
3534                         cppstdin="$wrapper"
3535                         cppminus='';
3536                 else
3537                         echo "Nope, we'll have to live without it..."
3538                 fi
3539                 ;;
3540         esac
3541         case "$cpprun" in
3542         "$wrapper")
3543                 cpprun=''
3544                 cpplast=''
3545                 ;;
3546         esac
3547         ;;
3548 esac
3549
3550 case "$cppstdin" in
3551 "$wrapper"|'cppstdin') ;;
3552 *) $rm -f $wrapper;;
3553 esac
3554 $rm -f testcpp.c testcpp.out
3555
3556 : Set private lib path
3557 case "$plibpth" in
3558 '') if ./mips; then
3559                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3560         fi;;
3561 esac
3562 case "$libpth" in
3563 ' ') dlist='';;
3564 '') dlist="$loclibpth $plibpth $glibpth";;
3565 *) dlist="$libpth";;
3566 esac
3567
3568 : Now check and see which directories actually exist, avoiding duplicates
3569 libpth=''
3570 for xxx in $dlist
3571 do
3572     if $test -d $xxx; then
3573                 case " $libpth " in
3574                 *" $xxx "*) ;;
3575                 *) libpth="$libpth $xxx";;
3576                 esac
3577     fi
3578 done
3579 $cat <<'EOM'
3580
3581 Some systems have incompatible or broken versions of libraries.  Among
3582 the directories listed in the question below, please remove any you
3583 know not to be holding relevant libraries, and add any that are needed.
3584 Say "none" for none.
3585
3586 EOM
3587 case "$libpth" in
3588 '') dflt='none';;
3589 *)
3590         set X $libpth
3591         shift
3592         dflt=${1+"$@"}
3593         ;;
3594 esac
3595 rp="Directories to use for library searches?"
3596 . ./myread
3597 case "$ans" in
3598 none) libpth=' ';;
3599 *) libpth="$ans";;
3600 esac
3601
3602 : compute shared library extension
3603 case "$so" in
3604 '')
3605         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3606                 dflt='sl'
3607         else
3608                 dflt='so'
3609         fi
3610         ;;
3611 *) dflt="$so";;
3612 esac
3613 $cat <<EOM
3614
3615 On some systems, shared libraries may be available.  Answer 'none' if
3616 you want to suppress searching of shared libraries for the remainder
3617 of this configuration.
3618
3619 EOM
3620 rp='What is the file extension used for shared libraries?'
3621 . ./myread
3622 so="$ans"
3623
3624 : Define several unixisms.
3625 : Hints files or command line option can be used to override them.
3626 : The convoluted testing is in case hints files set either the old
3627 : or the new name.
3628 case "$_exe" in
3629 '')     case "$exe_ext" in
3630     '') ;;
3631         *)      _exe="$exe_ext" ;;
3632         esac
3633         ;;
3634 esac
3635 case "$_a" in
3636 '')     case "$lib_ext" in
3637     '') _a='.a';;
3638         *)      _a="$lib_ext" ;;
3639         esac
3640         ;;
3641 esac
3642 case "$_o" in
3643 '') case "$obj_ext" in
3644         '')     _o='.o';;
3645         *)      _o="$obj_ext";;
3646         esac
3647         ;;
3648 esac
3649 case "$p_" in
3650 '') case "$path_sep" in
3651         '')     p_=':';;
3652         *)      p_="$path_sep";;
3653         esac
3654         ;;
3655 esac
3656 exe_ext=$_exe
3657 lib_ext=$_a
3658 obj_ext=$_o
3659 path_sep=$p_
3660
3661 : Which makefile gets called first.  This is used by make depend.
3662 case "$firstmakefile" in
3663 '') firstmakefile='makefile';;
3664 esac
3665
3666 case "$usesocks" in
3667 $define|true|[yY]*)     dflt='y';;
3668 *) dflt='n';;
3669 esac
3670 cat <<EOM
3671
3672 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3673 Configure must be run with -Dusesocks.
3674
3675 If this doesn't make any sense to you, just accept the default '$dflt'.
3676 EOM
3677 rp='Build Perl for SOCKS?'
3678 . ./myread
3679 case "$ans" in
3680 y|Y)    val="$define" ;;     
3681 *)      val="$undef" ;;
3682 esac
3683 set usesocks
3684 eval $setvar
3685
3686 : Looking for optional libraries
3687 echo " "
3688 echo "Checking for optional libraries..." >&4
3689 case "$libs" in
3690 ' '|'') dflt='';;
3691 *) dflt="$libs";;
3692 esac
3693 case "$libswanted" in
3694 '') libswanted='c_s';;
3695 esac
3696 case "$usesocks" in
3697 $define)
3698         libswanted="$libswanted socks5 socks5_sh"
3699         ;;
3700 esac
3701 for thislib in $libswanted; do
3702         for thisdir in $libpth; do
3703             xxx=''
3704             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3705                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3706                 $test -f "$xxx" && eval $libscheck
3707                 $test -f "$xxx" && libstyle=shared
3708             fi
3709             if test ! -f "$xxx"; then
3710                 xxx=$thisdir/lib$thislib.$so
3711                 $test -f "$xxx" && eval $libscheck
3712                 $test -f "$xxx" && libstyle=shared
3713             fi  
3714             if test ! -f "$xxx"; then
3715                 xxx=$thisdir/lib$thislib$_a
3716                 $test -f "$xxx" && eval $libscheck
3717                 $test -f "$xxx" && libstyle=static
3718             fi
3719             if test ! -f "$xxx"; then
3720                 xxx=$thisdir/$thislib$_a
3721                 $test -f "$xxx" && eval $libscheck
3722                 $test -f "$xxx" && libstyle=static
3723             fi
3724             if test ! -f "$xxx"; then
3725                 xxx=$thisdir/lib${thislib}_s$_a
3726                 $test -f "$xxx" && eval $libscheck
3727                 $test -f "$xxx" && libstyle=static
3728             fi
3729             if test ! -f "$xxx"; then
3730                 xxx=$thisdir/Slib$thislib$_a
3731                 $test -f "$xxx" && eval $libscheck
3732                 $test -f "$xxx" && libstyle=static
3733             fi
3734             if $test -f "$xxx"; then
3735                 case "$libstyle" in
3736                 shared) echo "Found -l$thislib (shared)." ;;
3737                 static) echo "Found -l$thislib." ;;
3738                 *)      echo "Found -l$thislib ($libstyle)." ;;
3739                 esac
3740                 case " $dflt " in
3741                 *"-l$thislib "*);;
3742                 *) dflt="$dflt -l$thislib"
3743                    libsfound="$libsfound $xxx"
3744                    yyy=`basename $xxx`
3745                    libsfiles="$libsfiles $yyy"
3746                    yyy=`echo $xxx|sed "s@/$yyy\\$@@"`
3747                    case " $libsdirs " in
3748                    *" $yyy "*) ;;
3749                    *) libsdirs="$libsdirs $yyy" ;;
3750                    esac
3751                    ;;
3752                 esac
3753                 break
3754             fi  
3755         done
3756         if $test ! -f "$xxx"; then
3757             echo "No -l$thislib."
3758         fi
3759 done
3760 set X $dflt
3761 shift
3762 dflt="$*"
3763 case "$libs" in
3764 '') dflt="$dflt";;
3765 *) dflt="$libs";;
3766 esac
3767 case "$dflt" in
3768 ' '|'') dflt='none';;
3769 esac
3770
3771 $cat <<EOM
3772
3773 In order to compile $package on your machine, a number of libraries
3774 are usually needed.  Include any other special libraries here as well.
3775 Say "none" for none.  The default list is almost always right.
3776 EOM
3777
3778 echo " "
3779 rp="What libraries to use?"
3780 . ./myread
3781 case "$ans" in
3782 none) libs=' ';;
3783 *) libs="$ans";;
3784 esac
3785
3786 : determine optimization, if desired, or use for debug flag also
3787 case "$optimize" in
3788 ' '|$undef) dflt='none';;
3789 '') dflt='-O';;
3790 *) dflt="$optimize";;
3791 esac
3792 $cat <<EOH
3793
3794 By default, $package compiles with the -O flag to use the optimizer.
3795 Alternately, you might want to use the symbolic debugger, which uses
3796 the -g flag (on traditional Unix systems).  Either flag can be
3797 specified here.  To use neither flag, specify the word "none".
3798
3799 EOH
3800 rp="What optimizer/debugger flag should be used?"
3801 . ./myread
3802 optimize="$ans"
3803 case "$optimize" in
3804 'none') optimize=" ";;
3805 esac
3806
3807 dflt=''
3808 : We will not override a previous value, but we might want to
3809 : augment a hint file
3810 case "$hint" in
3811 default|recommended)
3812         case "$gccversion" in
3813         1*) dflt='-fpcc-struct-return' ;;
3814         esac
3815         case "$optimize" in
3816         *-g*) dflt="$dflt -DDEBUGGING";;
3817         esac
3818         case "$gccversion" in
3819         2*) if test -d /etc/conf/kconfig.d &&
3820                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3821                 then
3822                         dflt="$dflt -posix"
3823                 fi
3824                 ;;
3825         esac
3826         case "$gccversion" in
3827         1*) ;;
3828         2.[0-8]*) ;;
3829         ?*)     echo " "
3830                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3831                 echo 'int main(void) { return 0; }' > gcctest.c
3832                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3833                         echo "Yes, it does." 2>&1
3834                         case "$ccflags" in
3835                         *strict-aliasing*) 
3836                                 echo "Leaving current flags $ccflags alone." 2>&1
3837                                 ;;
3838                         *) dflt="$dflt -fno-strict-aliasing" ;;
3839                         esac
3840                 else
3841                         echo "Nope, it doesn't, but that's ok." 2>&1
3842                 fi
3843                 ;;
3844         esac
3845         ;;
3846 esac
3847
3848 case "$mips_type" in
3849 *BSD*|'') inclwanted="$locincpth $usrinc";;
3850 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3851 esac
3852 for thisincl in $inclwanted; do
3853         if $test -d $thisincl; then
3854                 if $test x$thisincl != x$usrinc; then
3855                         case "$dflt" in
3856                         *$thisincl*);;
3857                         *) dflt="$dflt -I$thisincl";;
3858                         esac
3859                 fi
3860         fi
3861 done
3862
3863 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3864         xxx=true;
3865 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3866         xxx=true;
3867 else
3868         xxx=false;
3869 fi;
3870 if $xxx; then
3871         case "$dflt" in
3872         *$2*);;
3873         *) dflt="$dflt -D$2";;
3874         esac;
3875 fi'
3876
3877 set signal.h LANGUAGE_C; eval $inctest
3878
3879 case "$usesocks" in
3880 $define)
3881         ccflags="$ccflags -DSOCKS"
3882         ;;
3883 esac
3884
3885 case "$hint" in
3886 default|recommended) dflt="$ccflags $dflt" ;;
3887 *) dflt="$ccflags";;
3888 esac
3889
3890 case "$dflt" in
3891 ''|' ') dflt=none;;
3892 esac
3893 $cat <<EOH
3894
3895 Your C compiler may want other flags.  For this question you should include
3896 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3897 but you should NOT include libraries or ld flags like -lwhatever.  If you
3898 want $package to honor its debug switch, you should include -DDEBUGGING here.
3899 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3900
3901 To use no flags, specify the word "none".
3902
3903 EOH
3904 set X $dflt
3905 shift
3906 dflt=${1+"$@"}
3907 rp="Any additional cc flags?"
3908 . ./myread
3909 case "$ans" in
3910 none) ccflags='';;
3911 *) ccflags="$ans";;
3912 esac
3913
3914 : the following weeds options from ccflags that are of no interest to cpp
3915 cppflags="$ccflags"
3916 case "$gccversion" in
3917 1*) cppflags="$cppflags -D__GNUC__"
3918 esac
3919 case "$mips_type" in
3920 '');;
3921 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3922 esac
3923 case "$cppflags" in
3924 '');;
3925 *)
3926         echo " "
3927         echo "Let me guess what the preprocessor flags are..." >&4
3928         set X $cppflags
3929         shift
3930         cppflags=''
3931         $cat >cpp.c <<'EOM'
3932 #define BLURFL foo
3933
3934 BLURFL xx LFRULB
3935 EOM
3936         previous=''
3937         for flag in $*
3938         do
3939                 case "$flag" in
3940                 -*) ftry="$flag";;
3941                 *) ftry="$previous $flag";;
3942                 esac
3943                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3944                         >cpp1.out 2>/dev/null && \
3945                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3946                         >cpp2.out 2>/dev/null && \
3947                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3948                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3949                 then
3950                         cppflags="$cppflags $ftry"
3951                         previous=''
3952                 else
3953                         previous="$flag"
3954                 fi
3955         done
3956         set X $cppflags
3957         shift
3958         cppflags=${1+"$@"}
3959         case "$cppflags" in
3960         *-*)  echo "They appear to be: $cppflags";;
3961         esac
3962         $rm -f cpp.c cpp?.out
3963         ;;
3964 esac
3965
3966 : flags used in final linking phase
3967 case "$ldflags" in
3968 '') if ./venix; then
3969                 dflt='-i -z'
3970         else
3971                 dflt=''
3972         fi
3973         case "$ccflags" in
3974         *-posix*) dflt="$dflt -posix" ;;
3975         esac
3976         ;;
3977 *) dflt="$ldflags";;
3978 esac
3979
3980 : Try to guess additional flags to pick up local libraries.
3981 for thislibdir in $libpth; do
3982         case " $loclibpth " in
3983         *" $thislibdir "*)
3984                 case "$dflt " in 
3985                 *"-L$thislibdir "*) ;;
3986                 *)  dflt="$dflt -L$thislibdir" ;;
3987                 esac
3988                 ;;
3989         esac
3990 done
3991
3992 case "$dflt" in
3993 '') dflt='none' ;;
3994 esac
3995
3996 $cat <<EOH
3997
3998 Your C linker may need flags.  For this question you should
3999 include -L/whatever and any other flags used by the C linker, but you
4000 should NOT include libraries like -lwhatever.
4001
4002 Make sure you include the appropriate -L/path flags if your C linker
4003 does not normally search all of the directories you specified above,
4004 namely
4005         $libpth
4006 To use no flags, specify the word "none".
4007
4008 EOH
4009
4010 rp="Any additional ld flags (NOT including libraries)?"
4011 . ./myread
4012 case "$ans" in
4013 none) ldflags='';;
4014 *) ldflags="$ans";;
4015 esac
4016 rmlist="$rmlist pdp11"
4017
4018 : coherency check
4019 echo " "
4020 echo "Checking your choice of C compiler and flags for coherency..." >&4
4021 $cat > try.c <<'EOF'
4022 #include <stdio.h>
4023 int main() { printf("Ok\n"); exit(0); }
4024 EOF
4025 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4026 shift
4027 $cat >try.msg <<'EOM'
4028 I've tried to compile and run the following simple program:
4029
4030 EOM
4031 $cat try.c >> try.msg
4032
4033 $cat >> try.msg <<EOM
4034
4035 I used the command:
4036
4037         $*
4038         ./try
4039
4040 and I got the following output:
4041
4042 EOM
4043 dflt=y
4044 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4045         if sh -c './try' >>try.msg 2>&1; then
4046                 xxx=`./try`
4047                 case "$xxx" in
4048                 "Ok") dflt=n ;;
4049                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4050                         case " $libs " in
4051                         *" -lsfio "*)
4052                                 cat >> try.msg <<'EOQS'
4053 If $libs contains -lsfio, and sfio is mis-configured, then it
4054 sometimes (apparently) runs and exits with a 0 status, but with no
4055 output!  It may have to do with sfio's use of _exit vs. exit.
4056
4057 EOQS
4058                                 rp="You have a big problem.  Shall I abort Configure"
4059                                 dflt=y
4060                                 ;;
4061                         esac
4062                         ;;
4063                 esac
4064         else
4065                 echo "The program compiled OK, but exited with status $?." >>try.msg
4066                 rp="You have a problem.  Shall I abort Configure"
4067                 dflt=y
4068         fi
4069 else
4070         echo "I can't compile the test program." >>try.msg
4071         rp="You have a BIG problem.  Shall I abort Configure"
4072         dflt=y
4073 fi
4074 case "$dflt" in
4075 y)
4076         $cat try.msg >&4
4077         case "$knowitall" in
4078         '')
4079                 echo "(The supplied flags or libraries might be incorrect.)"
4080                 ;;
4081         *) dflt=n;;
4082         esac
4083         echo " "
4084         . ./myread
4085         case "$ans" in
4086         n*|N*) ;;
4087         *)      echo "Ok.  Stopping Configure." >&4
4088                 exit 1
4089                 ;;
4090         esac
4091         ;;
4092 n) echo "OK, that should do.";;
4093 esac
4094 $rm -f try try.* core
4095
4096 : define an is-a-typedef? function
4097 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4098 case "$inclist" in
4099 "") inclist="sys/types.h";;
4100 esac;
4101 eval "varval=\$$var";
4102 case "$varval" in
4103 "")
4104         $rm -f temp.c;
4105         for inc in $inclist; do
4106                 echo "#include <$inc>" >>temp.c;
4107         done;
4108         echo "#ifdef $type" >> temp.c;
4109         echo "printf(\"We have $type\");" >> temp.c;
4110         echo "#endif" >> temp.c;
4111         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4112         if $contains $type temp.E >/dev/null 2>&1; then
4113                 eval "$var=\$type";
4114         else
4115                 eval "$var=\$def";
4116         fi;
4117         $rm -f temp.?;;
4118 *) eval "$var=\$varval";;
4119 esac'
4120
4121 : define an is-a-typedef? function that prompts if the type is not available.
4122 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4123 case "$inclist" in
4124 "") inclist="sys/types.h";;
4125 esac;
4126 eval "varval=\$$var";
4127 case "$varval" in
4128 "")
4129         $rm -f temp.c;
4130         for inc in $inclist; do
4131                 echo "#include <$inc>" >>temp.c;
4132         done;
4133         echo "#ifdef $type" >> temp.c;
4134         echo "printf(\"We have $type\");" >> temp.c;
4135         echo "#endif" >> temp.c;
4136         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4137         echo " " ;
4138         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4139         if $contains $type temp.E >/dev/null 2>&1; then
4140                 echo "$type found." >&4;
4141                 eval "$var=\$type";
4142         else
4143                 echo "$type NOT found." >&4;
4144                 dflt="$def";
4145                 . ./myread ;
4146                 eval "$var=\$ans";
4147         fi;
4148         $rm -f temp.?;;
4149 *) eval "$var=\$varval";;
4150 esac'
4151
4152 : define a shorthand compile call
4153 compile='
4154 mc_file=$1;
4155 shift;
4156 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4157 : define a shorthand compile call for compilations that should be ok.
4158 compile_ok='
4159 mc_file=$1;
4160 shift;
4161 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4162
4163 : check for lengths of integral types
4164 echo " "
4165 case "$intsize" in
4166 '')
4167         echo "Checking to see how big your integers are..." >&4
4168         $cat >intsize.c <<'EOCP'
4169 #include <stdio.h>
4170 int main()
4171 {
4172         printf("intsize=%d;\n", (int)sizeof(int));
4173         printf("longsize=%d;\n", (int)sizeof(long));
4174         printf("shortsize=%d;\n", (int)sizeof(short));
4175         exit(0);
4176 }
4177 EOCP
4178         set intsize
4179         if eval $compile_ok && ./intsize > /dev/null; then
4180                 eval `./intsize`
4181                 echo "Your integers are $intsize bytes long."
4182                 echo "Your long integers are $longsize bytes long."
4183                 echo "Your short integers are $shortsize bytes long."
4184         else
4185                 $cat >&4 <<EOM
4186 !
4187 Help! I can't compile and run the intsize test program: please enlighten me!
4188 (This is probably a misconfiguration in your system or libraries, and
4189 you really ought to fix it.  Still, I'll try anyway.)
4190 !
4191 EOM
4192                 dflt=4
4193                 rp="What is the size of an integer (in bytes)?"
4194                 . ./myread
4195                 intsize="$ans"
4196                 dflt=$intsize
4197                 rp="What is the size of a long integer (in bytes)?"
4198                 . ./myread
4199                 longsize="$ans"
4200                 dflt=2
4201                 rp="What is the size of a short integer (in bytes)?"
4202                 . ./myread
4203                 shortsize="$ans"
4204         fi
4205         ;;
4206 esac
4207 $rm -f intsize intsize.*
4208
4209 : see what type lseek is declared as in the kernel
4210 rp="What is the type used for lseek's offset on this system?"
4211 set off_t lseektype long stdio.h sys/types.h
4212 eval $typedef_ask
4213
4214 echo " "
4215 $echo $n "Checking to see how big your file offsets are...$c" >&4
4216 $cat >try.c <<EOCP
4217 #include <sys/types.h>
4218 #include <stdio.h>
4219 int main()
4220 {
4221     printf("%d\n", (int)sizeof($lseektype));
4222     return(0); 
4223 }
4224 EOCP
4225 set try
4226 if eval $compile_ok; then
4227         lseeksize=`./try`
4228         $echo " $lseeksize bytes." >&4
4229 else
4230         dflt=$longsize
4231         echo " "
4232         echo "(I can't seem to compile the test program.  Guessing...)"
4233         rp="What is the size of your file offsets (in bytes)?"
4234         . ./myread
4235         lseeksize="$ans"
4236 fi
4237 $rm -f try.c try
4238
4239 : see what type file positions are declared as in the library
4240 rp="What is the type for file position used by fsetpos()?"
4241 set fpos_t fpostype long stdio.h sys/types.h
4242 eval $typedef_ask
4243
4244 echo " "
4245 case "$fpostype" in
4246 *_t) zzz="$fpostype"    ;;
4247 *)   zzz="fpos_t"       ;;
4248 esac
4249 $echo $n "Checking the size of $zzz...$c" >&4 
4250 cat > try.c <<EOCP
4251 #include <sys/types.h>
4252 #include <stdio.h>
4253 int main() {
4254     printf("%d\n", (int)sizeof($fpostype));
4255     exit(0);
4256 }
4257 EOCP
4258 set try
4259 if eval $compile_ok; then
4260         yyy=`./try`
4261         case "$yyy" in
4262         '')     fpossize=4
4263                 echo " "
4264                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4265                 ;;
4266         *)      fpossize=$yyy
4267                 echo " $fpossize bytes."
4268                 ;;
4269         esac
4270 else
4271         dflt="$longsize"
4272         echo " "
4273         echo "(I can't compile the test program.  Guessing...)" >&4
4274         rp="What is the size of your file positions (in bytes)?"
4275         . ./myread
4276         fpossize="$ans"
4277 fi
4278
4279
4280
4281 case "$lseeksize:$fpossize" in
4282 8:8) cat <<EOM
4283
4284 You can have files larger than 2 gigabytes.
4285 EOM
4286    val="$define" ;;
4287 *)    case "$uselargefiles" in
4288    "$undef"|false|[nN]*) dflt='n' ;;
4289    *)   dflt='y' ;;
4290    esac
4291    cat <<EOM
4292
4293 Perl can be built to understand large files (files larger than 2 gigabytes)
4294 on some systems.  To do so, Configure can be run with -Duselargefiles.
4295
4296 If this doesn't make any sense to you, just accept the default '$dflt'.
4297 EOM
4298    rp='Try to understand large files, if available?'
4299    . ./myread
4300    case "$ans" in
4301    y|Y)         val="$define" ;;
4302    *)           val="$undef"  ;;
4303    esac
4304    ;;
4305 esac
4306 set uselargefiles
4307 eval $setvar
4308 case "$uselargefiles" in
4309 "$define")
4310 : Look for a hint-file generated 'call-back-unit'.  If the
4311 : user has specified that a large files perl is to be built,
4312 : we may need to set or change some other defaults.
4313         if $test -f uselfs.cbu; then
4314                 echo "Your platform has some specific hints for large file builds, using them..."
4315                 . ./uselfs.cbu
4316                 echo " "
4317                 $echo $n "Rechecking to see how big your file offsets are...$c" >&4
4318                 $cat >try.c <<EOCP
4319 #include <sys/types.h>
4320 #include <stdio.h>
4321 int main()
4322 {
4323     printf("%d\n", (int)sizeof($lseektype));
4324     return(0); 
4325 }
4326 EOCP
4327                 set try
4328                 if eval $compile_ok; then
4329                         lseeksize=`./try`
4330                         $echo " $lseeksize bytes." >&4
4331                 else
4332                         dflt="$lseeksize"
4333                         echo " "
4334                         echo "(I can't seem to compile the test program.  Guessing...)"
4335                         rp="What is the size of your file offsets (in bytes)?"
4336                         . ./myread
4337                         lseeksize="$ans"
4338                 fi
4339                 case "$fpostype" in
4340                 *_t) zzz="$fpostype"    ;;
4341                 *)   zzz="fpos_t"       ;;
4342                 esac
4343                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4344                 $cat > try.c <<EOCP
4345 #include <sys/types.h>
4346 #include <stdio.h>
4347 int main() {
4348     printf("%d\n", (int)sizeof($fpostype));
4349     exit(0);
4350 }
4351 EOCP
4352                 set try
4353                 if eval $compile_ok; then
4354                         yyy=`./try`
4355                         dflt="$lseeksize"
4356                         case "$yyy" in
4357                         '')     echo " "
4358                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4359                                 ;;
4360                         *)      fpossize=$yyy
4361                                 echo " $fpossize bytes."
4362                                 ;;
4363                         esac
4364                 else
4365                         dflt="$fpossize"
4366                         echo " "
4367                         echo "(I can't compile the test program.  Guessing...)" >&4
4368                         rp="What is the size of your file positions (in bytes)?"
4369                         . ./myread
4370                         fpossize="$ans"
4371                 fi
4372                 $rm -f try.c try
4373         fi
4374         ;;
4375 esac
4376
4377
4378 case "$usemorebits" in
4379 "$define"|true|[yY]*)
4380         use64bits="$define"
4381         uselongdouble="$define"
4382         usemorebits="$define"
4383         ;;
4384 *)      usemorebits="$undef"
4385         ;;
4386 esac
4387
4388
4389 case "$intsize:$longsize" in
4390 8:*|*:8) cat <<EOM
4391
4392 You have natively 64-bit integers.
4393 EOM
4394    val="$define"
4395    ;;
4396 *) case "$ccflags" in
4397    *-DUSE_64_BITS*|*-DUSE_LONG_LONG*) use64bits="$define";;
4398    *) case "$uselonglong" in
4399       $define|true|[yY]*) use64bits="$define";;
4400       esac
4401       ;;
4402    esac
4403    case "$use64bits" in
4404    $define|true|[yY]*) dflt='y';;
4405    *) dflt='n';;
4406    esac
4407 cat <<EOM
4408
4409 Perl can be built to take advantage of 64-bit integer types
4410 on some systems.  To do so, Configure can be run with -Duse64bits.
4411
4412 If this doesn't make any sense to you, just accept the default '$dflt'.
4413 EOM
4414    rp='Try to use 64-bit integers, if available?'
4415    . ./myread
4416    case "$ans" in
4417    [yY]*) val="$define" ;;
4418    *)     val="$undef"  ;;
4419    esac
4420    ;;
4421 esac
4422 set use64bits
4423 eval $setvar
4424
4425 case "$archname64" in
4426 '') archname64='' ;;    # not a typo
4427 esac
4428
4429 case "$use64bits" in
4430 "$define"|true|[yY]*)
4431 : Look for a hint-file generated 'call-back-unit'.  If the
4432 : user has specified that a 64-bit perl is to be built,
4433 : we may need to set or change some other defaults.
4434         if $test -f use64bits.cbu; then
4435                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4436                 . ./use64bits.cbu
4437         else
4438                 $cat <<EOM
4439 (Your platform doesn't have any specific hints for 64-bit builds.)
4440 EOM
4441                 case "$intsize:$longsize" in
4442 8:*|*:8) cat <<EOM
4443 (This is probably okay, as your system is a natively 64-bit system.)
4444 EOM
4445                   ;;
4446                 esac
4447                 case "$gccversion" in
4448                 '')     ;;
4449                 *)      case "$ccflags" in
4450                         *-DUSE_64_BITS*) ;;
4451                         *) $cat <<EOM
4452 But since you seem to be using gcc, I will now add -DUSE_64_BITS
4453 to the compilation flags to get long longs.
4454 EOM
4455                            ccflags="$ccflags -DUSE_64_BITS"
4456                            ;;
4457                         esac
4458                         ;;
4459                 esac
4460         fi
4461         ;;
4462 esac
4463
4464 : determine the architecture name
4465 echo " "
4466 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4467         tarch=`arch`"-$osname"
4468 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4469         if uname -m > tmparch 2>&1 ; then
4470                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4471                         -e 's/$/'"-$osname/" tmparch`
4472         else
4473                 tarch="$osname"
4474         fi
4475         $rm -f tmparch
4476 else
4477         tarch="$osname"
4478 fi
4479 case "$myarchname" in
4480 ''|"$tarch") ;;
4481 *)
4482         echo "(Your architecture name used to be $myarchname.)"
4483         archname=''
4484         ;;
4485 esac
4486 myarchname="$tarch"
4487 case "$archname" in
4488 '') dflt="$tarch";;
4489 *) dflt="$archname";;
4490 esac
4491 rp='What is your architecture name'
4492 . ./myread
4493 archname="$ans"
4494 case "$usethreads" in
4495 $define)
4496         echo "Threads selected." >&4
4497         case "$archname" in
4498         *-thread*) echo "...and architecture name already has -thread." >&4
4499                 ;;
4500         *)      archname="$archname-thread"
4501                 echo "...setting architecture name to $archname." >&4
4502                 ;;
4503         esac
4504         ;;
4505 esac
4506 case "$usemultiplicity" in
4507 $define)
4508         echo "Multiplicity selected." >&4
4509         case "$archname" in
4510         *-multi*) echo "...and architecture name already has -multi." >&4
4511                 ;;
4512         *)      archname="$archname-multi"
4513                 echo "...setting architecture name to $archname." >&4
4514                 ;;
4515         esac
4516         ;;
4517 esac
4518 case "$use64bits" in
4519 $define)
4520         case "$archname64" in
4521         '')
4522                 ;;
4523         *)
4524                 case "$archname" in
4525                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4526                         ;;
4527                 *)      archname="$archname-$archname64"
4528                         echo "...setting architecture name to $archname." >&4
4529                         ;;
4530                 esac
4531                 ;;
4532         esac
4533 esac
4534
4535 : determine root of directory hierarchy where package will be installed.
4536 case "$prefix" in
4537 '')
4538         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4539         ;;
4540 *)
4541         dflt="$prefix"
4542         ;;
4543 esac
4544 $cat <<EOM
4545
4546 By default, $package will be installed in $dflt/bin, manual pages
4547 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4548 installation directories. Typically this is something like /usr/local.
4549 If you wish to have binaries under /usr/bin but other parts of the
4550 installation under /usr/local, that's ok: you will be prompted
4551 separately for each of the installation directories, the prefix being
4552 only used to set the defaults.
4553
4554 EOM
4555 fn=d~
4556 rp='Installation prefix to use?'
4557 . ./getfile
4558 oldprefix=''
4559 case "$prefix" in
4560 '') ;;
4561 *)
4562         case "$ans" in
4563         "$prefix") ;;
4564         *) oldprefix="$prefix";;
4565         esac
4566         ;;
4567 esac
4568 prefix="$ans"
4569 prefixexp="$ansexp"
4570
4571 : is AFS running?
4572 echo " "
4573 case "$afs" in
4574 $define|true)   afs=true ;;
4575 $undef|false)   afs=false ;;
4576 *)      if test -d /afs; then
4577                 afs=true
4578         else
4579                 afs=false
4580         fi
4581         ;;
4582 esac
4583 if $afs; then
4584         echo "AFS may be running... I'll be extra cautious then..." >&4
4585 else
4586         echo "AFS does not seem to be running..." >&4
4587 fi
4588
4589 : determine installation prefix for where package is to be installed.
4590 if $afs; then 
4591 $cat <<EOM
4592
4593 Since you are running AFS, I need to distinguish the directory in which
4594 files will reside from the directory in which they are installed (and from
4595 which they are presumably copied to the former directory by occult means).
4596
4597 EOM
4598         case "$installprefix" in
4599         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4600         *) dflt="$installprefix";;
4601         esac
4602 else
4603 $cat <<EOM
4604
4605 In some special cases, particularly when building $package for distribution,
4606 it is convenient to distinguish between the directory in which files should 
4607 be installed from the directory ($prefix) in which they 
4608 will eventually reside.  For most users, these two directories are the same.
4609
4610 EOM
4611         case "$installprefix" in
4612         '') dflt=$prefix ;;
4613         *) dflt=$installprefix;;
4614         esac
4615 fi
4616 fn=d~
4617 rp='What installation prefix should I use for installing files?'
4618 . ./getfile
4619 installprefix="$ans"
4620 installprefixexp="$ansexp"
4621
4622 : set the prefixit variable, to compute a suitable default value
4623 prefixit='case "$3" in
4624 ""|none)
4625         case "$oldprefix" in
4626         "") eval "$1=\"\$$2\"";;
4627         *)
4628                 case "$3" in
4629                 "") eval "$1=";;
4630                 none)
4631                         eval "tp=\"\$$2\"";
4632                         case "$tp" in
4633                         ""|" ") eval "$1=\"\$$2\"";;
4634                         *) eval "$1=";;
4635                         esac;;
4636                 esac;;
4637         esac;;
4638 *)
4639         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4640         case "$tp" in
4641         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4642         /*-$oldprefix/*|\~*-$oldprefix/*)
4643                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4644         *) eval "$1=\"\$$2\"";;
4645         esac;;
4646 esac'
4647
4648 : set the base revision
4649 baserev=5.0
4650
4651
4652 : get the patchlevel
4653 echo " "
4654 echo "Getting the current patchlevel..." >&4
4655 if $test -r $rsrc/patchlevel.h;then
4656         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4657         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4658         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4659         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4660         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4661 else
4662         patchlevel=0
4663         subversion=0
4664         api_revision=0
4665         api_version=0
4666         api_subversion=0
4667 fi
4668 $echo $n "(You have $package" $c
4669 case "$package" in
4670 "*$baserev")    ;;
4671 *)              $echo $n " $baserev" $c ;;
4672 esac
4673 $echo $n " patchlevel $patchlevel" $c
4674 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4675 echo ".)"
4676 case "$osname" in
4677 dos|vms)
4678         : XXX Should be a Configure test for double-dots in filenames.
4679         version=`echo $baserev $patchlevel $subversion | \
4680                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4681         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4682                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4683         ;;
4684 *)
4685         version=`echo $baserev $patchlevel $subversion | \
4686                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4687         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4688                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4689         ;;
4690 esac
4691 : Special case the 5.005_xx maintenance series, which used 5.005
4692 : without any subversion label as a subdirectory in $sitelib
4693 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4694         api_versionstring='5.005'
4695 fi
4696
4697 : determine installation style
4698 : For now, try to deduce it from prefix unless it is already set.
4699 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4700 case "$installstyle" in
4701 '')     case "$prefix" in
4702                 *perl*) dflt='lib';;
4703                 *) dflt='lib/perl5' ;;
4704         esac
4705         ;;
4706 *)      dflt='lib/perl5' ;;
4707 esac
4708 : Probably not worth prompting for this since we prompt for all
4709 : the directories individually, and the prompt would be too long and
4710 : confusing anyway.
4711 installstyle=$dflt
4712
4713 : determine where private library files go
4714 : Usual default is /usr/local/lib/perl5/$version.
4715 : Also allow things like /opt/perl/lib/$version, since 
4716 : /opt/perl/lib/perl5... would be redundant.
4717 : The default "style" setting is made in installstyle.U
4718 case "$installstyle" in
4719 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4720 *)       set dflt privlib lib/$version ;;
4721 esac
4722 eval $prefixit
4723 $cat <<EOM
4724
4725 There are some auxiliary files for $package that need to be put into a
4726 private library directory that is accessible by everyone.
4727
4728 EOM
4729 fn=d~+
4730 rp='Pathname where the private library files will reside?'
4731 . ./getfile
4732 privlib="$ans"
4733 privlibexp="$ansexp"
4734 : Change installation prefix, if necessary.
4735 if $test X"$prefix" != X"$installprefix"; then
4736         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4737 else
4738         installprivlib="$privlibexp"
4739 fi
4740
4741 : set the prefixup variable, to restore leading tilda escape
4742 prefixup='case "$prefixexp" in
4743 "$prefix") ;;
4744 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4745 esac'
4746
4747 : determine where public architecture dependent libraries go
4748 set archlib archlib
4749 eval $prefixit
4750 : privlib default is /usr/local/lib/$package/$version
4751 : archlib default is /usr/local/lib/$package/$version/$archname
4752 : privlib may have an optional trailing /share.
4753 tdflt=`echo $privlib | $sed 's,/share$,,'`
4754 tdflt=$tdflt/$archname
4755 case "$archlib" in
4756 '')     dflt=$tdflt
4757         ;;
4758 *)      dflt="$archlib"
4759     ;;
4760 esac
4761 $cat <<EOM
4762
4763 $spackage contains architecture-dependent library files.  If you are
4764 sharing libraries in a heterogeneous environment, you might store
4765 these files in a separate location.  Otherwise, you can just include
4766 them with the rest of the public library files.
4767
4768 EOM
4769 fn=d+~
4770 rp='Where do you want to put the public architecture-dependent libraries?'
4771 . ./getfile
4772 archlib="$ans"
4773 archlibexp="$ansexp"
4774 if $test X"$archlib" = X"$privlib"; then
4775         d_archlib="$undef"
4776 else
4777         d_archlib="$define"
4778 fi
4779 : Change installation prefix, if necessary.
4780 if $test X"$prefix" != X"$installprefix"; then
4781         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4782 else
4783         installarchlib="$archlibexp"
4784 fi
4785
4786
4787 : Binary compatibility with 5.005 is not possible for builds
4788 : with advanced features
4789 case "$usethreads$usemultiplicity" in
4790 *define*)
4791         bincompat5005="$undef"
4792         d_bincompat5005="$undef"
4793         ;;
4794 *)      $cat <<EOM
4795
4796 Perl 5.006 can be compiled for binary compatibility with 5.005.
4797 If you decide to do so, you will be able to continue using most
4798 of the extensions that were compiled for Perl 5.005.
4799
4800 EOM
4801         case "$bincompat5005$d_bincompat5005" in
4802         *"$undef"*) dflt=n ;;
4803         *) dflt=y ;;
4804         esac
4805         rp='Binary compatibility with Perl 5.005?'
4806         . ./myread
4807         case "$ans" in
4808         y*) val="$define" ;;
4809         *)  val="$undef" ;;
4810         esac
4811         set d_bincompat5005
4812         eval $setvar
4813         case "$d_bincompat5005" in
4814         "$define")
4815                 bincompat5005="$define"
4816                 ;;
4817         *)      bincompat5005="$undef"
4818                 d_bincompat5005="$undef"
4819                 ;;
4820         esac
4821         ;;
4822 esac
4823
4824
4825 : see if setuid scripts can be secure
4826 $cat <<EOM
4827
4828 Some kernels have a bug that prevents setuid #! scripts from being
4829 secure.  Some sites have disabled setuid #! scripts because of this.
4830
4831 First let's decide if your kernel supports secure setuid #! scripts.
4832 (If setuid #! scripts would be secure but have been disabled anyway,
4833 don't say that they are secure if asked.)
4834
4835 EOM
4836
4837 val="$undef"
4838 if $test -d /dev/fd; then
4839         echo "#!$ls" >reflect
4840         chmod +x,u+s reflect
4841         ./reflect >flect 2>&1
4842         if $contains "/dev/fd" flect >/dev/null; then
4843                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4844                 val="$define"
4845         else
4846                 $cat <<EOM
4847 If you are not sure if they are secure, I can check but I'll need a
4848 username and password different from the one you are using right now.
4849 If you don't have such a username or don't want me to test, simply
4850 enter 'none'.
4851
4852 EOM
4853                 rp='Other username to test security of setuid scripts with?'
4854                 dflt='none'
4855                 . ./myread
4856                 case "$ans" in
4857                 n|none)
4858                         case "$d_suidsafe" in
4859                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
4860                                 dflt=n;;
4861                         "$undef")
4862                                 echo "Well, the $hint value is *not* secure." >&4
4863                                 dflt=n;;
4864                         *)      echo "Well, the $hint value *is* secure." >&4
4865                                 dflt=y;;
4866                         esac
4867                         ;;
4868                 *)
4869                         $rm -f reflect flect
4870                         echo "#!$ls" >reflect
4871                         chmod +x,u+s reflect
4872                         echo >flect
4873                         chmod a+w flect
4874                         echo '"su" will (probably) prompt you for '"$ans's password."
4875                         su $ans -c './reflect >flect'
4876                         if $contains "/dev/fd" flect >/dev/null; then
4877                                 echo "Okay, it looks like setuid scripts are secure." >&4
4878                                 dflt=y
4879                         else
4880                                 echo "I don't think setuid scripts are secure." >&4
4881                                 dflt=n
4882                         fi
4883                         ;;
4884                 esac
4885                 rp='Does your kernel have *secure* setuid scripts?'
4886                 . ./myread
4887                 case "$ans" in
4888                 [yY]*)  val="$define";;
4889                 *)      val="$undef";;
4890                 esac
4891         fi
4892 else
4893         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
4894         echo "(That's for file descriptors, not floppy disks.)"
4895         val="$undef"
4896 fi
4897 set d_suidsafe
4898 eval $setvar
4899
4900 $rm -f reflect flect
4901
4902 : now see if they want to do setuid emulation
4903 echo " "
4904 val="$undef"
4905 case "$d_suidsafe" in
4906 "$define")
4907         val="$undef"
4908         echo "No need to emulate SUID scripts since they are secure here." >& 4
4909         ;;
4910 *)
4911         $cat <<EOM
4912 Some systems have disabled setuid scripts, especially systems where
4913 setuid scripts cannot be secure.  On systems where setuid scripts have
4914 been disabled, the setuid/setgid bits on scripts are currently
4915 useless.  It is possible for $package to detect those bits and emulate
4916 setuid/setgid in a secure fashion.  This emulation will only work if
4917 setuid scripts have been disabled in your kernel.
4918
4919 EOM
4920         case "$d_dosuid" in
4921         "$define") dflt=y ;;
4922         *) dflt=n ;;
4923         esac
4924         rp="Do you want to do setuid/setgid emulation?"
4925         . ./myread
4926         case "$ans" in
4927         [yY]*)  val="$define";;
4928         *)      val="$undef";;
4929         esac
4930         ;;
4931 esac
4932 set d_dosuid
4933 eval $setvar
4934
4935 : determine filename position in cpp output
4936 echo " "
4937 echo "Computing filename position in cpp output for #include directives..." >&4
4938 echo '#include <stdio.h>' > foo.c
4939 $cat >fieldn <<EOF
4940 $startsh
4941 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4942 $grep '^[       ]*#.*stdio\.h' | \
4943 while read cline; do
4944         pos=1
4945         set \$cline
4946         while $test \$# -gt 0; do
4947                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4948                         echo "\$pos"
4949                         exit 0
4950                 fi
4951                 shift
4952                 pos=\`expr \$pos + 1\`
4953         done
4954 done
4955 EOF
4956 chmod +x fieldn
4957 fieldn=`./fieldn`
4958 $rm -f foo.c fieldn
4959 case $fieldn in
4960 '') pos='???';;
4961 1) pos=first;;
4962 2) pos=second;;
4963 3) pos=third;;
4964 *) pos="${fieldn}th";;
4965 esac
4966 echo "Your cpp writes the filename in the $pos field of the line."
4967
4968 : locate header file
4969 $cat >findhdr <<EOF
4970 $startsh
4971 wanted=\$1
4972 name=''
4973 for usrincdir in $usrinc
4974 do
4975         if test -f \$usrincdir/\$wanted; then
4976                 echo "\$usrincdir/\$wanted"
4977                 exit 0
4978         fi
4979 done
4980 awkprg='{ print \$$fieldn }'
4981 echo "#include <\$wanted>" > foo\$\$.c
4982 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4983 $grep "^[       ]*#.*\$wanted" | \
4984 while read cline; do
4985         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4986         case "\$name" in
4987         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4988         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4989         *) exit 2;;
4990         esac;
4991 done;
4992 #
4993 # status = 0: grep returned 0 lines, case statement not executed
4994 # status = 1: headerfile found
4995 # status = 2: while loop executed, no headerfile found
4996 #
4997 status=\$?
4998 $rm -f foo\$\$.c;
4999 if test \$status -eq 1; then
5000         exit 0;
5001 fi
5002 exit 1
5003 EOF
5004 chmod +x findhdr
5005
5006 : define an alternate in-header-list? function
5007 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5008 cont=true; xxf="echo \"<\$1> found.\" >&4";
5009 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5010 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5011 esac;
5012 case $# in 4) instead=instead;; *) instead="at last";; esac;
5013 while $test "$cont"; do
5014         xxx=`./findhdr $1`
5015         var=$2; eval "was=\$$2";
5016         if $test "$xxx" && $test -r "$xxx";
5017         then eval $xxf;
5018         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5019                 cont="";
5020         else eval $xxnf;
5021         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5022         set $yyy; shift; shift; yyy=$@;
5023         case $# in 0) cont="";;
5024         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5025                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5026         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5027                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5028         esac;
5029 done;
5030 while $test "$yyy";
5031 do set $yyy; var=$2; eval "was=\$$2";
5032         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5033         set $yyy; shift; shift; yyy=$@;
5034 done'
5035
5036 : see if this is a malloc.h system
5037 set malloc.h i_malloc
5038 eval $inhdr
5039
5040 : see if stdlib is available
5041 set stdlib.h i_stdlib
5042 eval $inhdr
5043
5044 : determine which malloc to compile in
5045 echo " "
5046 case "$usemymalloc" in
5047 ''|[yY]*|true|$define)  dflt='y' ;;
5048 *)      dflt='n' ;;
5049 esac
5050 rp="Do you wish to attempt to use the malloc that comes with $package?"
5051 . ./myread
5052 usemymalloc="$ans"
5053 case "$ans" in
5054 y*|true)
5055         usemymalloc='y'
5056         mallocsrc='malloc.c'
5057         mallocobj="malloc$_o"
5058         d_mymalloc="$define"
5059         case "$libs" in
5060         *-lmalloc*)
5061                 : Remove malloc from list of libraries to use
5062                 echo "Removing unneeded -lmalloc from library list" >&4
5063                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5064                 shift
5065                 libs="$*"
5066                 echo "libs = $libs" >&4
5067                 ;;
5068         esac
5069         ;;
5070 *)
5071         usemymalloc='n'
5072         mallocsrc=''
5073         mallocobj=''
5074         d_mymalloc="$undef"
5075         ;;
5076 esac
5077
5078 : compute the return types of malloc and free
5079 echo " "
5080 $cat >malloc.c <<END
5081 #$i_malloc I_MALLOC
5082 #$i_stdlib I_STDLIB
5083 #include <stdio.h>
5084 #include <sys/types.h>
5085 #ifdef I_MALLOC
5086 #include <malloc.h>
5087 #endif
5088 #ifdef I_STDLIB
5089 #include <stdlib.h>
5090 #endif
5091 #ifdef TRY_MALLOC
5092 void *malloc();
5093 #endif
5094 #ifdef TRY_FREE
5095 void free();
5096 #endif
5097 END
5098 case "$malloctype" in
5099 '')
5100         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5101                 malloctype='void *'
5102         else
5103                 malloctype='char *'
5104         fi
5105         ;;
5106 esac
5107 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5108
5109 case "$freetype" in
5110 '')
5111         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5112                 freetype='void'
5113         else
5114                 freetype='int'
5115         fi
5116         ;;
5117 esac
5118 echo "Your system uses $freetype free(), it would seem." >&4
5119 $rm -f malloc.[co]
5120 $cat <<EOM
5121
5122 The installation process will also create a directory for
5123 vendor-supplied add-ons.  Vendors who supply perl with their system
5124 may find it convenient to place all vendor-supplied files in this
5125 directory rather than in the main distribution directory.  This will
5126 ease upgrades between binary-compatible maintenance versions of perl.
5127
5128 Of course you may also use these directories in whatever way you see
5129 fit.  For example, you might use them to access modules shared over a
5130 company-wide network.
5131
5132 The default answer should be fine for most people.
5133 This causes further questions about vendor add-ons to be skipped
5134 and no vendor-specific directories will be configured for perl.
5135
5136 EOM
5137 rp='Do you want to configure vendor-specific add-on directories?'
5138 case "$usevendorprefix" in
5139 define|true|[yY]*) dflt=y ;;
5140 *) dflt=n ;;
5141 esac
5142 . ./myread
5143 case "$ans" in
5144 [yY]*)  fn=d~+
5145         rp='Installation prefix to use for vendor-supplied add-ons?'
5146         case "$vendorprefix" in
5147         '') dflt='' ;;
5148         *)  dflt=$vendorprefix ;;
5149         esac
5150         . ./getfile
5151         oldvendorprefix=''
5152         case "$vendorprefix" in
5153         '') ;;
5154         *)      case "$ans" in
5155                 "$prefix") ;;
5156                 *) oldvendorprefix="$prefix";;
5157                 esac
5158                 ;;
5159         esac
5160         usevendorprefix="$define"
5161         vendorprefix="$ans"
5162         vendorprefixexp="$ansexp"
5163         ;;
5164 *)      usevendorprefix="$undef"
5165         vendorprefix=''
5166         vendorprefixexp=''
5167         ;;
5168 esac
5169
5170 case "$vendorprefix" in
5171 '')     d_vendorlib="$undef"
5172         vendorlib=''
5173         vendorlibexp=''
5174         ;;
5175 *)      d_vendorlib="$define"
5176         : determine where vendor-supplied modules go.
5177         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5178         prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5179         case "$installstyle" in
5180         *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5181         *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5182         esac
5183         fn=d~+
5184         rp='Pathname for the vendor-supplied library files?'
5185         . ./getfile
5186         vendorlib="$ans"
5187         vendorlibexp="$ansexp"
5188         : Change installation prefix, if necessary.
5189         if $test X"$prefix" != X"$installprefix"; then
5190                 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5191         else
5192                 installvendorlib="$vendorlibexp"
5193         fi
5194         ;;
5195 esac
5196
5197 : Cruising for prototypes
5198 echo " "
5199 echo "Checking out function prototypes..." >&4
5200 $cat >prototype.c <<'EOCP'
5201 int main(int argc, char *argv[]) {
5202         exit(0);}
5203 EOCP
5204 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5205         echo "Your C compiler appears to support function prototypes."
5206         val="$define"
5207 else
5208         echo "Your C compiler doesn't seem to understand function prototypes."
5209         val="$undef"
5210 fi
5211 set prototype
5212 eval $setvar
5213 $rm -f prototype*
5214
5215 case "$prototype" in
5216 "$define") ;;
5217 *)      ansi2knr='ansi2knr'
5218         echo " "
5219         cat <<EOM >&4
5220
5221 $me:  FATAL ERROR:
5222 This version of $package can only be compiled by a compiler that 
5223 understands function prototypes.  Unfortunately, your C compiler 
5224         $cc $ccflags
5225 doesn't seem to understand them.  Sorry about that.
5226
5227 If GNU cc is available for your system, perhaps you could try that instead.  
5228
5229 Eventually, we hope to support building Perl with pre-ANSI compilers.
5230 If you would like to help in that effort, please contact <perlbug@perl.org>.
5231
5232 Aborting Configure now.
5233 EOM
5234         exit 2
5235         ;;
5236 esac
5237
5238 : determine where public executables go
5239 echo " "
5240 set dflt bin bin
5241 eval $prefixit
5242 fn=d~
5243 rp='Pathname where the public executables will reside?'
5244 . ./getfile
5245 if $test "X$ansexp" != "X$binexp"; then
5246         installbin=''
5247 fi
5248 bin="$ans"
5249 binexp="$ansexp"
5250 : Change installation prefix, if necessary.
5251 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5252 if $test X"$prefix" != X"$installprefix"; then
5253         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5254 else
5255         installbin="$binexp"
5256 fi
5257
5258 $cat <<EOM
5259
5260 After $package is installed, you may wish to install various
5261 add-on modules and utilities.  Typically, these add-ons will
5262 be installed under $prefix with the rest
5263 of this package.  However, you may wish to install such add-ons
5264 elsewhere under a different prefix.
5265
5266 If you do not wish to put everything under a single prefix, that's
5267 ok.  You will be prompted for the individual locations; this siteprefix
5268 is only used to suggest the defaults.
5269
5270 The default should be fine for most people.
5271
5272 EOM
5273 fn=d~+
5274 rp='Installation prefix to use for add-on modules and utilities?'
5275 : XXX Here might be another good place for an installstyle setting.
5276 case "$siteprefix" in
5277 '') dflt=$prefix ;;
5278 *)  dflt=$siteprefix ;;
5279 esac
5280 . ./getfile
5281 oldsiteprefix=''
5282 case "$siteprefix" in
5283 '') ;;
5284 *)
5285         case "$ans" in
5286         "$prefix") ;;
5287         *) oldsiteprefix="$prefix";;
5288         esac
5289         ;;
5290 esac
5291 siteprefix="$ans"
5292 siteprefixexp="$ansexp"
5293
5294 : determine where site specific libraries go.
5295 : Usual default is /usr/local/lib/perl5/site_perl/$version
5296 : The default "style" setting is made in installstyle.U
5297 : XXX No longer works with Prefixit stuff.
5298 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5299 case "$installstyle" in
5300 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5301 *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5302 esac
5303 $cat <<EOM
5304
5305 The installation process will create a directory for
5306 site-specific extensions and modules.  Most users find it convenient
5307 to place all site-specific files in this directory rather than in the
5308 main distribution directory.
5309
5310 EOM
5311 fn=d~+
5312 rp='Pathname for the site-specific library files?'
5313 . ./getfile
5314 sitelib="$ans"
5315 sitelibexp="$ansexp"
5316 : Change installation prefix, if necessary.
5317 if $test X"$prefix" != X"$installprefix"; then
5318         installsitelib=`echo $sitelibexp | sed "s#^$prefix#$installprefix#"`
5319 else
5320         installsitelib="$sitelibexp"
5321 fi
5322
5323 : Determine list of previous versions to include in @INC
5324 $cat > getverlist <<EOPL
5325 #!$perl -w
5326 use File::Basename;
5327 \$api_versionstring = "$api_versionstring";
5328 \$version = "$version";
5329 \$sitelib = "$sitelib";
5330 \$archname = "$archname";
5331 EOPL
5332         $cat >> getverlist <<'EOPL'
5333 # Can't have leading @ because metaconfig interprets it as a command!
5334 ;@inc_version_list=();
5335 $stem=dirname($sitelib);
5336 # Redo to do opendir/readdir? 
5337 if (-d $stem) {
5338     chdir($stem);
5339     ;@candidates = glob("5.*");
5340 }
5341 else {
5342     ;@candidates = ();
5343 }
5344
5345 # XXX ToDo:  These comparisons must be reworked when two-digit
5346 # subversions come along, so that 5.7.10 compares as greater than
5347 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
5348 # widespread that we can use the built-in version vectors rather
5349 # than reinventing them here.  For 5.6.0, however, we must
5350 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
5351 foreach $d (@candidates) {
5352     if ($d lt $version) {
5353         if ($d ge $api_versionstring) {
5354             unshift(@inc_version_list, "$d/$archname", $d);
5355         }
5356         elsif ($d ge "5.005") {
5357             unshift(@inc_version_list, $d);
5358         }
5359     }
5360     else {
5361         # Skip newer version.  I.e. don't look in
5362         # 5.7.0 if we're installing 5.6.1.
5363     }
5364 }
5365
5366 if (@inc_version_list) {
5367     print join(' ', @inc_version_list);
5368 }
5369 else {
5370     # Blank space to preserve value for next Configure run.
5371     print " ";
5372 }
5373 EOPL
5374 chmod +x getverlist
5375 case "$inc_version_list" in
5376 '')     if test -x $perl; then
5377                 dflt=`$perl getverlist`
5378         else
5379                 dflt='none'
5380         fi
5381         ;;
5382 $undef) dflt='none' ;;
5383 *)  dflt="$inc_version_list" ;;
5384 esac
5385 $cat <<'EOM'
5386
5387 In order to ease the process of upgrading, this version of perl 
5388 can be configured to use modules built and installed with earlier 
5389 versions of perl that were installed under $prefix.  Specify here
5390 the list of earlier versions that this version of perl should check.
5391 If Configure detected no earlier versions of perl installed under
5392 $prefix, then the list will be empty.  Answer 'none' to tell perl
5393 to not search earlier versions.
5394
5395 The default should almost always be sensible, so if you're not sure,
5396 just accept the default.
5397 EOM
5398
5399 rp='List of earlier versions to include in @INC?'
5400 . ./myread
5401 case "$ans" in
5402 [Nn]one) inc_version_list=' ' ;;
5403 *) inc_version_list="$ans" ;;
5404 esac
5405 case "$inc_version_list" in
5406 ''|' ') 
5407         inc_version_list_init='0';;
5408 *)      inc_version_list_init=`echo $inc_version_list |
5409                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5410         ;;
5411 esac
5412 $rm -f getverlist
5413
5414 : determine whether to install perl also as /usr/bin/perl
5415
5416 echo " "
5417 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5418         $cat <<EOM
5419 Many scripts expect to perl to be installed as /usr/bin/perl.
5420 I can install the perl you are about to compile also as /usr/bin/perl
5421 (in addition to $installbin/perl).
5422 EOM
5423         case "$installusrbinperl" in
5424         "$undef"|[nN]*) dflt='n';;
5425         *)              dflt='y';;
5426         esac
5427         rp="Do you want to install perl as /usr/bin/perl?"
5428         . ./myread
5429         case "$ans" in
5430         [yY]*)  val="$define";;
5431         *)      val="$undef" ;;
5432         esac
5433 else
5434         val="$undef"
5435 fi
5436 set installusrbinperl
5437 eval $setvar
5438
5439 echo " "
5440 echo "Checking for GNU C Library..." >&4
5441 cat >gnulibc.c <<EOM
5442 #include <stdio.h>
5443 int main()
5444 {
5445 #ifdef __GLIBC__
5446     exit(0);
5447 #else
5448     exit(1);
5449 #endif
5450 }
5451 EOM
5452 set gnulibc
5453 if eval $compile_ok && ./gnulibc; then
5454         val="$define"
5455         echo "You are using the GNU C Library"
5456 else
5457         val="$undef"
5458         echo "You are not using the GNU C Library"
5459 fi
5460 $rm -f gnulibc*
5461 set d_gnulibc
5462 eval $setvar
5463
5464 : see if nm is to be used to determine whether a symbol is defined or not
5465 case "$usenm" in
5466 '')
5467         dflt=''
5468         case "$d_gnulibc" in
5469         "$define")
5470                 echo " "
5471                 echo "nm probably won't work on the GNU C Library." >&4
5472                 dflt=n
5473                 ;;
5474         esac
5475         case "$dflt" in
5476         '') 
5477                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5478                         echo " "
5479                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5480                         echo "'nm' won't be sufficient on this sytem." >&4
5481                         dflt=n
5482                 fi
5483                 ;;
5484         esac
5485         case "$dflt" in
5486         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5487                 if $test $dflt -gt 20; then
5488                         dflt=y
5489                 else
5490                         dflt=n
5491                 fi
5492                 ;;
5493         esac
5494         ;;
5495 *)
5496         case "$usenm" in
5497         true|$define) dflt=y;;
5498         *) dflt=n;;
5499         esac
5500         ;;
5501 esac
5502 $cat <<EOM
5503
5504 I can use $nm to extract the symbols from your C libraries. This
5505 is a time consuming task which may generate huge output on the disk (up
5506 to 3 megabytes) but that should make the symbols extraction faster. The
5507 alternative is to skip the 'nm' extraction part and to compile a small
5508 test program instead to determine whether each symbol is present. If
5509 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5510 this may be the best solution.
5511
5512 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5513
5514 EOM
5515 rp="Shall I use $nm to extract C symbols from the libraries?"
5516 . ./myread
5517 case "$ans" in
5518 [Nn]*) usenm=false;;
5519 *) usenm=true;;
5520 esac
5521
5522 runnm=$usenm
5523 case "$reuseval" in
5524 true) runnm=false;;
5525 esac
5526
5527 : nm options which may be necessary
5528 case "$nm_opt" in
5529 '') if $test -f /mach_boot; then
5530                 nm_opt=''       # Mach
5531         elif $test -d /usr/ccs/lib; then
5532                 nm_opt='-p'     # Solaris (and SunOS?)
5533         elif $test -f /dgux; then
5534                 nm_opt='-p'     # DG-UX
5535         elif $test -f /lib64/rld; then
5536                 nm_opt='-p'     # 64-bit Irix
5537         else
5538                 nm_opt=''
5539         fi;;
5540 esac
5541
5542 : nm options which may be necessary for shared libraries but illegal
5543 : for archive libraries.  Thank you, Linux.
5544 case "$nm_so_opt" in
5545 '')     case "$myuname" in
5546         *linux*)
5547                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5548                         nm_so_opt='--dynamic'
5549                 fi
5550                 ;;
5551         esac
5552         ;;
5553 esac
5554
5555 case "$runnm" in
5556 true)
5557 : get list of predefined functions in a handy place
5558 echo " "
5559 case "$libc" in
5560 '') libc=unknown
5561         case "$libs" in
5562         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5563         esac
5564         ;;
5565 esac
5566 libnames='';
5567 case "$libs" in
5568 '') ;;
5569 *)  for thislib in $libs; do
5570         case "$thislib" in
5571         -lc|-lc_s)
5572                 : Handle C library specially below.
5573                 ;;
5574         -l*)
5575                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5576                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5577                         :
5578                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5579                         :
5580                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5581                         :
5582                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5583                         :
5584                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5585                         :
5586                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5587                         :
5588                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5589                         :
5590                 else
5591                         try=''
5592                 fi
5593                 libnames="$libnames $try"
5594                 ;;
5595         *) libnames="$libnames $thislib" ;;
5596         esac
5597         done
5598         ;;
5599 esac
5600 xxx=normal
5601 case "$libc" in
5602 unknown)
5603         set /lib/libc.$so
5604         for xxx in $libpth; do
5605                 $test -r $1 || set $xxx/libc.$so
5606                 : The messy sed command sorts on library version numbers.
5607                 $test -r $1 || \
5608                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5609                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5610                                 h
5611                                 s/[0-9][0-9]*/0000&/g
5612                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5613                                 G
5614                                 s/\n/ /' | \
5615                          sort | $sed -e 's/^.* //'`
5616                 eval set \$$#
5617         done
5618         $test -r $1 || set /usr/ccs/lib/libc.$so
5619         $test -r $1 || set /lib/libsys_s$_a
5620         ;;
5621 *)
5622         set blurfl
5623         ;;
5624 esac
5625 if $test -r "$1"; then
5626         echo "Your (shared) C library seems to be in $1."
5627         libc="$1"
5628 elif $test -r /lib/libc && $test -r /lib/clib; then
5629         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5630         xxx=apollo
5631         libc='/lib/clib /lib/libc'
5632         if $test -r /lib/syslib; then
5633                 echo "(Your math library is in /lib/syslib.)"
5634                 libc="$libc /lib/syslib"
5635         fi
5636 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5637         echo "Your C library seems to be in $libc, as you said before."
5638 elif $test -r $incpath/usr/lib/libc$_a; then
5639         libc=$incpath/usr/lib/libc$_a;
5640         echo "Your C library seems to be in $libc.  That's fine."
5641 elif $test -r /lib/libc$_a; then
5642         libc=/lib/libc$_a;
5643         echo "Your C library seems to be in $libc.  You're normal."
5644 else
5645         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5646                 :
5647         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5648                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5649         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5650                 :
5651         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5652                 :
5653         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5654                 :
5655         else
5656                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5657         fi
5658         if $test -r "$tans"; then
5659                 echo "Your C library seems to be in $tans, of all places."
5660                 libc=$tans
5661         else
5662                 libc='blurfl'
5663         fi
5664 fi
5665 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5666         dflt="$libc"
5667         cat <<EOM
5668
5669 If the guess above is wrong (which it might be if you're using a strange
5670 compiler, or your machine supports multiple models), you can override it here.
5671
5672 EOM
5673 else
5674         dflt=''
5675         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5676         cat >&4 <<EOM
5677 I can't seem to find your C library.  I've looked in the following places:
5678
5679 EOM
5680         $sed 's/^/      /' libpath
5681         cat <<EOM
5682
5683 None of these seems to contain your C library. I need to get its name...
5684
5685 EOM
5686 fi
5687 fn=f
5688 rp='Where is your C library?'
5689 . ./getfile
5690 libc="$ans"
5691
5692 echo " "
5693 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5694 set X `cat libnames`
5695 shift
5696 xxx=files
5697 case $# in 1) xxx=file; esac
5698 echo "Extracting names from the following $xxx for later perusal:" >&4
5699 echo " "
5700 $sed 's/^/      /' libnames >&4
5701 echo " "
5702 $echo $n "This may take a while...$c" >&4
5703
5704 for file in $*; do
5705         case $file in
5706         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5707         *) $nm $nm_opt $file 2>/dev/null;;
5708         esac
5709 done >libc.tmp
5710
5711 $echo $n ".$c"
5712 $grep fprintf libc.tmp > libc.ptf
5713 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5714 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5715 xxx='[ADTSIW]'
5716 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//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/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5721         eval $xscan;\
5722         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5723                 eval $xrun
5724 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5725         eval $xscan;\
5726         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5727                 eval $xrun
5728 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5729         eval $xscan;\
5730         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5731                 eval $xrun
5732 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5733         eval $xscan;\
5734         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5735                 eval $xrun
5736 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5737         eval $xscan;\
5738         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5739                 eval $xrun
5740 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5741                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5742         eval $xscan;\
5743         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5744                 eval $xrun
5745 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5746         eval $xscan;\
5747         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5748                 eval $xrun
5749 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5750         eval $xscan;\
5751         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5752                 eval $xrun
5753 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5754         eval $xscan;\
5755         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5756                 eval $xrun
5757 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5758         eval $xscan;\
5759         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5760                 eval $xrun
5761 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5762         eval $xscan;\
5763         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5764                 eval $xrun
5765 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5766         eval $xscan;\
5767         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5768                 eval $xrun
5769 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5770         eval $xscan;\
5771         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5772                 eval $xrun
5773 else
5774         $nm -p $* 2>/dev/null >libc.tmp
5775         $grep fprintf libc.tmp > libc.ptf
5776         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5777                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5778         then
5779                 nm_opt='-p'
5780                 eval $xrun
5781         else
5782                 echo " "
5783                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5784                 com=''
5785                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5786                         for thisname in $libnames $libc; do
5787                                 $ar t $thisname >>libc.tmp
5788                         done
5789                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5790                         echo "Ok." >&4
5791                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5792                         # Repeat libc to extract forwarders to DLL entries too
5793                         for thisname in $libnames $libc; do
5794                                 $ar tv $thisname >>libc.tmp
5795                                 # Revision 50 of EMX has bug in $ar.
5796                                 # it will not extract forwarders to DLL entries
5797                                 # Use emximp which will extract exactly them.
5798                                 emximp -o tmp.imp $thisname \
5799                                     2>/dev/null && \
5800                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5801                                     < tmp.imp >>libc.tmp
5802                                 $rm tmp.imp
5803                         done
5804                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5805                         echo "Ok." >&4
5806                 else
5807                         echo "$ar didn't seem to work right." >&4
5808                         echo "Maybe this is a Cray...trying bld instead..." >&4
5809                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5810                         then
5811                                 for thisname in $libnames; do
5812                                         bld t $libnames | \
5813                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5814                                         $ar t $thisname >>libc.tmp
5815                                 done
5816                                 echo "Ok." >&4
5817                         else
5818                                 echo "That didn't work either.  Giving up." >&4
5819                                 exit 1
5820                         fi
5821                 fi
5822         fi
5823 fi
5824 nm_extract="$com"
5825 if $test -f /lib/syscalls.exp; then
5826         echo " "
5827         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5828         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5829 fi
5830 ;;
5831 esac
5832 $rm -f libnames libpath
5833
5834 : see if dld is available
5835 set dld.h i_dld
5836 eval $inhdr
5837
5838 : is a C symbol defined?
5839 csym='tlook=$1;
5840 case "$3" in
5841 -v) tf=libc.tmp; tc=""; tdc="";;
5842 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5843 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5844 esac;
5845 tx=yes;
5846 case "$reuseval-$4" in
5847 true-) ;;
5848 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5849 esac;
5850 case "$tx" in
5851 yes)
5852         case "$runnm" in
5853         true)
5854                 if $contains $tlook $tf >/dev/null 2>&1;
5855                 then tval=true;
5856                 else tval=false;
5857                 fi;;
5858         *)
5859                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5860                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5861                 then tval=true;
5862                 else tval=false;
5863                 fi;
5864                 $rm -f t t.c;;
5865         esac;;
5866 *)
5867         case "$tval" in
5868         $define) tval=true;;
5869         *) tval=false;;
5870         esac;;
5871 esac;
5872 eval "$2=$tval"'
5873
5874 : define an is-in-libc? function
5875 inlibc='echo " "; td=$define; tu=$undef;
5876 sym=$1; var=$2; eval "was=\$$2";
5877 tx=yes;
5878 case "$reuseval$was" in
5879 true) ;;
5880 true*) tx=no;;
5881 esac;
5882 case "$tx" in
5883 yes)
5884         set $sym tres -f;
5885         eval $csym;
5886         case "$tres" in
5887         true)
5888                 echo "$sym() found." >&4;
5889                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5890         *)
5891                 echo "$sym() NOT found." >&4;
5892                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5893         esac;;
5894 *)
5895         case "$was" in
5896         $define) echo "$sym() found." >&4;;
5897         *) echo "$sym() NOT found." >&4;;
5898         esac;;
5899 esac'
5900
5901 : see if dlopen exists
5902 xxx_runnm="$runnm"
5903 runnm=false
5904 set dlopen d_dlopen
5905 eval $inlibc
5906 runnm="$xxx_runnm"
5907
5908 : determine which dynamic loading, if any, to compile in
5909 echo " "
5910 dldir="ext/DynaLoader"
5911 case "$usedl" in
5912 $define|y|true)
5913         dflt='y'
5914         usedl="$define"
5915         ;;
5916 $undef|n|false)
5917         dflt='n'
5918         usedl="$undef"
5919         ;;
5920 *) 
5921         dflt='n'
5922         case "$d_dlopen" in
5923             $define) dflt='y' ;;
5924         esac
5925         case "$i_dld" in
5926             $define) dflt='y' ;;
5927         esac
5928         : Does a dl_xxx.xs file exist for this operating system
5929         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5930         ;;
5931 esac
5932 rp="Do you wish to use dynamic loading?"
5933 . ./myread
5934 usedl="$ans"
5935 case "$ans" in
5936 y*) usedl="$define"
5937         case "$dlsrc" in
5938         '')
5939                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5940                         dflt="$dldir/dl_${osname}.xs"
5941                 elif $test "$d_dlopen" = "$define" ; then
5942                         dflt="$dldir/dl_dlopen.xs"
5943                 elif $test "$i_dld" = "$define" ; then
5944                         dflt="$dldir/dl_dld.xs"
5945                 else
5946                         dflt=''
5947                 fi
5948                 ;;
5949         *)      dflt="$dldir/$dlsrc"
5950                 ;;
5951         esac
5952     echo "The following dynamic loading files are available:"
5953         : Can not go over to $dldir because getfile has path hard-coded in.
5954         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5955         rp="Source file to use for dynamic loading"
5956         fn="fne"
5957         gfpth="$src"
5958         . ./getfile
5959         usedl="$define"
5960         : emulate basename
5961         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5962
5963         $cat << EOM
5964
5965 Some systems may require passing special flags to $cc -c to
5966 compile modules that will be used to create a shared library.
5967 To use no flags, say "none".
5968
5969 EOM
5970     case "$cccdlflags" in
5971     '') case "$gccversion" in
5972                 '') case "$osname" in
5973                         hpux)   dflt='+z' ;;
5974                         next)   dflt='none' ;;
5975                         irix*)  dflt='-KPIC' ;;
5976                         svr4*|esix*|solaris) dflt='-KPIC' ;;
5977                         sunos)  dflt='-pic' ;;
5978                         *)      dflt='none' ;;
5979                     esac
5980                         ;;
5981                 *)  case "$osname" in
5982                         svr4*|esix*|solaris) dflt='-fPIC' ;;
5983                         *)      dflt='-fpic' ;;
5984                     esac ;;
5985             esac ;;
5986         ' ') dflt='none' ;;
5987     *)  dflt="$cccdlflags" ;;
5988     esac
5989     rp="Any special flags to pass to $cc -c to compile shared library modules?"
5990     . ./myread
5991     case "$ans" in
5992     none) cccdlflags=' ' ;;
5993     *) cccdlflags="$ans" ;;
5994     esac
5995
5996     cat << EOM
5997
5998 Some systems use ld to create libraries that can be dynamically loaded,
5999 while other systems (such as those using ELF) use $cc.
6000
6001 EOM
6002         case "$ld" in
6003         '')     $cat >try.c <<'EOM'
6004 /* Test for whether ELF binaries are produced */
6005 #include <fcntl.h>
6006 #include <stdlib.h>
6007 int main() {
6008         char b[4];
6009         int i = open("a.out",O_RDONLY);
6010         if(i == -1) 
6011                 exit(1); /* fail */
6012         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6013                 exit(0); /* succeed (yes, it's ELF) */
6014         else
6015                 exit(1); /* fail */
6016 }
6017 EOM
6018                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6019                         cat <<EOM
6020 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6021 EOM
6022                         dflt="$cc"
6023                 else
6024                         echo "I'll use ld to build dynamic libraries."
6025                         dflt='ld'
6026                 fi
6027                 rm -f try.c a.out
6028                 ;;
6029         *)      dflt="$ld"
6030                 ;;
6031         esac
6032
6033     rp="What command should be used to create dynamic libraries?"
6034     . ./myread
6035         ld="$ans"
6036
6037     cat << EOM
6038
6039 Some systems may require passing special flags to $ld to create a
6040 library that can be dynamically loaded.  If your ld flags include
6041 -L/other/path options to locate libraries outside your loader's normal
6042 search path, you may need to specify those -L options here as well.  To
6043 use no flags, say "none".
6044
6045 EOM
6046     case "$lddlflags" in
6047     '') case "$osname" in
6048                         beos) dflt='-nostart' ;;
6049                         hpux)  dflt='-b +vnocompatwarnings' ;;
6050                         linux|irix*)    dflt='-shared' ;;
6051                         next)  dflt='none' ;;
6052                         solaris) dflt='-G' ;;
6053                         sunos) dflt='-assert nodefinitions' ;;
6054                         svr4*|esix*) dflt="-G $ldflags" ;;
6055                 *)     dflt='none' ;;
6056                         esac
6057                         ;;
6058     *) dflt="$lddlflags" ;;
6059     esac
6060
6061         : Try to guess additional flags to pick up local libraries.
6062         : Be careful not to append to a plain 'none'
6063         case "$dflt" in
6064         none) dflt='' ;;
6065         esac
6066         for thisflag in $ldflags; do
6067                 case "$thisflag" in
6068                 -L*)
6069                         case " $dflt " in
6070                         *" $thisflag "*) ;;
6071                         *) dflt="$dflt $thisflag" ;;
6072                         esac
6073                         ;;
6074                 esac
6075         done
6076
6077         case "$dflt" in
6078         ''|' ') dflt='none' ;;
6079         esac
6080
6081     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6082     . ./myread
6083     case "$ans" in
6084     none) lddlflags=' ' ;;
6085     *) lddlflags="$ans" ;;
6086     esac
6087
6088         cat <<EOM
6089
6090 Some systems may require passing special flags to $cc to indicate that
6091 the resulting executable will use dynamic linking.  To use no flags,
6092 say "none".
6093
6094 EOM
6095     case "$ccdlflags" in
6096     '') case "$osname" in
6097                 hpux)   dflt='-Wl,-E' ;;
6098                 linux)  dflt='-rdynamic' ;;
6099                 next)   dflt='none' ;;
6100                 sunos)  dflt='none' ;;
6101                 *)      dflt='none' ;;
6102             esac ;;
6103     ' ')  dflt='none' ;;
6104     *)  dflt="$ccdlflags" ;;
6105     esac
6106     rp="Any special flags to pass to $cc to use dynamic linking?"
6107     . ./myread
6108     case "$ans" in
6109     none) ccdlflags=' ' ;;
6110     *) ccdlflags="$ans" ;;
6111     esac
6112     ;;
6113 *)  usedl="$undef"
6114         ld='ld'
6115     dlsrc='dl_none.xs'
6116     lddlflags=''
6117     ccdlflags=''
6118     ;;
6119 esac
6120
6121 also=''
6122 case "$usedl" in
6123 $undef)
6124         # No dynamic loading being used, so don't bother even to prompt.
6125         useshrplib='false'
6126         ;;
6127 *)      case "$useshrplib" in
6128         '')     case "$osname" in
6129                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6130                         dflt=y
6131                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6132                         ;;
6133                 next*)
6134                         case "$osvers" in
6135                         4*)     dflt=y
6136                                 also='Building a shared libperl is needed for MAB support.'
6137                                 ;;
6138                         *)      dflt=n
6139                                 ;;
6140                         esac
6141                         ;;
6142                 *)      dflt=n
6143                         ;;
6144                 esac
6145                 ;;
6146         $define|true|[Yy]*)
6147                 dflt=y
6148                 ;;
6149         *)      dflt=n
6150                 ;;
6151         esac
6152         $cat << EOM
6153
6154 The perl executable is normally obtained by linking perlmain.c with
6155 libperl${_a}, any static extensions (usually just DynaLoader), and
6156 any other libraries needed on this system (such as -lm, etc.).  Since
6157 your system supports dynamic loading, it is probably possible to build
6158 a shared libperl.$so.  If you will have more than one executable linked
6159 to libperl.$so, this will significantly reduce the size of each
6160 executable, but it may have a noticeable affect on performance.  The
6161 default is probably sensible for your system.
6162 $also
6163
6164 EOM
6165         rp="Build a shared libperl.$so (y/n)"
6166         . ./myread
6167         case "$ans" in
6168         true|$define|[Yy]*)
6169                 useshrplib='true'  ;;
6170         *)      useshrplib='false' ;;
6171         esac
6172         ;;
6173 esac
6174
6175 case "$useshrplib" in
6176 true)
6177         case "$libperl" in
6178         '')
6179                 # Figure out a good name for libperl.so.  Since it gets stored in
6180                 # a version-specific architecture-dependent library, the version
6181                 # number isn't really that important, except for making cc/ld happy.
6182                 #
6183                 # A name such as libperl.so.3.1
6184                 majmin="libperl.$so.$patchlevel.$subversion"
6185                 # A name such as libperl.so.301
6186                 majonly=`echo $patchlevel $subversion |
6187                         $awk '{printf "%d%02d", $1, $2}'`
6188                 majonly=libperl.$so.$majonly
6189                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6190                 # rely on figuring it out from the naming of libc.
6191                 case "${osname}${osvers}" in
6192                 next4*)
6193                         dflt=libperl.5.$so
6194                         # XXX How handle the --version stuff for MAB?
6195                         ;;
6196                 linux*)  # ld won't link with a bare -lperl otherwise.
6197                         dflt=libperl.$so
6198                         ;;
6199                 cygwin*) # include version
6200                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6201                         ;;
6202                 *)      # Try to guess based on whether libc has major.minor.
6203                         case "$libc" in
6204                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6205                         *libc.$so.[0-9]*) dflt=$majonly ;;
6206                         *)      dflt=libperl.$so ;;
6207                         esac
6208                         ;;
6209                 esac
6210                 ;;
6211         *)      dflt=$libperl
6212                 ;;
6213         esac
6214         cat << EOM
6215
6216 I need to select a good name for the shared libperl.  If your system uses
6217 library names with major and minor numbers, then you might want something
6218 like $majmin.  Alternatively, if your system uses a single version
6219 number for shared libraries, then you might want to use $majonly.
6220 Or, your system might be quite happy with a simple libperl.$so.
6221
6222 Since the shared libperl will get installed into a version-specific
6223 architecture-dependent directory, the version number of the shared perl
6224 library probably isn't important, so the default should be o.k.
6225
6226 EOM
6227         rp='What name do you want to give to the shared libperl?'
6228         . ./myread
6229         libperl=$ans
6230         echo "Ok, I'll use $libperl"
6231         ;;
6232 *)
6233         libperl="libperl${_a}"
6234         ;;
6235 esac
6236
6237 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6238 case "$shrpdir" in
6239 '') ;;
6240 *)      $cat >&4 <<EOM
6241 WARNING:  Use of the shrpdir variable for the installation location of
6242 the shared $libperl is not supported.  It was never documented and
6243 will not work in this version.  Let me (perlbug@perl.com)
6244 know of any problems this may cause.
6245
6246 EOM
6247         case "$shrpdir" in
6248         "$archlibexp/CORE")
6249                 $cat >&4 <<EOM
6250 But your current setting of $shrpdir is
6251 the default anyway, so it's harmless.
6252 EOM
6253                 ;;
6254         *)
6255                 $cat >&4 <<EOM
6256 Further, your current attempted setting of $shrpdir
6257 conflicts with the value of $archlibexp/CORE
6258 that installperl will use.
6259 EOM
6260                 ;;
6261         esac
6262         ;;
6263 esac
6264
6265 # How will the perl executable find the installed shared $libperl?
6266 # Add $xxx to ccdlflags.
6267 # If we can't figure out a command-line option, use $shrpenv to
6268 # set env LD_RUN_PATH.  The main perl makefile uses this.
6269 shrpdir=$archlibexp/CORE
6270 xxx=''
6271 tmp_shrpenv=''
6272 if "$useshrplib"; then
6273     case "$osname" in 
6274         aix)
6275                 # We'll set it in Makefile.SH...
6276                 ;;
6277         solaris|netbsd)
6278                 xxx="-R $shrpdir"
6279                 ;;
6280         freebsd)
6281                 xxx="-Wl,-R$shrpdir"
6282                 ;;
6283         linux|irix*|dec_osf)
6284                 xxx="-Wl,-rpath,$shrpdir"
6285                 ;;
6286         next)
6287                 # next doesn't like the default...
6288                 ;;
6289         beos)
6290                 # beos doesn't like the default, either.
6291                 ;;
6292         hpux*)
6293                 # hpux doesn't like the default, either.
6294                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6295                 ;;
6296         *)
6297                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6298                 ;;
6299         esac
6300         case "$xxx" in
6301         '') ;;
6302         *)      
6303                 # Only add $xxx if it isn't already in ccdlflags.
6304                 case " $ccdlflags " in
6305                 *" $xxx "*)     ;;
6306                 *)      ccdlflags="$ccdlflags $xxx"
6307                         cat <<EOM >&4
6308
6309 Adding $xxx to the flags
6310 passed to $ld so that the perl executable will find the 
6311 installed shared $libperl.
6312
6313 EOM
6314                         ;;
6315                 esac
6316                 ;;
6317         esac
6318 fi
6319 # Fix ccdlflags in AIX for building external extensions.
6320 # (For building Perl itself bare -bE:perl.exp is needed,
6321 #  Makefile.SH takes care of this.)
6322 case "$osname" in
6323 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6324 esac
6325 # Respect a hint or command-line value.
6326 case "$shrpenv" in
6327 '') shrpenv="$tmp_shrpenv" ;;
6328 esac
6329 case "$ldlibpthname" in
6330 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6331 none)   ldlibpthname='' ;;
6332 esac
6333
6334 : determine where manual pages go
6335 set man1dir man1dir none
6336 eval $prefixit
6337 $cat <<EOM
6338
6339 $spackage has manual pages available in source form.
6340 EOM
6341 case "$nroff" in
6342 nroff)
6343         echo "However, you don't have nroff, so they're probably useless to you."
6344         case "$man1dir" in
6345         '') man1dir="none";;
6346         esac;;
6347 esac
6348 echo "If you don't want the manual sources installed, answer 'none'."
6349 case "$man1dir" in
6350 ' ') dflt=none
6351         ;;
6352 '')
6353         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6354         lookpath="$lookpath $prefixexp/man/p_man/man1"
6355         lookpath="$lookpath $prefixexp/man/u_man/man1"
6356         lookpath="$lookpath $prefixexp/man/man.1"
6357         case "$sysman" in
6358         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6359         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6360         esac
6361         set dflt
6362         eval $prefixup
6363         ;;
6364 *)  dflt="$man1dir"
6365         ;;
6366 esac
6367 echo " "
6368 fn=dn+~
6369 rp="Where do the main $spackage manual pages (source) go?"
6370 . ./getfile
6371 if $test "X$man1direxp" != "X$ansexp"; then
6372         installman1dir=''
6373 fi
6374 man1dir="$ans"
6375 man1direxp="$ansexp"
6376 case "$man1dir" in
6377 '')     man1dir=' '
6378         installman1dir='';;
6379 esac
6380
6381 : Change installation prefix, if necessary.
6382 if $test X"$prefix" != X"$installprefix"; then
6383         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6384 else
6385         installman1dir="$man1direxp"
6386 fi
6387
6388 : What suffix to use on installed man pages
6389
6390 case "$man1dir" in
6391 ' ')
6392         man1ext='0'
6393         ;;
6394 *)
6395         rp="What suffix should be used for the main $spackage man pages?"
6396         case "$man1ext" in
6397         '')     case "$man1dir" in
6398                 *1)  dflt=1 ;;
6399                 *1p) dflt=1p ;;
6400                 *1pm) dflt=1pm ;;
6401                 *l) dflt=l;;
6402                 *n) dflt=n;;
6403                 *o) dflt=o;;
6404                 *p) dflt=p;;
6405                 *C) dflt=C;;
6406                 *L) dflt=L;;
6407                 *L1) dflt=L1;;
6408                 *) dflt=1;;
6409                 esac
6410                 ;;
6411         *)      dflt="$man1ext";;
6412         esac
6413         . ./myread
6414         man1ext="$ans"
6415         ;;
6416 esac
6417
6418 : see if we can have long filenames
6419 echo " "
6420 rmlist="$rmlist /tmp/cf$$"
6421 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
6422 first=123456789abcdef
6423 second=/tmp/cf$$/$first
6424 $rm -f $first $second
6425 if (echo hi >$first) 2>/dev/null; then
6426         if $test -f 123456789abcde; then
6427                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6428                 val="$undef"
6429         else
6430                 if (echo hi >$second) 2>/dev/null; then
6431                         if $test -f /tmp/cf$$/123456789abcde; then
6432                                 $cat <<'EOM'
6433 That's peculiar... You can have filenames longer than 14 characters, but only
6434 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
6435 I shall consider your system cannot support long filenames at all.
6436 EOM
6437                                 val="$undef"
6438                         else
6439                                 echo 'You can have filenames longer than 14 characters.' >&4
6440                                 val="$define"
6441                         fi
6442                 else
6443                         $cat <<'EOM'
6444 How confusing! Some of your filesystems are sane enough to allow filenames
6445 longer than 14 characters but some others like /tmp can't even think about them.
6446 So, for now on, I shall assume your kernel does not allow them at all.
6447 EOM
6448                         val="$undef"
6449                 fi
6450         fi
6451 else
6452         $cat <<'EOM'
6453 You can't have filenames longer than 14 chars.  You can't even think about them!
6454 EOM
6455         val="$undef"
6456 fi 
6457 set d_flexfnam
6458 eval $setvar
6459 $rm -rf /tmp/cf$$ 123456789abcde*
6460
6461 : determine where library module manual pages go
6462 set man3dir man3dir none
6463 eval $prefixit
6464 $cat <<EOM
6465
6466 $spackage has manual pages for many of the library modules.
6467 EOM
6468
6469 case "$nroff" in
6470 nroff)
6471         $cat <<'EOM'
6472 However, you don't have nroff, so they're probably useless to you.
6473 EOM
6474         case "$man3dir" in
6475         '') man3dir="none";;
6476         esac;;
6477 esac
6478
6479 case "$d_flexfnam" in
6480 undef)
6481         $cat <<'EOM'
6482 However, your system can't handle the long file names like File::Basename.3. 
6483 EOM
6484         case "$man3dir" in
6485         '') man3dir="none";;
6486         esac;;
6487 esac
6488
6489 echo "If you don't want the manual sources installed, answer 'none'."
6490 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6491 case "$man3dir" in
6492 '')     dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6493         if $test -d "$privlib/man/man3"; then
6494                 cat <<EOM >&4
6495
6496 WARNING:  Previous versions of perl installed man3 pages into
6497 $privlib/man/man3.  This version will suggest a 
6498 new default of $dflt.  
6499 EOM
6500                 tdflt=$dflt
6501                 dflt='n'
6502                 rp='Do you wish to preserve the old behavior?(y/n)'
6503                 . ./myread
6504                 case "$ans" in
6505                 y*) dflt="$privlib/man/man3" ;;
6506                 *)  dflt=$tdflt ;;
6507                 esac
6508     fi
6509         ;;
6510 ' ') dflt=none;;
6511 *)      dflt="$man3dir" ;;
6512 esac
6513 echo " "
6514 fn=dn+~
6515 rp="Where do the $package library man pages (source) go?"
6516 . ./getfile
6517 man3dir="$ans"
6518 man3direxp="$ansexp"
6519 case "$man1dir" in
6520 '')     man3dir=' '
6521         installman3dir='';;
6522 esac
6523
6524 : Change installation prefix, if necessary.
6525 if $test X"$prefix" != X"$installprefix"; then
6526         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6527 else
6528         installman3dir="$man3direxp"
6529 fi
6530
6531 : What suffix to use on installed man pages
6532 case "$man3dir" in
6533 ' ')
6534         man3ext='0'
6535         ;;
6536 *)
6537         rp="What suffix should be used for the $package library man pages?"
6538         case "$man3ext" in
6539         '')     case "$man3dir" in
6540                 *3)  dflt=3 ;;
6541                 *3p) dflt=3p ;;
6542                 *3pm) dflt=3pm ;;
6543                 *l) dflt=l;;
6544                 *n) dflt=n;;
6545                 *o) dflt=o;;
6546                 *p) dflt=p;;
6547                 *C) dflt=C;;
6548                 *L) dflt=L;;
6549                 *L3) dflt=L3;;
6550                 *) dflt=3;;
6551                 esac
6552                 ;;
6553         *)      dflt="$man3ext";;
6554         esac
6555         . ./myread
6556         man3ext="$ans"
6557         ;;
6558 esac
6559
6560 : see if we have to deal with yellow pages, now NIS.
6561 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6562         if $test -f /usr/etc/nibindd; then
6563                 echo " "
6564                 echo "I'm fairly confident you're on a NeXT."
6565                 echo " "
6566                 rp='Do you get the hosts file via NetInfo?'
6567                 dflt=y
6568                 case "$hostcat" in
6569                 nidump*) ;;
6570                 '') ;;
6571                 *) dflt=n;;
6572                 esac
6573                 . ./myread
6574                 case "$ans" in
6575                 y*) hostcat='nidump hosts .';;
6576                 *)      case "$hostcat" in
6577                         nidump*) hostcat='';;
6578                         esac
6579                         ;;
6580                 esac
6581         fi
6582         case "$hostcat" in
6583         nidump*) ;;
6584         *)
6585                 case "$hostcat" in
6586                 *ypcat*) dflt=y;;
6587                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6588                                 dflt=y
6589                         else
6590                                 dflt=n
6591                         fi;;
6592                 *) dflt=n;;
6593                 esac
6594                 echo " "
6595                 rp='Are you getting the hosts file via yellow pages?'
6596                 . ./myread
6597                 case "$ans" in
6598                 y*) hostcat='ypcat hosts';;
6599                 *) hostcat='cat /etc/hosts';;
6600                 esac
6601                 ;;
6602         esac
6603 fi
6604 case "$hostcat" in
6605 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6606 esac
6607 case "$groupcat" in
6608 '') test -f /etc/group && groupcat='cat /etc/group';;
6609 esac
6610 case "$passcat" in
6611 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6612 esac
6613
6614 : now get the host name
6615 echo " "
6616 echo "Figuring out host name..." >&4
6617 case "$myhostname" in
6618 '') cont=true
6619         echo 'Maybe "hostname" will work...'
6620         if tans=`sh -c hostname 2>&1` ; then
6621                 myhostname=$tans
6622                 phostname=hostname
6623                 cont=''
6624         fi
6625         ;;
6626 *) cont='';;
6627 esac
6628 if $test "$cont"; then
6629         if ./xenix; then
6630                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
6631                 if tans=`cat /etc/systemid 2>&1` ; then
6632                         myhostname=$tans
6633                         phostname='cat /etc/systemid'
6634                         echo "Whadyaknow.  Xenix always was a bit strange..."
6635                         cont=''
6636                 fi
6637         elif $test -r /etc/systemid; then
6638                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6639         fi
6640 fi
6641 if $test "$cont"; then
6642         echo 'No, maybe "uuname -l" will work...'
6643         if tans=`sh -c 'uuname -l' 2>&1` ; then
6644                 myhostname=$tans
6645                 phostname='uuname -l'
6646         else
6647                 echo 'Strange.  Maybe "uname -n" will work...'
6648                 if tans=`sh -c 'uname -n' 2>&1` ; then
6649                         myhostname=$tans
6650                         phostname='uname -n'
6651                 else
6652                         echo 'Oh well, maybe I can mine it out of whoami.h...'
6653                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6654                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6655                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6656                         else
6657                                 case "$myhostname" in
6658                                 '') echo "Does this machine have an identity crisis or something?"
6659                                         phostname='';;
6660                                 *)
6661                                         echo "Well, you said $myhostname before..."
6662                                         phostname='echo $myhostname';;
6663                                 esac
6664                         fi
6665                 fi
6666         fi
6667 fi
6668 : you do not want to know about this
6669 set $myhostname
6670 myhostname=$1
6671
6672 : verify guess
6673 if $test "$myhostname" ; then
6674         dflt=y
6675         rp='Your host name appears to be "'$myhostname'".'" Right?"
6676         . ./myread
6677         case "$ans" in
6678         y*) ;;
6679         *) myhostname='';;
6680         esac
6681 fi
6682
6683 : bad guess or no guess
6684 while $test "X$myhostname" = X ; do
6685         dflt=''
6686         rp="Please type the (one word) name of your host:"
6687         . ./myread
6688         myhostname="$ans"
6689 done
6690
6691 : translate upper to lower if necessary
6692 case "$myhostname" in
6693 *[A-Z]*)
6694         echo "(Normalizing case in your host name)"
6695         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6696         ;;
6697 esac
6698
6699 case "$myhostname" in
6700 *.*)
6701         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6702         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6703         echo "(Trimming domain name from host name--host name is now $myhostname)"
6704         ;;
6705 *) case "$mydomain" in
6706         '')
6707                 {
6708                         test "X$hostcat" = "Xypcat hosts" &&
6709                         ypmatch "$myhostname" hosts 2>/dev/null |\
6710                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
6711                         $test -s hosts
6712                 } || {
6713                         test "X$hostcat" != "X" &&
6714                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
6715                                         /[       ]$myhostname[  . ]/p" > hosts
6716                 }
6717                 tmp_re="[       . ]"
6718                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
6719                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
6720                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6721                         hosts | $sort | $uniq | \
6722                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6723                 case `$echo X$dflt` in
6724                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
6725                         dflt=.
6726                         ;;
6727                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6728                         ;;
6729                 esac
6730                 case "$dflt" in
6731                 .)
6732                         tans=`./loc resolv.conf X /etc /usr/etc`
6733                         if $test -f "$tans"; then
6734                                 echo "(Attempting domain name extraction from $tans)"
6735                                 dflt=.`$sed -n -e 's/   / /g' \
6736                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
6737                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6738                                 case "$dflt" in
6739                                 .) dflt=.`$sed -n -e 's/        / /g' \
6740                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
6741                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6742                                         ;;
6743                                 esac
6744                         fi
6745                         ;;
6746                 esac
6747                 case "$dflt" in
6748                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6749                         dflt=.`sh -c domainname 2>/dev/null`
6750                         case "$dflt" in
6751                         '') dflt='.';;
6752                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6753                         esac
6754                         ;;
6755                 esac
6756                 case "$dflt" in
6757                 .) echo "(Lost all hope -- silly guess then)"
6758                         dflt='.uucp'
6759                         ;;
6760                 esac
6761                 $rm -f hosts
6762                 ;;
6763         *) dflt="$mydomain";;
6764         esac;;
6765 esac
6766 echo " "
6767 rp="What is your domain name?"
6768 . ./myread
6769 tans="$ans"
6770 case "$ans" in
6771 '') ;;
6772 .*) ;;
6773 *) tans=".$tans";;
6774 esac
6775 mydomain="$tans"
6776
6777 : translate upper to lower if necessary
6778 case "$mydomain" in
6779 *[A-Z]*)
6780         echo "(Normalizing case in your domain name)"
6781         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6782         ;;
6783 esac
6784
6785 : a little sanity check here
6786 case "$phostname" in
6787 '') ;;
6788 *)
6789         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6790         $myhostname$mydomain|$myhostname) ;;
6791         *)
6792                 case "$phostname" in
6793                 sed*)
6794                         echo "(That doesn't agree with your whoami.h file, by the way.)"
6795                         ;;
6796                 *)
6797                         echo "(That doesn't agree with your $phostname command, by the way.)"
6798                         ;;
6799                 esac
6800         ;;
6801         esac
6802         ;;
6803 esac
6804
6805 $cat <<EOM
6806
6807 I need to get your e-mail address in Internet format if possible, i.e.
6808 something like user@host.domain. Please answer accurately since I have
6809 no easy means to double check it. The default value provided below
6810 is most probably close to reality but may not be valid from outside
6811 your organization...
6812
6813 EOM
6814 cont=x
6815 while test "$cont"; do
6816         case "$cf_email" in
6817         '') dflt="$cf_by@$myhostname$mydomain";;
6818         *) dflt="$cf_email";;
6819         esac
6820         rp='What is your e-mail address?'
6821         . ./myread
6822         cf_email="$ans"
6823         case "$cf_email" in
6824         *@*.*) cont='' ;;
6825         *)
6826                 rp='Address does not look like an Internet one.  Use it anyway?'
6827                 case "$fastread" in
6828                 yes) dflt=y ;;
6829                 *) dflt=n ;;
6830                 esac
6831                 . ./myread
6832                 case "$ans" in
6833                 y*) cont='' ;;
6834                 *) echo " " ;;
6835                 esac
6836                 ;;
6837         esac
6838 done
6839
6840 $cat <<EOM
6841
6842 If you or somebody else will be maintaining perl at your site, please
6843 fill in the correct e-mail address here so that they may be contacted
6844 if necessary. Currently, the "perlbug" program included with perl
6845 will send mail to this address in addition to perlbug@perl.com. You may
6846 enter "none" for no administrator.
6847
6848 EOM
6849 case "$perladmin" in
6850 '') dflt="$cf_email";;
6851 *) dflt="$perladmin";;
6852 esac
6853 rp='Perl administrator e-mail address'
6854 . ./myread
6855 perladmin="$ans"
6856
6857 : figure out how to guarantee perl startup
6858 case "$startperl" in
6859 '')
6860         case "$sharpbang" in
6861         *!)
6862                 $cat <<EOH
6863
6864 I can use the #! construct to start perl on your system. This will
6865 make startup of perl scripts faster, but may cause problems if you
6866 want to share those scripts and perl is not in a standard place
6867 ($binexp/perl) on all your platforms. The alternative is to force
6868 a shell by starting the script with a single ':' character.
6869
6870 EOH
6871                 dflt="$binexp/perl"
6872                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6873                 . ./myread
6874                 case "$ans" in
6875                 none)   startperl=": # use perl";;
6876                 *)      startperl="#!$ans"
6877                         if $test 30 -lt `echo "$ans" | wc -c`; then
6878                                 $cat >&4 <<EOM
6879
6880 WARNING:  Some systems limit the #! command to 32 characters.
6881 If you experience difficulty running Perl scripts with #!, try
6882 installing Perl in a directory with a shorter pathname.
6883
6884 EOM
6885                         fi ;;
6886                 esac
6887                 ;;
6888         *) startperl=": # use perl"
6889                 ;;
6890         esac
6891         ;;
6892 esac
6893 echo "I'll use $startperl to start perl scripts."
6894
6895 : figure best path for perl in scripts
6896 case "$perlpath" in
6897 '')
6898         perlpath="$binexp/perl"
6899         case "$startperl" in
6900         *!*) ;;
6901         *)
6902                 $cat <<EOH
6903
6904 I will use the "eval 'exec'" idiom to start Perl on your system.
6905 I can use the full path of your Perl binary for this purpose, but
6906 doing so may cause problems if you want to share those scripts and
6907 Perl is not always in a standard place ($binexp/perl).
6908
6909 EOH
6910                 dflt="$binexp/perl"
6911                 rp="What path shall I use in \"eval 'exec'\"?"
6912                 . ./myread
6913                 perlpath="$ans"
6914                 ;;
6915         esac
6916         ;;
6917 esac
6918 case "$startperl" in
6919 *!*)    ;;
6920 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6921 esac
6922
6923 : determine where public executable scripts go
6924 set scriptdir scriptdir
6925 eval $prefixit
6926 case "$scriptdir" in
6927 '')
6928         dflt="$bin"
6929         : guess some guesses
6930         $test -d /usr/share/scripts && dflt=/usr/share/scripts
6931         $test -d /usr/share/bin     && dflt=/usr/share/bin
6932         $test -d /usr/local/script  && dflt=/usr/local/script
6933         $test -d /usr/local/scripts && dflt=/usr/local/scripts
6934         $test -d $prefixexp/script  && dflt=$prefixexp/script
6935         set dflt
6936         eval $prefixup
6937         ;;
6938 *)  dflt="$scriptdir"
6939         ;;
6940 esac
6941 $cat <<EOM
6942  
6943 Some installations have a separate directory just for executable scripts so
6944 that they can mount it across multiple architectures but keep the scripts in
6945 one spot.  You might, for example, have a subdirectory of /usr/share for this.
6946 Or you might just lump your scripts in with all your other executables.
6947  
6948 EOM
6949 fn=d~
6950 rp='Where do you keep publicly executable scripts?'
6951 . ./getfile
6952 if $test "X$ansexp" != "X$scriptdirexp"; then
6953         installscript=''
6954 fi
6955 scriptdir="$ans"
6956 scriptdirexp="$ansexp"
6957 : Change installation prefix, if necessary.
6958 if $test X"$prefix" != X"$installprefix"; then
6959         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
6960 else
6961         installscript="$scriptdirexp"
6962 fi
6963
6964 : determine where site specific architecture-dependent libraries go.
6965 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6966 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6967 : sitelib may have an optional trailing /share.
6968 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6969 tdflt="$tdflt/$archname"
6970 set sitearch sitearch none
6971 eval $prefixit
6972 case "$sitearch" in
6973 '')     dflt="$tdflt" ;;
6974 *)      dflt="$sitearch" ;;
6975 esac
6976 $cat <<EOM
6977
6978 The installation process will also create a directory for
6979 architecture-dependent site-specific extensions and modules.
6980
6981 EOM
6982 fn=nd~+
6983 rp='Pathname for the site-specific architecture-dependent library files?'
6984 . ./getfile
6985 sitearch="$ans"
6986 sitearchexp="$ansexp"
6987 : Change installation prefix, if necessary.
6988 if $test X"$prefix" != X"$installprefix"; then
6989         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6990 else
6991         installsitearch="$sitearchexp"
6992 fi
6993
6994 : determine where add-on public executables go
6995 case "$sitebin" in
6996 '')     dflt=$siteprefix/bin ;;
6997 *)      dflt=$sitebin ;;
6998 esac
6999 fn=d~
7000 rp='Pathname where the add-on public executables should be installed?'
7001 . ./getfile
7002 sitebin="$ans"
7003 sitebinexp="$ansexp"
7004 : Change installation prefix, if necessary.
7005 if $test X"$prefix" != X"$installprefix"; then
7006         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7007 else
7008         installsitebin="$sitebinexp"
7009 fi
7010
7011 : see if sqrtl exists
7012 set sqrtl d_sqrtl
7013 eval $inlibc
7014
7015 case "$ccflags" in
7016 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7017 esac
7018
7019 case "$uselongdouble" in
7020 $define|true|[yY]*)     dflt='y';;
7021 *) dflt='n';;
7022 esac
7023 cat <<EOM
7024
7025 Perl can be built to take advantage of long doubles which
7026 (if available) may give more accuracy and range for floating point numbers.
7027
7028 If this doesn't make any sense to you, just accept the default '$dflt'.
7029 EOM
7030 rp='Try to use long doubles if available?'
7031 . ./myread
7032 case "$ans" in
7033 y|Y)    val="$define"   ;;
7034 *)      val="$undef"    ;;
7035 esac
7036 set uselongdouble
7037 eval $setvar
7038
7039 case "$uselongdouble" in
7040 true|[yY]*) uselongdouble="$define" ;;
7041 esac
7042
7043 case "$uselongdouble" in
7044 $define)
7045 : Look for a hint-file generated 'call-back-unit'.  If the
7046 : user has specified that long doubles should be used,
7047 : we may need to set or change some other defaults.
7048         if $test -f uselongdouble.cbu; then
7049                 echo "Your platform has some specific hints for long doubles, using them..."
7050                 . ./uselongdouble.cbu
7051         else
7052                 $cat <<EOM
7053 (Your platform doesn't have any specific hints for long doubles.)
7054 EOM
7055         fi
7056         ;;
7057 esac
7058
7059 case "$uselongdouble:$d_sqrtl" in
7060 $define:$undef)
7061                 $cat <<EOM >&4
7062
7063 You requested the use of long doubles but you do not seem to have
7064 the mathematic functions for long doubles.  I'm disabling the use
7065 of long doubles.
7066 EOM
7067         uselongdouble=$undef
7068         ;;
7069 esac
7070
7071 case "$useperlio" in
7072 $define|true|[yY]*)     dflt='y';;
7073 *) dflt='n';;
7074 esac
7075 cat <<EOM
7076
7077 Previous version of $package used the standard IO mechanisms as defined
7078 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7079 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7080 the default.  This abstraction layer can use AT&T's sfio (if you already
7081 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7082 problems with some extension modules.  Using PerlIO with stdio is safe,
7083 but it is slower than plain stdio and therefore is not the default.
7084
7085 If this doesn't make any sense to you, just accept the default '$dflt'.
7086 EOM
7087 rp='Use the experimental PerlIO abstraction layer?'
7088 . ./myread
7089 case "$ans" in
7090 y|Y) 
7091         val="$define"
7092         ;;     
7093 *)      
7094         echo "Ok, doing things the stdio way"
7095         val="$undef"
7096         ;;
7097 esac
7098 set useperlio
7099 eval $setvar 
7100
7101 case "$vendorprefix" in
7102 '')     d_vendorbin="$undef"
7103         vendorbin=''
7104         vendorbinexp=''
7105         ;;
7106 *)      d_vendorbin="$define"
7107         : determine where vendor-supplied executables go.
7108         dflt=$vendorprefix/bin
7109         fn=d~+
7110         rp='Pathname for the vendor-supplied executables directory?'
7111         . ./getfile
7112         vendorbin="$ans"
7113         vendorbinexp="$ansexp"
7114         : Change installation prefix, if necessary.
7115         if $test X"$prefix" != X"$installprefix"; then
7116                 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7117         else
7118                 installvendorbin="$vendorbinexp"
7119         fi
7120         ;;
7121 esac
7122
7123 : check for length of double
7124 echo " "
7125 case "$doublesize" in
7126 '')
7127         $echo $n "Checking to see how big your double precision numbers are...$c" >&4
7128         $cat >try.c <<'EOCP'
7129 #include <stdio.h>
7130 int main()
7131 {
7132     printf("%d\n", (int)sizeof(double));
7133     exit(0);
7134 }
7135 EOCP
7136         set try
7137         if eval $compile_ok; then
7138                 doublesize=`./try`
7139                 $echo " $doublesize bytes." >&4
7140         else
7141                 dflt='8'
7142                 echo "(I can't seem to compile the test program.  Guessing...)"
7143                 rp="What is the size of a double precision number (in bytes)?"
7144                 . ./myread
7145                 doublesize="$ans"
7146         fi
7147         ;;
7148 esac
7149 $rm -f try.c try
7150
7151 : check for long doubles
7152 echo " "
7153 $echo $n "Checking to see if your system supports long double..." $c >&4
7154 echo 'int main() { long double x = 7.0; }' > try.c
7155 set try
7156 if eval $compile; then
7157         val="$define"
7158         echo " Yes, it does." >&4
7159 else
7160         val="$undef"
7161         echo " No, it doesn't." >&4
7162 fi
7163 $rm try.*
7164 set d_longdbl
7165 eval $setvar
7166
7167 : check for length of long double
7168 case "${d_longdbl}${longdblsize}" in
7169 $define)
7170         echo " "
7171         $echo $n "Checking to see how big your long doubles are..." $c >&4
7172         $cat >try.c <<'EOCP'
7173 #include <stdio.h>
7174 int main()
7175 {
7176         printf("%d\n", sizeof(long double));
7177 }
7178 EOCP
7179         set try
7180         set try
7181         if eval $compile; then
7182                 longdblsize=`./try$exe_ext`
7183                 $echo " $longdblsize bytes." >&4
7184         else
7185                 dflt='8'
7186                 echo " "
7187                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7188                 rp="What is the size of a long double (in bytes)?"
7189                 . ./myread
7190                 longdblsize="$ans"
7191         fi
7192         if $test "X$doublesize" = "X$longdblsize"; then
7193                 echo "(That isn't any different from an ordinary double.)"
7194         fi      
7195         ;;
7196 esac
7197 $rm -f try.* try
7198
7199 : Check how to convert floats to strings.
7200 if test "X$d_Gconvert" = X; then
7201         echo " "
7202         echo "Checking for an efficient way to convert floats to strings."
7203         $cat >try.c <<EOP
7204 #ifdef TRY_gconvert
7205 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7206 char *myname = "gconvert";
7207 #endif
7208 #ifdef TRY_gcvt
7209 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7210 char *myname = "gcvt";
7211 #endif
7212 #ifdef TRY_qgcvt
7213 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7214 char *myname = "qgcvt";
7215 #define DOUBLETYPE long double
7216 #endif
7217 #ifdef TRY_sprintf
7218 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7219 char *myname = "sprintf";
7220 #endif
7221
7222 #ifndef DOUBLETYPE
7223 #define DOUBLETYPE double
7224 #endif
7225
7226 #include <stdio.h>
7227
7228 #define I_STDLIB $i_stdlib
7229 #ifdef I_STDLIB
7230 #include <stdlib.h>
7231 #endif
7232
7233 int
7234 checkit(expect, got)
7235 char *expect;
7236 char *got;
7237 {
7238     if (strcmp(expect, got)) {
7239                 printf("%s oddity:  Expected %s, got %s\n",
7240                         myname, expect, got);
7241                 exit(1);
7242         }
7243 }
7244
7245 int main()
7246
7247         char buf[64]; 
7248         buf[63] = '\0';
7249
7250         /* This must be 1st test on (which?) platform */
7251         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7252         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7253         checkit("0.1", buf);
7254
7255         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7256         checkit("1", buf);
7257
7258         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7259         checkit("0", buf);
7260
7261         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7262         checkit("-1", buf);
7263
7264         /* Some Linux gcvt's give 1.e+5 here. */
7265         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7266         checkit("100000", buf);
7267         
7268         /* Some Linux gcvt's give -1.e+5 here. */
7269         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7270         checkit("-100000", buf);
7271
7272         exit(0);
7273 }
7274 EOP
7275         case "$d_Gconvert" in
7276         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7277         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7278         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7279         *) xxx_list='gconvert gcvt sprintf' ;;
7280         esac
7281
7282         case "$d_longdbl$uselongdouble" in
7283         definedefine) xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7284         esac
7285
7286         for xxx_convert in $xxx_list; do
7287                 echo "Trying $xxx_convert..."
7288                 $rm -f try try$_o
7289                 set try -DTRY_$xxx_convert
7290                 if eval $compile; then
7291                         echo "$xxx_convert() found." >&4
7292                         if ./try; then
7293                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
7294                                 break;
7295                         else
7296                                 echo "...But $xxx_convert didn't work as I expected."
7297                         fi
7298                 else
7299                         echo "$xxx_convert NOT found." >&4
7300                 fi
7301         done
7302                 
7303         case "$xxx_convert" in
7304         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7305         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7306         qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7307         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7308         esac
7309 fi
7310
7311 echo " "
7312
7313 if $test X"$d_longdbl" = X"$define"; then
7314
7315 echo "Checking how to print long doubles..." >&4
7316
7317 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7318         $cat >try.c <<'EOCP'
7319 #include <sys/types.h>
7320 #include <stdio.h>
7321 int main() {
7322   double d = 123.456;
7323   printf("%.3f\n", d);
7324 }
7325 EOCP
7326         set try
7327         if eval $compile; then
7328                 yyy=`./try$exe_ext`
7329                 case "$yyy" in
7330                 123.456)
7331                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7332                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7333                         echo "We will use %f."
7334                         ;;
7335                 esac
7336         fi
7337 fi
7338
7339 if $test X"$sPRIfldbl" = X; then
7340         $cat >try.c <<'EOCP'
7341 #include <sys/types.h>
7342 #include <stdio.h>
7343 int main() {
7344   long double d = 123.456;
7345   printf("%.3llf\n", d);
7346 }
7347 EOCP
7348         set try
7349         if eval $compile; then
7350                 yyy=`./try$exe_ext`
7351                 case "$yyy" in
7352                 123.456)
7353                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7354                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7355                         echo "We will use %llf."
7356                         ;;
7357                 esac
7358         fi
7359 fi
7360
7361 if $test X"$sPRIfldbl" = X; then
7362         $cat >try.c <<'EOCP'
7363 #include <sys/types.h>
7364 #include <stdio.h>
7365 int main() {
7366   long double d = 123.456;
7367   printf("%.3Lf\n", d);
7368 }
7369 EOCP
7370         set try
7371         if eval $compile; then
7372                 yyy=`./try$exe_ext`
7373                 case "$yyy" in
7374                 123.456)
7375                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7376                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7377                         echo "We will use %Lf."
7378                         ;;
7379                 esac
7380         fi
7381 fi
7382
7383 if $test X"$sPRIfldbl" = X; then
7384         $cat >try.c <<'EOCP'
7385 #include <sys/types.h>
7386 #include <stdio.h>
7387 int main() {
7388   long double d = 123.456;
7389   printf("%.3lf\n", d);
7390 }
7391 EOCP
7392         set try
7393         if eval $compile; then
7394                 yyy=`./try$exe_ext`
7395                 case "$yyy" in
7396                 123.456)
7397                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7398                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7399                         echo "We will use %lf."
7400                         ;;
7401                 esac
7402         fi
7403 fi
7404
7405 if $test X"$sPRIfldbl" = X; then
7406         echo "Cannot figure out how to print long doubles." >&4
7407 fi
7408
7409 $rm -f try try.*
7410
7411 fi # d_longdbl
7412
7413 case "$sPRIfldbl" in
7414 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7415         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7416         ;;
7417 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7418         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7419         ;;
7420 esac
7421
7422 : Initialize h_fcntl
7423 h_fcntl=false
7424
7425 : Initialize h_sysfile
7426 h_sysfile=false
7427
7428 : access call always available on UNIX
7429 set access d_access
7430 eval $inlibc
7431
7432 : locate the flags for 'access()'
7433 case "$d_access" in
7434 "$define")
7435         echo " "
7436         $cat >access.c <<'EOCP'
7437 #include <sys/types.h>
7438 #ifdef I_FCNTL
7439 #include <fcntl.h>
7440 #endif
7441 #ifdef I_SYS_FILE
7442 #include <sys/file.h>
7443 #endif
7444 #ifdef I_UNISTD
7445 #include <unistd.h>
7446 #endif
7447 int main() {
7448         exit(R_OK);
7449 }
7450 EOCP
7451         : check sys/file.h first, no particular reason here
7452         if $test `./findhdr sys/file.h` && \
7453                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7454                 h_sysfile=true;
7455                 echo "<sys/file.h> defines the *_OK access constants." >&4
7456         elif $test `./findhdr fcntl.h` && \
7457                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7458                 h_fcntl=true;
7459                 echo "<fcntl.h> defines the *_OK access constants." >&4
7460         elif $test `./findhdr unistd.h` && \
7461                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7462                 echo "<unistd.h> defines the *_OK access constants." >&4
7463         else
7464                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7465         fi
7466         ;;
7467 esac
7468 $rm -f access*
7469
7470 : see if accessx exists
7471 set accessx d_accessx
7472 eval $inlibc
7473
7474 : see if alarm exists
7475 set alarm d_alarm
7476 eval $inlibc
7477
7478 : see if atolf exists
7479 set atolf d_atolf
7480 eval $inlibc
7481
7482 : see if atoll exists
7483 set atoll d_atoll
7484 eval $inlibc
7485
7486 : Look for GNU-cc style attribute checking
7487 echo " "
7488 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7489 $cat >attrib.c <<'EOCP'
7490 #include <stdio.h>
7491 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7492 EOCP
7493 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7494         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7495                 echo "Your C compiler doesn't fully support __attribute__."
7496                 val="$undef"
7497         else
7498                 echo "Your C compiler supports __attribute__."
7499                 val="$define"
7500         fi
7501 else
7502         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7503         val="$undef"
7504 fi
7505 set d_attribut
7506 eval $setvar
7507 $rm -f attrib*
7508
7509 : see if bcmp exists
7510 set bcmp d_bcmp
7511 eval $inlibc
7512
7513 : see if bcopy exists
7514 set bcopy d_bcopy
7515 eval $inlibc
7516
7517 : see if this is a unistd.h system
7518 set unistd.h i_unistd
7519 eval $inhdr
7520
7521 : see if getpgrp exists
7522 set getpgrp d_getpgrp
7523 eval $inlibc
7524
7525 case "$d_getpgrp" in
7526 "$define")
7527         echo " "
7528         echo "Checking to see which flavor of getpgrp is in use..."
7529         $cat >set.c <<EOP
7530 #$i_unistd I_UNISTD
7531 #include <sys/types.h>
7532 #ifdef I_UNISTD
7533 #  include <unistd.h>
7534 #endif
7535 int main()
7536 {
7537         if (getuid() == 0) {
7538                 printf("(I see you are running Configure as super-user...)\n");
7539                 setuid(1);
7540         }
7541 #ifdef TRY_BSD_PGRP
7542         if (getpgrp(1) == 0)
7543                 exit(0);
7544 #else
7545         if (getpgrp() > 0)
7546                 exit(0);
7547 #endif
7548         exit(1);
7549 }
7550 EOP
7551         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7552                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7553                 val="$define"
7554         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7555                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7556                 val="$undef"
7557         else
7558                 echo "I can't seem to compile and run the test program."
7559                 if ./usg; then
7560                         xxx="a USG one, i.e. you use getpgrp()."
7561                 else
7562                         # SVR4 systems can appear rather BSD-ish.
7563                         case "$i_unistd" in
7564                         $undef)
7565                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7566                                 val="$define"
7567                                 ;;
7568                         $define)
7569                                 xxx="probably a USG one, i.e. you use getpgrp()."
7570                                 val="$undef"
7571                                 ;;
7572                         esac
7573                 fi
7574                 echo "Assuming your getpgrp is $xxx" >&4
7575         fi
7576         ;;
7577 *) val="$undef";;
7578 esac
7579 set d_bsdgetpgrp
7580 eval $setvar
7581 $rm -f set set.c
7582
7583 : see if setpgrp exists
7584 set setpgrp d_setpgrp
7585 eval $inlibc
7586
7587 case "$d_setpgrp" in
7588 "$define")
7589         echo " "
7590         echo "Checking to see which flavor of setpgrp is in use..."
7591         $cat >set.c <<EOP
7592 #$i_unistd I_UNISTD
7593 #include <sys/types.h>
7594 #ifdef I_UNISTD
7595 #  include <unistd.h>
7596 #endif
7597 int main()
7598 {
7599         if (getuid() == 0) {
7600                 printf("(I see you are running Configure as super-user...)\n");
7601                 setuid(1);
7602         }
7603 #ifdef TRY_BSD_PGRP
7604         if (-1 == setpgrp(1, 1))
7605                 exit(0);
7606 #else
7607         if (setpgrp() != -1)
7608                 exit(0);
7609 #endif
7610         exit(1);
7611 }
7612 EOP
7613         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7614                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7615                 val="$define"
7616         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7617                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7618                 val="$undef"
7619         else
7620                 echo "(I can't seem to compile and run the test program.)"
7621                 if ./usg; then
7622                         xxx="a USG one, i.e. you use setpgrp()."
7623                 else
7624                         # SVR4 systems can appear rather BSD-ish.
7625                         case "$i_unistd" in
7626                         $undef)
7627                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7628                                 val="$define"
7629                                 ;;
7630                         $define)
7631                                 xxx="probably a USG one, i.e. you use setpgrp()."
7632                                 val="$undef"
7633                                 ;;
7634                         esac
7635                 fi
7636                 echo "Assuming your setpgrp is $xxx" >&4
7637         fi
7638         ;;
7639 *) val="$undef";;
7640 esac
7641 set d_bsdsetpgrp
7642 eval $setvar
7643 $rm -f set set.c
7644 : see if bzero exists
7645 set bzero d_bzero
7646 eval $inlibc
7647
7648 : see if signal is declared as pointer to function returning int or void
7649 echo " "
7650 xxx=`./findhdr signal.h`
7651 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7652 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7653         echo "You have int (*signal())() instead of void." >&4
7654         val="$undef"
7655 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
7656         echo "You have void (*signal())()." >&4
7657         val="$define"
7658 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7659         echo "You have int (*signal())() instead of void." >&4
7660         val="$undef"
7661 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7662         echo "You have void (*signal())()." >&4
7663         val="$define"
7664 else
7665         case "$d_voidsig" in
7666         '')
7667         echo "I can't determine whether signal handler returns void or int..." >&4
7668                 dflt=void
7669                 rp="What type does your signal handler return?"
7670                 . ./myread
7671                 case "$ans" in
7672                 v*) val="$define";;
7673                 *) val="$undef";;
7674                 esac;;
7675         "$define")
7676                 echo "As you already told me, signal handler returns void." >&4
7677                 val="$define"
7678                 ;;
7679         *)      echo "As you already told me, signal handler returns int." >&4
7680                 val="$undef"
7681                 ;;
7682         esac
7683 fi
7684 set d_voidsig
7685 eval $setvar
7686 case "$d_voidsig" in
7687 "$define") signal_t="void";;
7688 *) signal_t="int";;
7689 esac
7690 $rm -f $$.tmp
7691
7692 : check for ability to cast large floats to 32-bit ints.
7693 echo " "
7694 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7695 if $test "$intsize" -ge 4; then
7696         xxx=int
7697 else
7698         xxx=long
7699 fi
7700 $cat >try.c <<EOCP
7701 #include <stdio.h>
7702 #include <sys/types.h>
7703 #include <signal.h>
7704 $signal_t blech(s) int s; { exit(3); }
7705 int main()
7706 {
7707         $xxx i32;
7708         double f, g;
7709         int result = 0;
7710         char str[16];
7711         signal(SIGFPE, blech);
7712
7713         /* Don't let compiler optimize the test away.  Store the number 
7714            in a writable string for gcc to pass to sscanf under HP/UX.
7715         */
7716         sprintf(str, "2147483647");
7717         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7718         g = 10 * f;
7719         i32  = ($xxx) g;
7720
7721         /* x86 processors will probably give 0x8000 0000, which is a
7722        sign change.  We don't want that.  We want to mimic SPARC
7723            behavior here, which is to preserve the sign and give
7724            back 0x7fff ffff.
7725         */
7726         if (i32 != ($xxx) f)
7727                 result |= 1;
7728         exit(result);
7729 }
7730 EOCP
7731 set try
7732 if eval $compile_ok; then
7733         ./try
7734         yyy=$?
7735 else
7736         echo "(I can't seem to compile the test program--assuming it can't)"
7737         yyy=1
7738 fi
7739 case "$yyy" in
7740 0)      val="$define"
7741         echo "Yup, it can."
7742         ;;
7743 *)      val="$undef"
7744         echo "Nope, it can't."
7745         ;;
7746 esac
7747 set d_casti32
7748 eval $setvar
7749 $rm -f try try.*
7750
7751 : check for ability to cast negative floats to unsigned
7752 echo " "
7753 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7754 $cat >try.c <<EOCP
7755 #include <stdio.h>
7756 #include <sys/types.h>
7757 #include <signal.h>
7758 $signal_t blech(s) int s; { exit(7); }
7759 $signal_t blech_in_list(s) int s; { exit(4); }
7760 unsigned long dummy_long(p) unsigned long p; { return p; }
7761 unsigned int dummy_int(p) unsigned int p; { return p; }
7762 unsigned short dummy_short(p) unsigned short p; { return p; }
7763 int main()
7764 {
7765         double f;
7766         unsigned long along;
7767         unsigned int aint;
7768         unsigned short ashort;
7769         int result = 0;
7770         char str[16];
7771         
7772         /* Frustrate gcc-2.7.2's optimizer which failed this test with
7773            a direct f = -123. assignment.  gcc-2.8.0 reportedly
7774            optimized the whole file away
7775         */
7776         /* Store the number in a writable string for gcc to pass to 
7777            sscanf under HP/UX.
7778         */
7779         sprintf(str, "-123");
7780         sscanf(str, "%lf", &f);  /* f = -123.; */
7781
7782         signal(SIGFPE, blech);
7783         along = (unsigned long)f;
7784         aint = (unsigned int)f;
7785         ashort = (unsigned short)f;
7786         if (along != (unsigned long)-123)
7787                 result |= 1;
7788         if (aint != (unsigned int)-123)
7789                 result |= 1;
7790         if (ashort != (unsigned short)-123)
7791                 result |= 1;
7792         sprintf(str, "1073741824.");
7793         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
7794         f = f + f;
7795         along = 0;
7796         along = (unsigned long)f;
7797         if (along != 0x80000000)
7798                 result |= 2;
7799         f -= 1.;
7800         along = 0;
7801         along = (unsigned long)f;
7802         if (along != 0x7fffffff)
7803                 result |= 1;
7804         f += 2.;
7805         along = 0;
7806         along = (unsigned long)f;
7807         if (along != 0x80000001)
7808                 result |= 2;
7809         if (result)
7810                 exit(result);
7811         signal(SIGFPE, blech_in_list);
7812         sprintf(str, "123.");
7813         sscanf(str, "%lf", &f);  /* f = 123.; */
7814         along = dummy_long((unsigned long)f);
7815         aint = dummy_int((unsigned int)f);
7816         ashort = dummy_short((unsigned short)f);
7817         if (along != (unsigned long)123)
7818                 result |= 4;
7819         if (aint != (unsigned int)123)
7820                 result |= 4;
7821         if (ashort != (unsigned short)123)
7822                 result |= 4;
7823         exit(result);
7824
7825 }
7826 EOCP
7827 set try
7828 if eval $compile_ok; then
7829         ./try
7830         castflags=$?
7831 else
7832         echo "(I can't seem to compile the test program--assuming it can't)"
7833         castflags=7
7834 fi
7835 case "$castflags" in
7836 0)      val="$define"
7837         echo "Yup, it can."
7838         ;;
7839 *)      val="$undef"
7840         echo "Nope, it can't."
7841         ;;
7842 esac
7843 set d_castneg
7844 eval $setvar
7845 $rm -f try.*
7846
7847 : see if vprintf exists
7848 echo " "
7849 if set vprintf val -f d_vprintf; eval $csym; $val; then
7850         echo 'vprintf() found.' >&4
7851         val="$define"
7852         $cat >vprintf.c <<'EOF'
7853 #include <varargs.h>
7854
7855 int main() { xxx("foo"); }
7856
7857 xxx(va_alist)
7858 va_dcl
7859 {
7860         va_list args;
7861         char buf[10];
7862
7863         va_start(args);
7864         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
7865 }
7866 EOF
7867         set vprintf
7868         if eval $compile && ./vprintf; then
7869                 echo "Your vsprintf() returns (int)." >&4
7870                 val2="$undef"
7871         else
7872                 echo "Your vsprintf() returns (char*)." >&4
7873                 val2="$define"
7874         fi
7875 else
7876         echo 'vprintf() NOT found.' >&4
7877                 val="$undef"
7878                 val2="$undef"
7879 fi
7880 set d_vprintf
7881 eval $setvar
7882 val=$val2
7883 set d_charvspr
7884 eval $setvar
7885
7886 : see if chown exists
7887 set chown d_chown
7888 eval $inlibc
7889
7890 : see if chroot exists
7891 set chroot d_chroot
7892 eval $inlibc
7893
7894 : see if chsize exists
7895 set chsize d_chsize
7896 eval $inlibc
7897
7898 : check for const keyword
7899 echo " "
7900 echo 'Checking to see if your C compiler knows about "const"...' >&4
7901 $cat >const.c <<'EOCP'
7902 typedef struct spug { int drokk; } spug;
7903 int main()
7904 {
7905         const char *foo;
7906         const spug y;
7907 }
7908 EOCP
7909 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7910         val="$define"
7911         echo "Yup, it does."
7912 else
7913         val="$undef"
7914         echo "Nope, it doesn't."
7915 fi
7916 set d_const
7917 eval $setvar
7918
7919 : see if crypt exists
7920 echo " "
7921 if set crypt val -f d_crypt; eval $csym; $val; then
7922         echo 'crypt() found.' >&4
7923         val="$define"
7924         cryptlib=''
7925 else
7926         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7927         if $test -z "$cryptlib"; then
7928                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7929         else
7930                 cryptlib=-lcrypt
7931         fi
7932         if $test -z "$cryptlib"; then
7933                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7934         else
7935                 cryptlib=-lcrypt
7936         fi
7937         if $test -z "$cryptlib"; then
7938                 cryptlib=`./loc libcrypt$_a "" $libpth`
7939         else
7940                 cryptlib=-lcrypt
7941         fi
7942         if $test -z "$cryptlib"; then
7943                 echo 'crypt() NOT found.' >&4
7944                 val="$undef"
7945         else
7946                 val="$define"
7947         fi
7948 fi
7949 set d_crypt
7950 eval $setvar
7951
7952 : get csh whereabouts
7953 case "$csh" in
7954 'csh') val="$undef" ;;
7955 *) val="$define" ;;
7956 esac
7957 set d_csh
7958 eval $setvar
7959 : Respect a hint or command line value for full_csh.
7960 case "$full_csh" in
7961 '') full_csh=$csh ;;
7962 esac
7963
7964 : see if cuserid exists
7965 set cuserid d_cuserid
7966 eval $inlibc
7967
7968 : see if this is a limits.h system
7969 set limits.h i_limits
7970 eval $inhdr
7971
7972 : see if this is a float.h system
7973 set float.h i_float
7974 eval $inhdr
7975
7976 : See if number of significant digits in a double precision number is known
7977 echo " "
7978 $cat >dbl_dig.c <<EOM
7979 #$i_limits I_LIMITS
7980 #$i_float I_FLOAT
7981 #ifdef I_LIMITS
7982 #include <limits.h>
7983 #endif
7984 #ifdef I_FLOAT
7985 #include <float.h>
7986 #endif
7987 #ifdef DBL_DIG
7988 printf("Contains DBL_DIG");
7989 #endif
7990 EOM
7991 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7992 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7993         echo "DBL_DIG found." >&4
7994         val="$define"
7995 else
7996         echo "DBL_DIG NOT found." >&4
7997         val="$undef"
7998 fi
7999 $rm -f dbl_dig.?
8000 set d_dbl_dig
8001 eval $setvar
8002
8003 : see if difftime exists
8004 set difftime d_difftime
8005 eval $inlibc
8006
8007 : see if this is a dirent system
8008 echo " "
8009 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8010         val="$define"
8011         echo "<dirent.h> found." >&4
8012 else
8013         val="$undef"
8014         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8015                 echo "<sys/dir.h> found." >&4
8016                 echo " "
8017         else
8018                 xinc=`./findhdr sys/ndir.h`
8019         fi
8020         echo "<dirent.h> NOT found." >&4
8021 fi
8022 set i_dirent
8023 eval $setvar
8024
8025 : Look for type of directory structure.
8026 echo " "
8027 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8028
8029 case "$direntrytype" in
8030 ''|' ')
8031         case "$i_dirent" in
8032         $define) guess1='struct dirent' ;;
8033         *) guess1='struct direct'  ;;
8034         esac
8035         ;;
8036 *)      guess1="$direntrytype"
8037         ;;
8038 esac
8039
8040 case "$guess1" in
8041 'struct dirent') guess2='struct direct' ;;
8042 *) guess2='struct dirent' ;;
8043 esac
8044                 
8045 if $contains "$guess1" try.c >/dev/null 2>&1; then
8046         direntrytype="$guess1"
8047         echo "Your directory entries are $direntrytype." >&4
8048 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8049         direntrytype="$guess2"
8050         echo "Your directory entries seem to be $direntrytype." >&4
8051 else
8052         echo "I don't recognize your system's directory entries." >&4
8053         rp="What type is used for directory entries on this system?"
8054         dflt="$guess1"
8055         . ./myread
8056         direntrytype="$ans"
8057 fi
8058 $rm -f try.c
8059
8060
8061 : see if the directory entry stores field length
8062 echo " "
8063 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8064 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8065         echo "Good, your directory entry keeps length information in d_namlen." >&4
8066         val="$define"
8067 else
8068         echo "Your directory entry does not know about the d_namlen field." >&4
8069         val="$undef"
8070 fi
8071 set d_dirnamlen
8072 eval $setvar
8073 $rm -f try.c
8074
8075 : see if dlerror exists
8076 xxx_runnm="$runnm"
8077 runnm=false
8078 set dlerror d_dlerror
8079 eval $inlibc
8080 runnm="$xxx_runnm"
8081
8082 : see if dlfcn is available
8083 set dlfcn.h i_dlfcn
8084 eval $inhdr
8085
8086 case "$usedl" in
8087 $define|y|true)
8088         $cat << EOM
8089
8090 On a few systems, the dynamically loaded modules that perl generates and uses
8091 will need a different extension than shared libs. The default will probably
8092 be appropriate.
8093
8094 EOM
8095         case "$dlext" in
8096         '')     dflt="$so" ;;
8097         *)      dflt="$dlext" ;;
8098         esac
8099         rp='What is the extension of dynamically loaded modules'
8100         . ./myread
8101         dlext="$ans"
8102         ;;
8103 *)
8104         dlext="none"
8105         ;;
8106 esac
8107
8108 : Check if dlsym need a leading underscore
8109 echo " "
8110 val="$undef"
8111
8112 case "$dlsrc" in
8113 dl_dlopen.xs)
8114         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8115         $cat >dyna.c <<'EOM'
8116 fred () { }
8117 EOM
8118
8119 $cat >fred.c<<EOM
8120
8121 #include <stdio.h>
8122 #$i_dlfcn I_DLFCN
8123 #ifdef I_DLFCN
8124 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8125 #else
8126 #include <sys/types.h>
8127 #include <nlist.h>
8128 #include <link.h>
8129 #endif
8130
8131 extern int fred() ;
8132
8133 int main()
8134 {
8135     void * handle ;
8136     void * symbol ;
8137 #ifndef RTLD_LAZY
8138     int mode = 1 ;
8139 #else
8140     int mode = RTLD_LAZY ;
8141 #endif
8142     handle = dlopen("./dyna.$dlext", mode) ;
8143     if (handle == NULL) {
8144         printf ("1\n") ;
8145         fflush (stdout) ;
8146         exit(0);
8147     }
8148     symbol = dlsym(handle, "fred") ;
8149     if (symbol == NULL) {
8150         /* try putting a leading underscore */
8151         symbol = dlsym(handle, "_fred") ;
8152         if (symbol == NULL) {
8153             printf ("2\n") ;
8154             fflush (stdout) ;
8155             exit(0);
8156         }
8157         printf ("3\n") ;
8158     }
8159     else
8160         printf ("4\n") ;
8161     fflush (stdout) ;
8162     exit(0);
8163 }
8164 EOM
8165         : Call the object file tmp-dyna.o in case dlext=o.
8166         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8167                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8168                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8169                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8170                 xxx=`./fred`
8171                 case $xxx in
8172                 1)      echo "Test program failed using dlopen." >&4
8173                         echo "Perhaps you should not use dynamic loading." >&4;;
8174                 2)      echo "Test program failed using dlsym." >&4
8175                         echo "Perhaps you should not use dynamic loading." >&4;;
8176                 3)      echo "dlsym needs a leading underscore" >&4
8177                         val="$define" ;;
8178                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8179                 esac
8180         else
8181                 echo "I can't compile and run the test program." >&4
8182                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8183         fi
8184         ;;
8185 esac
8186                 
8187 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8188
8189 set d_dlsymun
8190 eval $setvar
8191
8192 hasproto='varname=$1; func=$2; shift; shift;
8193 while $test $# -ge 2; do
8194         case "$1" in
8195         $define) echo "#include <$2>";;
8196         esac ;
8197     shift 2;
8198 done > try.c;
8199 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8200 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8201         echo "$func() prototype found.";
8202         val="$define";
8203 else
8204         echo "$func() prototype NOT found.";
8205         val="$undef";
8206 fi;
8207 set $varname;
8208 eval $setvar;
8209 $rm -f try.c tryout.c'
8210
8211 : see if prototype for drand48 is available
8212 echo " "
8213 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8214 eval $hasproto
8215
8216 : see if dup2 exists
8217 set dup2 d_dup2
8218 eval $inlibc
8219
8220 : see if eaccess exists
8221 set eaccess d_eaccess
8222 eval $inlibc
8223
8224 : see if endgrent exists
8225 set endgrent d_endgrent
8226 eval $inlibc
8227
8228 : see if endhostent exists
8229 set endhostent d_endhent
8230 eval $inlibc
8231
8232 : see if endnetent exists
8233 set endnetent d_endnent
8234 eval $inlibc
8235
8236 : see if endprotoent exists
8237 set endprotoent d_endpent
8238 eval $inlibc
8239
8240 : see if endpwent exists
8241 set endpwent d_endpwent
8242 eval $inlibc
8243
8244 : see if endservent exists
8245 set endservent d_endsent
8246 eval $inlibc
8247
8248 : see if endspent exists
8249 set endspent d_endspent
8250 eval $inlibc
8251
8252 : Locate the flags for 'open()'
8253 echo " "
8254 $cat >open3.c <<'EOCP'
8255 #include <sys/types.h>
8256 #ifdef I_FCNTL
8257 #include <fcntl.h>
8258 #endif
8259 #ifdef I_SYS_FILE
8260 #include <sys/file.h>
8261 #endif
8262 int main() {
8263         if(O_RDONLY);
8264 #ifdef O_TRUNC
8265         exit(0);
8266 #else
8267         exit(1);
8268 #endif
8269 }
8270 EOCP
8271 : check sys/file.h first to get FREAD on Sun
8272 if $test `./findhdr sys/file.h` && \
8273                 set open3 -DI_SYS_FILE && eval $compile; then
8274         h_sysfile=true;
8275         echo "<sys/file.h> defines the O_* constants..." >&4
8276         if ./open3; then
8277                 echo "and you have the 3 argument form of open()." >&4
8278                 val="$define"
8279         else
8280                 echo "but not the 3 argument form of open().  Oh, well." >&4
8281                 val="$undef"
8282         fi
8283 elif $test `./findhdr fcntl.h` && \
8284                 set open3 -DI_FCNTL && eval $compile; then
8285         h_fcntl=true;
8286         echo "<fcntl.h> defines the O_* constants..." >&4
8287         if ./open3; then
8288                 echo "and you have the 3 argument form of open()." >&4
8289                 val="$define"
8290         else
8291                 echo "but not the 3 argument form of open().  Oh, well." >&4
8292                 val="$undef"
8293         fi
8294 else
8295         val="$undef"
8296         echo "I can't find the O_* constant definitions!  You got problems." >&4
8297 fi
8298 set d_open3
8299 eval $setvar
8300 $rm -f open3*
8301
8302 : see which of string.h or strings.h is needed
8303 echo " "
8304 strings=`./findhdr string.h`
8305 if $test "$strings" && $test -r "$strings"; then
8306         echo "Using <string.h> instead of <strings.h>." >&4
8307         val="$define"
8308 else
8309         val="$undef"
8310         strings=`./findhdr strings.h`
8311         if $test "$strings" && $test -r "$strings"; then
8312                 echo "Using <strings.h> instead of <string.h>." >&4
8313         else
8314                 echo "No string header found -- You'll surely have problems." >&4
8315         fi
8316 fi
8317 set i_string
8318 eval $setvar
8319 case "$i_string" in
8320 "$undef") strings=`./findhdr strings.h`;;
8321 *)        strings=`./findhdr string.h`;;
8322 esac
8323
8324 : check for non-blocking I/O stuff
8325 case "$h_sysfile" in
8326 true) echo "#include <sys/file.h>" > head.c;;
8327 *)
8328         case "$h_fcntl" in
8329         true) echo "#include <fcntl.h>" > head.c;;
8330         *) echo "#include <sys/fcntl.h>" > head.c;;
8331         esac
8332         ;;
8333 esac
8334 echo " "
8335 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8336 case "$o_nonblock" in
8337 '')
8338         $cat head.c > try.c
8339         $cat >>try.c <<'EOCP'
8340 #include <stdio.h>
8341 int main() {
8342 #ifdef O_NONBLOCK
8343         printf("O_NONBLOCK\n");
8344         exit(0);
8345 #endif
8346 #ifdef O_NDELAY
8347         printf("O_NDELAY\n");
8348         exit(0);
8349 #endif
8350 #ifdef FNDELAY
8351         printf("FNDELAY\n");
8352         exit(0);
8353 #endif
8354         exit(0);
8355 }
8356 EOCP
8357         set try
8358         if eval $compile_ok; then
8359                 o_nonblock=`./try`
8360                 case "$o_nonblock" in
8361                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8362                 *) echo "Seems like we can use $o_nonblock.";;
8363                 esac
8364         else
8365                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8366         fi
8367         ;;
8368 *) echo "Using $hint value $o_nonblock.";;
8369 esac
8370 $rm -f try try.* .out core
8371
8372 echo " "
8373 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8374 case "$eagain" in
8375 '')
8376         $cat head.c > try.c
8377         $cat >>try.c <<EOCP
8378 #include <errno.h>
8379 #include <sys/types.h>
8380 #include <signal.h>
8381 #include <stdio.h> 
8382 #define MY_O_NONBLOCK $o_nonblock
8383 #ifndef errno  /* XXX need better Configure test */
8384 extern int errno;
8385 #endif
8386 #$i_unistd I_UNISTD
8387 #ifdef I_UNISTD
8388 #include <unistd.h>
8389 #endif
8390 #ifdef $i_string
8391 #include <string.h>
8392 #else
8393 #include <strings.h>
8394 #endif
8395 $signal_t blech(x) int x; { exit(3); }
8396 EOCP
8397         $cat >> try.c <<'EOCP'
8398 int main()
8399 {
8400         int pd[2];
8401         int pu[2];
8402         char buf[1];
8403         char string[100];
8404
8405         pipe(pd);       /* Down: child -> parent */
8406         pipe(pu);       /* Up: parent -> child */
8407         if (0 != fork()) {
8408                 int ret;
8409                 close(pd[1]);   /* Parent reads from pd[0] */
8410                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8411                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8412                         exit(1);
8413                 signal(SIGALRM, blech);
8414                 alarm(5);
8415                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8416                         exit(2);
8417                 sprintf(string, "%d\n", ret);
8418                 write(2, string, strlen(string));
8419                 alarm(0);
8420 #ifdef EAGAIN
8421                 if (errno == EAGAIN) {
8422                         printf("EAGAIN\n");
8423                         goto ok;
8424                 }
8425 #endif
8426 #ifdef EWOULDBLOCK
8427                 if (errno == EWOULDBLOCK)
8428                         printf("EWOULDBLOCK\n");
8429 #endif
8430         ok:
8431                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8432                 sleep(2);                               /* Give it time to close our pipe */
8433                 alarm(5);
8434                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8435                 alarm(0);
8436                 sprintf(string, "%d\n", ret);
8437                 write(3, string, strlen(string));
8438                 exit(0);
8439         }
8440
8441         close(pd[0]);                   /* We write to pd[1] */
8442         close(pu[1]);                   /* We read from pu[0] */
8443         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8444         close(pd[1]);                   /* Pipe pd is now fully closed! */
8445         exit(0);                                /* Bye bye, thank you for playing! */
8446 }
8447 EOCP
8448         set try
8449         if eval $compile_ok; then
8450                 echo "$startsh" >mtry
8451                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8452                 chmod +x mtry
8453                 ./mtry >/dev/null 2>&1
8454                 case $? in
8455                 0) eagain=`$cat try.out`;;
8456                 1) echo "Could not perform non-blocking setting!";;
8457                 2) echo "I did a successful read() for something that was not there!";;
8458                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8459                 *) echo "Something terribly wrong happened during testing.";;
8460                 esac
8461                 rd_nodata=`$cat try.ret`
8462                 echo "A read() system call with no data present returns $rd_nodata."
8463                 case "$rd_nodata" in
8464                 0|-1) ;;
8465                 *)
8466                         echo "(That's peculiar, fixing that to be -1.)"
8467                         rd_nodata=-1
8468                         ;;
8469                 esac
8470                 case "$eagain" in
8471                 '')
8472                         echo "Forcing errno EAGAIN on read() with no data available."
8473                         eagain=EAGAIN
8474                         ;;
8475                 *)
8476                         echo "Your read() sets errno to $eagain when no data is available."
8477                         ;;
8478                 esac
8479                 status=`$cat try.err`
8480                 case "$status" in
8481                 0) echo "And it correctly returns 0 to signal EOF.";;
8482                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8483                 *) echo "However, your read() returns '$status' on EOF??";;
8484                 esac
8485                 val="$define"
8486                 if test "$status" = "$rd_nodata"; then
8487                         echo "WARNING: you can't distinguish between EOF and no data!"
8488                         val="$undef"
8489                 fi
8490         else
8491                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8492                 eagain=EAGAIN
8493         fi
8494         set d_eofnblk
8495         eval $setvar
8496         ;;
8497 *)
8498         echo "Using $hint value $eagain."
8499         echo "Your read() returns $rd_nodata when no data is present."
8500         case "$d_eofnblk" in
8501         "$define") echo "And you can see EOF because read() returns 0.";;
8502         "$undef") echo "But you can't see EOF status from read() returned value.";;
8503         *)
8504                 echo "(Assuming you can't see EOF status from read anyway.)"
8505                 d_eofnblk=$undef
8506                 ;;
8507         esac
8508         ;;
8509 esac
8510 $rm -f try try.* .out core head.c mtry
8511
8512 : see if fchmod exists
8513 set fchmod d_fchmod
8514 eval $inlibc
8515
8516 : see if fchown exists
8517 set fchown d_fchown
8518 eval $inlibc
8519
8520 : see if this is an fcntl system
8521 set fcntl d_fcntl
8522 eval $inlibc
8523
8524 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8525 while $test $# -ge 2; do
8526         case "$1" in
8527         $define) echo "#include <$2>";;
8528         esac ;
8529     shift 2;
8530 done > try.c;
8531 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8532 set try;
8533 if eval $compile; then
8534         val="$define";
8535 else
8536         val="$undef";
8537 fi;
8538 set $varname;
8539 eval $setvar;
8540 $rm -f try.c try.o'
8541
8542 socketlib=''
8543 sockethdr=''
8544 : see whether socket exists
8545 echo " "
8546 $echo $n "Hmm... $c" >&4
8547 if set socket val -f d_socket; eval $csym; $val; then
8548         echo "Looks like you have Berkeley networking support." >&4
8549         d_socket="$define"
8550         if set setsockopt val -f; eval $csym; $val; then
8551                 d_oldsock="$undef"
8552         else
8553                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8554                 d_oldsock="$define"
8555         fi
8556 else
8557         if $contains socklib libc.list >/dev/null 2>&1; then
8558                 echo "Looks like you have Berkeley networking support." >&4
8559                 d_socket="$define"
8560                 : we will have to assume that it supports the 4.2 BSD interface
8561                 d_oldsock="$undef"
8562         else
8563                 echo "You don't have Berkeley networking in libc$_a..." >&4
8564                 if test "X$d_socket" = "X$define"; then
8565                    echo "...but you seem to believe that you have sockets." >&4
8566                 else
8567                         for net in net socket
8568                         do
8569                                 if test -f /usr/lib/lib$net$_a; then
8570                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8571                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8572                                         if $contains socket libc.list >/dev/null 2>&1; then
8573                                                 d_socket="$define"
8574                                                 socketlib="-l$net"
8575                                                 case "$net" in
8576                                                 net)
8577                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8578                                                         sockethdr="-I/usr/netinclude"
8579                                                         ;;
8580                                                 esac
8581                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8582                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8583                                                         d_oldsock="$undef"
8584                                                 else
8585                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8586                                                         d_oldsock="$define"
8587                                                 fi
8588                                                 break
8589                                         fi
8590                                 fi
8591                         done
8592                         if test "X$d_socket" != "X$define"; then
8593                            echo "or anywhere else I see." >&4
8594                            d_socket="$undef"
8595                            d_oldsock="$undef"
8596                         fi
8597                 fi
8598         fi
8599 fi
8600
8601 : see if socketpair exists
8602 set socketpair d_sockpair
8603 eval $inlibc
8604
8605
8606 echo " "
8607 echo "Checking the availability of certain socket constants..." >& 4
8608 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8609         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8610         $cat >try.c <<EOF
8611 #include <sys/types.h>
8612 #include <sys/socket.h>
8613 int main() {
8614     int i = $ENUM;
8615 }
8616 EOF
8617         val="$undef"
8618         set try; if eval $compile; then
8619                 val="$define"
8620         fi
8621         set d_${enum}; eval $setvar
8622         $rm -f try.c try
8623 done
8624
8625 : see if sys/select.h has to be included
8626 set sys/select.h i_sysselct
8627 eval $inhdr
8628
8629 : see if we should include time.h, sys/time.h, or both
8630 echo " "
8631 if test "X$timeincl" = X; then
8632         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8633         $echo $n "I'm now running the test program...$c"
8634         $cat >try.c <<'EOCP'
8635 #include <sys/types.h>
8636 #ifdef I_TIME
8637 #include <time.h>
8638 #endif
8639 #ifdef I_SYSTIME
8640 #ifdef SYSTIMEKERNEL
8641 #define KERNEL
8642 #endif
8643 #include <sys/time.h>
8644 #endif
8645 #ifdef I_SYSSELECT
8646 #include <sys/select.h>
8647 #endif
8648 int main()
8649 {
8650         struct tm foo;
8651 #ifdef S_TIMEVAL
8652         struct timeval bar;
8653 #endif
8654 #ifdef S_TIMEZONE
8655         struct timezone tzp;
8656 #endif
8657         if (foo.tm_sec == foo.tm_sec)
8658                 exit(0);
8659 #ifdef S_TIMEVAL
8660         if (bar.tv_sec == bar.tv_sec)
8661                 exit(0);
8662 #endif
8663         exit(1);
8664 }
8665 EOCP
8666         flags=''
8667         for s_timezone in '-DS_TIMEZONE' ''; do
8668         sysselect=''
8669         for s_timeval in '-DS_TIMEVAL' ''; do
8670         for i_systimek in '' '-DSYSTIMEKERNEL'; do
8671         for i_time in '' '-DI_TIME'; do
8672         for i_systime in '-DI_SYSTIME' ''; do
8673                 case "$flags" in
8674                 '') $echo $n ".$c"
8675                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8676                         if eval $compile; then
8677                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8678                                 shift
8679                                 flags="$*"
8680                                 echo " "
8681                                 $echo $n "Succeeded with $flags$c"
8682                         fi
8683                         ;;
8684                 esac
8685         done
8686         done
8687         done
8688         done
8689         done
8690         timeincl=''
8691         echo " "
8692         case "$flags" in
8693         *SYSTIMEKERNEL*) i_systimek="$define"
8694                 timeincl=`./findhdr sys/time.h`
8695                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8696         *) i_systimek="$undef";;
8697         esac
8698         case "$flags" in
8699         *I_TIME*) i_time="$define"
8700                 timeincl=`./findhdr time.h`" $timeincl"
8701                 echo "We'll include <time.h>." >&4;;
8702         *) i_time="$undef";;
8703         esac
8704         case "$flags" in
8705         *I_SYSTIME*) i_systime="$define"
8706                 timeincl=`./findhdr sys/time.h`" $timeincl"
8707                 echo "We'll include <sys/time.h>." >&4;;
8708         *) i_systime="$undef";;
8709         esac
8710         $rm -f try.c try
8711 fi
8712
8713 : check for fd_set items
8714 $cat <<EOM
8715
8716 Checking to see how well your C compiler handles fd_set and friends ...
8717 EOM
8718 $cat >fd_set.c <<EOCP
8719 #$i_systime I_SYS_TIME
8720 #$i_sysselct I_SYS_SELECT
8721 #$d_socket HAS_SOCKET
8722 #include <sys/types.h>
8723 #ifdef HAS_SOCKET
8724 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8725 #endif
8726 #ifdef I_SYS_TIME
8727 #include <sys/time.h>
8728 #endif
8729 #ifdef I_SYS_SELECT
8730 #include <sys/select.h>
8731 #endif
8732 int main() {
8733         fd_set fds;
8734
8735 #ifdef TRYBITS
8736         if(fds.fds_bits);
8737 #endif
8738
8739 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8740         exit(0);
8741 #else
8742         exit(1);
8743 #endif
8744 }
8745 EOCP
8746 set fd_set -DTRYBITS
8747 if eval $compile; then
8748         d_fds_bits="$define"
8749         d_fd_set="$define"
8750         echo "Well, your system knows about the normal fd_set typedef..." >&4
8751         if ./fd_set; then
8752                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8753                 d_fd_macros="$define"
8754         else
8755                 $cat >&4 <<'EOM'
8756 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
8757 EOM
8758                 d_fd_macros="$undef"
8759         fi
8760 else
8761         $cat <<'EOM'
8762 Hmm, your compiler has some difficulty with fd_set.  Checking further...
8763 EOM
8764         set fd_set
8765         if eval $compile; then
8766                 d_fds_bits="$undef"
8767                 d_fd_set="$define"
8768                 echo "Well, your system has some sort of fd_set available..." >&4
8769                 if ./fd_set; then
8770                         echo "and you have the normal fd_set macros." >&4
8771                         d_fd_macros="$define"
8772                 else
8773                         $cat <<'EOM'
8774 but not the normal fd_set macros!  Gross!  More work for me...
8775 EOM
8776                         d_fd_macros="$undef"
8777                 fi
8778         else
8779         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
8780                 d_fd_set="$undef"
8781                 d_fds_bits="$undef"
8782                 d_fd_macros="$undef"
8783         fi
8784 fi
8785 $rm -f fd_set*
8786
8787 : see if fgetpos exists
8788 set fgetpos d_fgetpos
8789 eval $inlibc
8790
8791 : see if flock exists
8792 set flock d_flock
8793 eval $inlibc
8794
8795 : see if fork exists
8796 set fork d_fork
8797 eval $inlibc
8798
8799 : see if pathconf exists
8800 set pathconf d_pathconf
8801 eval $inlibc
8802
8803 : see if fpathconf exists
8804 set fpathconf d_fpathconf
8805 eval $inlibc
8806
8807
8808 : check for off64_t
8809 echo " "
8810 echo "Checking to see if your system supports off64_t..." >&4
8811 $cat >try.c <<EOCP
8812 #include <sys/types.h>
8813 #include <unistd.h>
8814 int main() { off64_t x = 7; }'
8815 EOCP
8816 set try
8817 if eval $compile; then
8818         val="$define"
8819         echo "Yes, it does."
8820 else
8821         val="$undef"
8822         echo "No, it doesn't."
8823         case "$lseeksize" in
8824         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
8825         esac
8826 fi
8827 $rm -f try.* try
8828 set d_off64_t
8829 eval $setvar
8830
8831 : check for fpos64_t
8832 echo " "
8833 echo "Checking to see if your system supports fpos64_t..." >&4
8834 $cat >try.c <<EOCP
8835 #include <sys/stdio.h>
8836 int main() { fpos64_t x x = 7; }'
8837 EOCP
8838 set try
8839 if eval $compile; then
8840         val="$define"
8841         echo "Yes, it does."
8842 else
8843         val="$undef"
8844         echo "No, it doesn't."
8845         case "$fpossize" in
8846         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
8847         esac
8848 fi
8849 $rm -f try.* try
8850 set d_fpos64_t
8851 eval $setvar
8852
8853 hasstruct='varname=$1; struct=$2; shift; shift;
8854 while $test $# -ge 2; do
8855         case "$1" in
8856         $define) echo "#include <$2>";;
8857         esac ;
8858     shift 2;
8859 done > try.c;
8860 echo "int main () { struct $struct foo; }" >> try.c;
8861 set try;
8862 if eval $compile; then
8863         val="$define";
8864 else
8865         val="$undef";
8866 fi;
8867 set $varname;
8868 eval $setvar;
8869 $rm -f try.c try.o'
8870
8871 : see if this is a sys/param system
8872 set sys/param.h i_sysparam
8873 eval $inhdr
8874
8875 : see if this is a sys/mount.h system
8876 set sys/mount.h i_sysmount
8877 eval $inhdr
8878
8879 : see if sys/types.h has to be included
8880 set sys/types.h i_systypes
8881 eval $inhdr
8882
8883
8884 echo " "
8885 echo "Checking to see if your system supports struct fs_data..." >&4
8886 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
8887 eval $hasstruct
8888 case "$d_fs_data_s" in
8889 "$define")      echo "Yes, it does."   ;;
8890 *)              echo "No, it doesn't." ;;
8891 esac
8892
8893 : see if fseeko exists
8894 set fseeko d_fseeko
8895 eval $inlibc
8896 case "$longsize" in
8897 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
8898 esac
8899
8900 : see if fsetpos exists
8901 set fsetpos d_fsetpos
8902 eval $inlibc
8903
8904
8905 : see if fstatfs exists
8906 set fstatfs d_fstatfs
8907 eval $inlibc
8908
8909
8910 : see if statvfs exists
8911 set statvfs d_statvfs
8912 eval $inlibc
8913
8914 : see if fstatvfs exists
8915 set fstatvfs d_fstatvfs
8916 eval $inlibc
8917
8918
8919 : see if ftello exists
8920 set ftello d_ftello
8921 eval $inlibc
8922 case "$longsize" in
8923 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
8924 esac
8925
8926 : see if getcwd exists
8927 set getcwd d_getcwd
8928 eval $inlibc
8929
8930 : see if getgrent exists
8931 set getgrent d_getgrent
8932 eval $inlibc
8933
8934 : see if gethostbyaddr exists
8935 set gethostbyaddr d_gethbyaddr
8936 eval $inlibc
8937
8938 : see if gethostbyname exists
8939 set gethostbyname d_gethbyname
8940 eval $inlibc
8941
8942 : see if gethostent exists
8943 set gethostent d_gethent
8944 eval $inlibc
8945
8946 : see how we will look up host name
8947 echo " "
8948 call=''
8949 if set gethostname val -f d_gethname; eval $csym; $val; then
8950         echo 'gethostname() found.' >&4
8951         d_gethname="$define"
8952         call=gethostname
8953 fi
8954 if set uname val -f d_uname; eval $csym; $val; then
8955         if ./xenix; then
8956                 $cat <<'EOM'
8957 uname() was found, but you're running xenix, and older versions of xenix
8958 have a broken uname(). If you don't really know whether your xenix is old
8959 enough to have a broken system call, use the default answer.
8960
8961 EOM
8962                 dflt=y
8963                 case "$d_uname" in
8964                 "$define") dflt=n;;
8965                 esac
8966                 rp='Is your uname() broken?'
8967                 . ./myread
8968                 case "$ans" in
8969                 n*) d_uname="$define"; call=uname;;
8970                 esac
8971         else
8972                 echo 'uname() found.' >&4
8973                 d_uname="$define"
8974                 case "$call" in
8975                 '') call=uname ;;
8976                 esac
8977         fi
8978 fi
8979 case "$d_gethname" in
8980 '') d_gethname="$undef";;
8981 esac
8982 case "$d_uname" in
8983 '') d_uname="$undef";;
8984 esac
8985 case "$d_uname$d_gethname" in
8986 *define*)
8987         dflt=n
8988         cat <<EOM
8989  
8990 Every now and then someone has a $call() that lies about the hostname
8991 but can't be fixed for political or economic reasons.  If you wish, I can
8992 pretend $call() isn't there and maybe compute hostname at run-time
8993 thanks to the '$phostname' command.
8994
8995 EOM
8996         rp="Shall I ignore $call() from now on?"
8997         . ./myread
8998         case "$ans" in
8999         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9000         esac;;
9001 esac
9002 case "$phostname" in
9003 '') aphostname='';;
9004 *) case "$aphostname" in
9005         /*) ;;
9006         *) set X $phostname
9007                 shift
9008                 file=$1
9009                 shift
9010                 file=`./loc $file $file $pth`
9011                 aphostname=`echo $file $*`
9012                 ;;
9013         esac
9014         ;;
9015 esac
9016 case "$d_uname$d_gethname" in
9017 *define*) ;;
9018 *)
9019         case "$phostname" in
9020         '')
9021                 echo "There will be no way for $package to get your hostname." >&4;;
9022         *)
9023         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9024                 ;;
9025         esac;;
9026 esac
9027 case "$d_phostname" in
9028 '') d_phostname="$undef";;
9029 esac
9030
9031 : see if this is a netdb.h system
9032 set netdb.h i_netdb
9033 eval $inhdr
9034
9035 : see if prototypes for various gethostxxx netdb.h functions are available
9036 echo " "
9037 set d_gethostprotos gethostent $i_netdb netdb.h
9038 eval $hasproto
9039
9040 : see if getlogin exists
9041 set getlogin d_getlogin
9042 eval $inlibc
9043
9044 : see if getmnt exists
9045 set getmnt d_getmnt
9046 eval $inlibc
9047
9048 : see if getmntent exists
9049 set getmntent d_getmntent
9050 eval $inlibc
9051
9052 : see if getnetbyaddr exists
9053 set getnetbyaddr d_getnbyaddr
9054 eval $inlibc
9055
9056 : see if getnetbyname exists
9057 set getnetbyname d_getnbyname
9058 eval $inlibc
9059
9060 : see if getnetent exists
9061 set getnetent d_getnent
9062 eval $inlibc
9063
9064 : see if prototypes for various getnetxxx netdb.h functions are available
9065 echo " "
9066 set d_getnetprotos getnetent $i_netdb netdb.h
9067 eval $hasproto
9068
9069
9070 : see if getprotobyname exists
9071 set getprotobyname d_getpbyname
9072 eval $inlibc
9073
9074 : see if getprotobynumber exists
9075 set getprotobynumber d_getpbynumber
9076 eval $inlibc
9077
9078 : see if getprotoent exists
9079 set getprotoent d_getpent
9080 eval $inlibc
9081
9082 : see if getpgid exists
9083 set getpgid d_getpgid
9084 eval $inlibc
9085
9086 : see if getpgrp2 exists
9087 set getpgrp2 d_getpgrp2
9088 eval $inlibc
9089
9090 : see if getppid exists
9091 set getppid d_getppid
9092 eval $inlibc
9093
9094 : see if getpriority exists
9095 set getpriority d_getprior
9096 eval $inlibc
9097
9098 : see if prototypes for various getprotoxxx netdb.h functions are available
9099 echo " "
9100 set d_getprotoprotos getprotoent $i_netdb netdb.h
9101 eval $hasproto
9102
9103 : see if getpwent exists
9104 set getpwent d_getpwent
9105 eval $inlibc
9106
9107
9108 : see if getservbyname exists
9109 set getservbyname d_getsbyname
9110 eval $inlibc
9111
9112 : see if getservbyport exists
9113 set getservbyport d_getsbyport
9114 eval $inlibc
9115
9116 : see if getservent exists
9117 set getservent d_getsent
9118 eval $inlibc
9119
9120 : see if prototypes for various getservxxx netdb.h functions are available
9121 echo " "
9122 set d_getservprotos getservent $i_netdb netdb.h
9123 eval $hasproto
9124
9125 : see if getspent exists
9126 set getspent d_getspent
9127 eval $inlibc
9128
9129 : see if getspnam exists
9130 set getspnam d_getspnam
9131 eval $inlibc
9132
9133 : see if gettimeofday or ftime exists
9134 set gettimeofday d_gettimeod
9135 eval $inlibc
9136 case "$d_gettimeod" in
9137 "$undef")
9138         set ftime d_ftime 
9139         eval $inlibc
9140         ;;
9141 *)
9142         val="$undef"; set d_ftime; eval $setvar
9143         ;;
9144 esac
9145 case "$d_gettimeod$d_ftime" in
9146 "$undef$undef")
9147         echo " "
9148         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9149         ;;
9150 esac
9151
9152 : see if this is an grp system
9153 set grp.h i_grp
9154 eval $inhdr
9155
9156 case "$i_grp" in
9157 $define)
9158         xxx=`./findhdr grp.h`
9159         $cppstdin $cppflags $cppminus < $xxx >$$.h
9160
9161         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9162                 val="$define"
9163         else
9164                 val="$undef"
9165         fi
9166         set d_grpasswd
9167         eval $setvar
9168
9169         $rm -f $$.h
9170         ;;
9171 *)
9172         val="$undef";
9173         set d_grpasswd; eval $setvar
9174         ;;
9175 esac
9176
9177 : see if hasmntopt exists
9178 set hasmntopt d_hasmntopt
9179 eval $inlibc
9180
9181 : see if this is a netinet/in.h or sys/in.h system
9182 set netinet/in.h i_niin sys/in.h i_sysin
9183 eval $inhdr
9184
9185 : see if arpa/inet.h has to be included
9186 set arpa/inet.h i_arpainet
9187 eval $inhdr
9188
9189 : see if htonl --and friends-- exists
9190 val=''
9191 set htonl val
9192 eval $inlibc
9193
9194 : Maybe they are macros.
9195 case "$val" in
9196 $undef)
9197         $cat >htonl.c <<EOM
9198 #include <stdio.h>
9199 #include <sys/types.h>
9200 #$i_niin I_NETINET_IN
9201 #$i_sysin I_SYS_IN
9202 #$i_arpainet I_ARPA_INET
9203 #ifdef I_NETINET_IN
9204 #include <netinet/in.h>
9205 #endif
9206 #ifdef I_SYS_IN
9207 #include <sys/in.h>
9208 #endif
9209 #ifdef I_ARPA_INET
9210 #include <arpa/inet.h>
9211 #endif
9212 #ifdef htonl
9213 printf("Defined as a macro.");
9214 #endif
9215 EOM
9216         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9217         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9218                 val="$define"
9219                 echo "But it seems to be defined as a macro." >&4
9220         fi
9221         $rm -f htonl.?
9222         ;;
9223 esac
9224 set d_htonl
9225 eval $setvar
9226
9227 : see if iconv exists
9228 set iconv d_iconv
9229 eval $inlibc
9230
9231 : index or strchr
9232 echo " "
9233 if set index val -f; eval $csym; $val; then
9234         if set strchr val -f d_strchr; eval $csym; $val; then
9235                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9236                         val="$define"
9237                         vali="$undef"
9238                         echo "strchr() found." >&4
9239                 else
9240                         val="$undef"
9241                         vali="$define"
9242                         echo "index() found." >&4
9243                 fi
9244         else
9245                 val="$undef"
9246                 vali="$define"
9247                 echo "index() found." >&4
9248         fi
9249 else
9250         if set strchr val -f d_strchr; eval $csym; $val; then
9251                 val="$define"
9252                 vali="$undef"
9253                 echo "strchr() found." >&4
9254         else
9255                 echo "No index() or strchr() found!" >&4
9256                 val="$undef"
9257                 vali="$undef"
9258         fi
9259 fi
9260 set d_strchr; eval $setvar
9261 val="$vali"
9262 set d_index; eval $setvar
9263
9264 : check whether inet_aton exists
9265 set inet_aton d_inetaton
9266 eval $inlibc
9267
9268 : see if inttypes.h is available
9269 : we want a real compile instead of Inhdr because some systems
9270 : have an inttypes.h which includes non-existent headers
9271 echo " "
9272 $cat >try.c <<EOCP
9273 #include <inttypes.h>
9274 int main() {
9275         static int32_t foo32 = 0x12345678;
9276 }
9277 EOCP
9278 set try
9279 if eval $compile; then
9280         echo "<inttypes.h> found." >&4
9281         val="$define"
9282 else
9283         echo "<inttypes.h> NOT found." >&4
9284         val="$undef"
9285 fi
9286 $rm -f try.c try
9287 set i_inttypes
9288 eval $setvar
9289
9290 : check for int64_t
9291 echo " "
9292 $echo $n "Checking to see if your system supports int64_t...$c" >&4
9293 $cat >try.c <<EOCP
9294 #include <sys/types.h>
9295 #$i_inttypes I_INTTYPES
9296 #ifdef I_INTTYPES
9297 #include <inttypes.h>
9298 #endif
9299 int main() { int64_t x = 7; }
9300 EOCP
9301 set try
9302 if eval $compile; then
9303         val="$define"
9304         echo " Yes, it does." >&4
9305 else
9306         val="$undef"
9307         echo " No, it doesn't." >&4
9308 fi
9309 $rm -f try try.*
9310 set d_int64t
9311 eval $setvar
9312
9313 : Look for isascii
9314 echo " "
9315 $cat >isascii.c <<'EOCP'
9316 #include <stdio.h>
9317 #include <ctype.h>
9318 int main() {
9319         int c = 'A';
9320         if (isascii(c))
9321                 exit(0);
9322         else
9323                 exit(1);
9324 }
9325 EOCP
9326 set isascii
9327 if eval $compile; then
9328         echo "isascii() found." >&4
9329         val="$define"
9330 else
9331         echo "isascii() NOT found." >&4
9332         val="$undef"
9333 fi
9334 set d_isascii
9335 eval $setvar
9336 $rm -f isascii*
9337
9338 : see if killpg exists
9339 set killpg d_killpg
9340 eval $inlibc
9341
9342 : see if lchown exists
9343 echo " "
9344 $cat > try.c <<'EOCP'
9345 /* System header to define __stub macros and hopefully few prototypes,
9346     which can conflict with char lchown(); below.  */
9347 #include <assert.h>
9348 /* Override any gcc2 internal prototype to avoid an error.  */
9349 /* We use char because int might match the return type of a gcc2
9350    builtin and then its argument prototype would still apply.  */
9351 char lchown();
9352 int main() {
9353     /*  The GNU C library defines this for functions which it implements
9354         to always fail with ENOSYS.  Some functions are actually named
9355         something starting with __ and the normal name is an alias.  */
9356 #if defined (__stub_lchown) || defined (__stub___lchown)
9357 choke me
9358 #else
9359 lchown();
9360 #endif
9361 ; return 0; }
9362 EOCP
9363 set try
9364 if eval $compile; then
9365     $echo "lchown() found." >&4
9366     val="$define"
9367 else
9368     $echo "lchown() NOT found." >&4
9369     val="$undef"
9370 fi
9371 set d_lchown
9372 eval $setvar
9373
9374 : See if number of significant digits in a double precision number is known
9375 echo " "
9376 $cat >ldbl_dig.c <<EOM
9377 #$i_limits I_LIMITS
9378 #$i_float I_FLOAT
9379 #ifdef I_LIMITS
9380 #include <limits.h>
9381 #endif
9382 #ifdef I_FLOAT
9383 #include <float.h>
9384 #endif
9385 #ifdef LDBL_DIG
9386 printf("Contains LDBL_DIG");
9387 #endif
9388 EOM
9389 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9390 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9391         echo "LDBL_DIG found." >&4
9392         val="$define"
9393 else
9394         echo "LDBL_DIG NOT found." >&4
9395         val="$undef"
9396 fi
9397 $rm -f ldbl_dig.?
9398 set d_ldbl_dig
9399 eval $setvar
9400
9401 : see if link exists
9402 set link d_link
9403 eval $inlibc
9404
9405 : see if localeconv exists
9406 set localeconv d_locconv
9407 eval $inlibc
9408
9409 : see if lockf exists
9410 set lockf d_lockf
9411 eval $inlibc
9412
9413 : check for long long
9414 echo " "
9415 $echo $n "Checking to see if your system supports long long..." $c >&4
9416 echo 'int main() { long long x = 7; return 0; }' > try.c
9417 set try
9418 if eval $compile; then
9419         val="$define"
9420         echo " Yes, it does." >&4
9421 else
9422         val="$undef"
9423         echo " No, it doesn't." >&4
9424 fi
9425 $rm try.*
9426 set d_longlong
9427 eval $setvar
9428
9429 : check for length of long long
9430 case "${d_longlong}${longlongsize}" in
9431 $define)
9432         echo " "
9433         $echo $n "Checking to see how big your long longs are..." $c >&4
9434         $cat >try.c <<'EOCP'
9435 #include <stdio.h>
9436 int main()
9437 {
9438     printf("%d\n", (int)sizeof(long long));
9439     return(0);
9440 }
9441 EOCP
9442         set try
9443         if eval $compile_ok; then
9444                 longlongsize=`./try$exe_ext`
9445                 $echo " $longlongsize bytes." >&4
9446         else
9447                 dflt='8'
9448                 echo " "
9449                 echo "(I can't seem to compile the test program.  Guessing...)"
9450                 rp="What is the size of a long long (in bytes)?"
9451                 . ./myread
9452                 longlongsize="$ans"
9453         fi
9454         if $test "X$longsize" = "X$longlongsize"; then
9455                 echo "(That isn't any different from an ordinary long.)"
9456         fi      
9457         ;;
9458 esac
9459 $rm -f try.* try
9460
9461 : see if lstat exists
9462 set lstat d_lstat
9463 eval $inlibc
9464
9465 : see if mblen exists
9466 set mblen d_mblen
9467 eval $inlibc
9468
9469 : see if mbstowcs exists
9470 set mbstowcs d_mbstowcs
9471 eval $inlibc
9472
9473 : see if mbtowc exists
9474 set mbtowc d_mbtowc
9475 eval $inlibc
9476
9477 : see if memchr exists
9478 set memchr d_memchr
9479 eval $inlibc
9480
9481 : see if memcmp exists
9482 set memcmp d_memcmp
9483 eval $inlibc
9484
9485 : see if memcpy exists
9486 set memcpy d_memcpy
9487 eval $inlibc
9488
9489 : see if memmove exists
9490 set memmove d_memmove
9491 eval $inlibc
9492
9493 : see if memset exists
9494 set memset d_memset
9495 eval $inlibc
9496
9497 : see if mkdir exists
9498 set mkdir d_mkdir
9499 eval $inlibc
9500
9501 : see if mkdtemp exists
9502 set mkdtemp d_mkdtemp
9503 eval $inlibc
9504
9505 : see if mkfifo exists
9506 set mkfifo d_mkfifo
9507 eval $inlibc
9508
9509 : see if mkstemp exists
9510 set mkstemp d_mkstemp
9511 eval $inlibc
9512
9513 : see if mkstemps exists
9514 set mkstemps d_mkstemps
9515 eval $inlibc
9516
9517 : see if mktime exists
9518 set mktime d_mktime
9519 eval $inlibc
9520
9521 : see if this is a sys/mman.h system
9522 set sys/mman.h i_sysmman
9523 eval $inhdr
9524
9525 : see if mmap exists
9526 set mmap d_mmap
9527 eval $inlibc
9528 : see what shmat returns
9529 : default to something harmless
9530 mmaptype='void *'
9531 case "$i_sysmman$d_mmap" in
9532 "$define$define")
9533         $cat >mmap.c <<'END'
9534 #include <sys/mman.h>
9535 void *mmap();
9536 END
9537         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9538                 mmaptype='void *'
9539         else
9540                 mmaptype='caddr_t'
9541         fi
9542         echo "and it returns ($mmaptype)." >&4
9543         ;;
9544 esac
9545
9546
9547
9548 : see if mprotect exists
9549 set mprotect d_mprotect
9550 eval $inlibc
9551
9552 : see if msgctl exists
9553 set msgctl d_msgctl
9554 eval $inlibc
9555
9556 : see if msgget exists
9557 set msgget d_msgget
9558 eval $inlibc
9559
9560 : see if msgsnd exists
9561 set msgsnd d_msgsnd
9562 eval $inlibc
9563
9564 : see if msgrcv exists
9565 set msgrcv d_msgrcv
9566 eval $inlibc
9567
9568 : see how much of the 'msg*(2)' library is present.
9569 h_msg=true
9570 echo " "
9571 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9572 *"$undef"*) h_msg=false;;
9573 esac
9574 case "$osname" in
9575 freebsd)
9576     case "`ipcs 2>&1`" in
9577     "SVID messages"*"not configured"*)
9578         echo "Your $osname does not have the msg*(2) configured." >&4
9579         h_msg=false
9580         val="$undef"
9581         set msgctl d_msgctl
9582         eval $setvar
9583         set msgget d_msgget
9584         eval $setvar
9585         set msgsnd d_msgsnd
9586         eval $setvar
9587         set msgrcv d_msgrcv
9588         eval $setvar
9589         ;;
9590     esac
9591     ;;
9592 esac
9593 : we could also check for sys/ipc.h ...
9594 if $h_msg && $test `./findhdr sys/msg.h`; then
9595         echo "You have the full msg*(2) library." >&4
9596         val="$define"
9597 else
9598         echo "You don't have the full msg*(2) library." >&4
9599         val="$undef"
9600 fi
9601 set d_msg
9602 eval $setvar
9603
9604 : see if msync exists
9605 set msync d_msync
9606 eval $inlibc
9607
9608 : see if munmap exists
9609 set munmap d_munmap
9610 eval $inlibc
9611
9612 : see if nice exists
9613 set nice d_nice
9614 eval $inlibc
9615
9616
9617 echo " "
9618 echo "Checking which 64-bit integer type we could use..." >&4
9619
9620 case "$intsize" in
9621 8) val=int
9622    set quadtype
9623    eval $setvar
9624    val='"unsigned int"'
9625    set uquadtype
9626    eval $setvar
9627    quadkind=1
9628    ;;
9629 *) case "$longsize" in
9630    8) val=long
9631       set quadtype
9632       eval $setvar
9633       val='"unsigned long"'
9634       set uquadtype
9635       eval $setvar
9636       quadkind=2
9637       ;;
9638    *) case "$d_longlong:$longlongsize" in
9639       define:8)
9640         val='"long long"'
9641         set quadtype
9642         eval $setvar
9643         val='"unsigned long long"'
9644         set uquadtype
9645         eval $setvar
9646         quadkind=3
9647         ;;
9648       *) case "$d_int64t" in
9649          define)
9650            val=int64_t
9651            set quadtype
9652            eval $setvar
9653            val=uint64_t
9654            set uquadtype
9655            eval $setvar
9656            quadkind=4
9657            ;;
9658          esac
9659          ;;
9660       esac
9661       ;;
9662    esac
9663    ;;
9664 esac
9665
9666 case "$quadtype" in
9667 '')     echo "Alas, no 64-bit integer types in sight." >&4
9668         d_quad="$undef"
9669         ;;
9670 *)      if test X"$use64bits" = Xdefine -o X"$longsize" = X8; then
9671             verb="will"
9672         else
9673             verb="could"
9674         fi
9675         echo "We $verb use '$quadtype' for 64-bit integers." >&4
9676         d_quad="$define"
9677         ;;
9678 esac
9679
9680 : check for length of character
9681 echo " "
9682 case "$charsize" in
9683 '')
9684         echo "Checking to see how big your characters are (hey, you never know)..." >&4
9685         $cat >try.c <<'EOCP'
9686 #include <stdio.h>
9687 int main()
9688 {
9689     printf("%d\n", (int)sizeof(char));
9690     exit(0);
9691 }
9692 EOCP
9693         set try
9694         if eval $compile_ok; then
9695                 dflt=`./try`
9696         else
9697                 dflt='1'
9698                 echo "(I can't seem to compile the test program.  Guessing...)"
9699         fi
9700         ;;
9701 *)
9702         dflt="$charsize"
9703         ;;
9704 esac
9705 rp="What is the size of a character (in bytes)?"
9706 . ./myread
9707 charsize="$ans"
9708 $rm -f try.c try
9709
9710
9711 echo " "
9712 $echo "Choosing the C types to be used for Perl's internal types..." >&4
9713
9714 case "$use64bits:$d_quad:$quadtype" in
9715 define:define:?*)
9716         ivtype="$quadtype"
9717         uvtype="$uquadtype"
9718         ivsize=8
9719         uvsize=8
9720         ;;
9721 *)      ivtype="long"
9722         uvtype="unsigned long"
9723         ivsize=$longsize
9724         uvsize=$longsize
9725         ;;
9726 esac
9727
9728 case "$uselongdouble:$d_longdbl" in
9729 define:define)
9730         nvtype="long double"
9731         nvsize=$longdblsize
9732         ;;
9733 *)      nvtype=double
9734         nvsize=$doublesize
9735         ;;
9736 esac
9737
9738 $echo "(IV will be "$ivtype", $ivsize bytes)"
9739 $echo "(UV will be "$uvtype", $uvsize bytes)"
9740 $echo "(NV will be "$nvtype", $nvsize bytes)"
9741
9742 $cat >try.c <<EOCP
9743 #$i_inttypes I_INTTYPES
9744 #ifdef I_INTTYPES
9745 #include <inttypes.h>
9746 #endif
9747 #include <stdio.h>
9748 int main() {
9749 #ifdef INT8
9750    int8_t i =  INT8_MAX;
9751   uint8_t u = UINT8_MAX;
9752   printf("int8_t\n");
9753 #endif
9754 #ifdef INT16
9755    int16_t i =  INT16_MAX;
9756   uint16_t i = UINT16_MAX;
9757   printf("int16_t\n");
9758 #endif
9759 #ifdef INT32
9760    int32_t i =  INT32_MAX;
9761   uint32_t u = UINT32_MAX;
9762   printf("int32_t\n");
9763 #endif
9764 }
9765 EOCP
9766
9767 case "$i8type" in
9768 '')     case "$charsize" in
9769         1)      i8type=char
9770                 u8type="unsigned char"
9771                 i8size=$charsize
9772                 u8size=$charsize
9773                 ;;
9774         esac
9775         ;;
9776 esac
9777 case "$i8type" in
9778 '')     set try -DINT8
9779         if eval $compile; then
9780                 case "`./try$exe_ext`" in
9781                 int8_t) i8type=int8_t
9782                         u8type=uint8_t
9783                         i8size=1
9784                         u8size=1
9785                         ;;
9786                 esac
9787         fi
9788         ;;
9789 esac
9790 case "$i8type" in
9791 '')     if $test $charsize -ge 1; then
9792                 i8type=char
9793                 u8type="unsigned char"
9794                 i8size=$charsize
9795                 u8size=$charsize
9796         fi
9797         ;;
9798 esac
9799
9800 case "$i16type" in
9801 '')     case "$shortsize" in
9802         2)      i16type=short
9803                 u16type="unsigned short"
9804                 i16size=$shortsize
9805                 u16size=$shortsize
9806                 ;;
9807         esac
9808         ;;
9809 esac
9810 case "$i16type" in
9811 '')     set try -DINT16
9812         if eval $compile; then
9813                 case "`./try$exe_ext`" in
9814                 int16_t)
9815                         i16type=int16_t
9816                         u16type=uint16_t
9817                         i16size=2
9818                         u16size=2
9819                         ;;
9820                 esac
9821         fi
9822         ;;
9823 esac
9824 case "$i16type" in
9825 '')     if $test $shortsize -ge 2; then
9826                 i16type=short
9827                 u16type="unsigned short"
9828                 i16size=$shortsize
9829                 u16size=$shortsize
9830         fi
9831         ;;
9832 esac
9833
9834 case "$i32type" in
9835 '')     case "$longsize" in
9836         4)      i32type=long
9837                 u32type="unsigned long"
9838                 i32size=$longsize
9839                 u32size=$longsize
9840                 ;;
9841         *)      case "$intsize" in
9842                 4)      i32type=int
9843                         u32type="unsigned int"
9844                         i32size=$intsize
9845                         u32size=$intsize
9846                         ;;
9847                 esac
9848                 ;;
9849         esac
9850         ;;
9851 esac
9852 case "$i32type" in
9853 '')     set try -DINT32
9854         if eval $compile; then
9855                 case "`./try$exe_ext`" in
9856                 int32_t)
9857                         i32type=int32_t
9858                         u32type=uint32_t
9859                         i32size=4
9860                         u32size=4
9861                         ;;
9862                 esac
9863         fi
9864         ;;
9865 esac
9866 case "$i32type" in
9867 '')     if $test $intsize -ge 4; then
9868                 i32type=int
9869                 u32type="unsigned int"
9870                 i32size=$intsize
9871                 u32size=$intsize
9872         fi
9873         ;;
9874 esac
9875
9876 case "$i64type" in
9877 '')     case "$d_quad:$quadtype" in
9878         define:?*)
9879                 i64type="$quadtype"
9880                 u64type="$uquadtype"
9881                 i64size=8
9882                 u64size=8
9883                 ;;
9884         esac
9885         ;;
9886 esac
9887
9888 $echo "Checking whether your NVs can preserve your UVs..." >&4
9889 $cat <<EOP >try.c
9890 #include <stdio.h>
9891 int main() {
9892     $uvtype k = ($uvtype)~0, l;
9893     $nvtype d;
9894     l = k;
9895     d = ($nvtype)l;
9896     l = ($uvtype)d;
9897     if (l == k)
9898        printf("preserve\n");
9899     exit(0);
9900 }
9901 EOP
9902 set try
9903 if eval $compile; then
9904         case "`./try$exe_ext`" in
9905         preserve) d_nv_preserves_uv="$define" ;;
9906         esac
9907 fi      
9908 case "$d_nv_preserves_uv" in
9909 $define) $echo "Yes, they can."  2>&1 ;;
9910 *)       $echo "No, they can't." 2>&1
9911          d_nv_preserves_uv="$undef"
9912          ;;
9913 esac
9914
9915 $rm -f try.* try
9916
9917 : see if POSIX threads are available
9918 set pthread.h i_pthread
9919 eval $inhdr
9920
9921
9922
9923
9924 : how to create joinable pthreads
9925 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
9926         echo " "
9927         echo "Checking what constant to use for creating joinable pthreads..." >&4 
9928         $cat >try.c <<'EOCP'
9929 #include <pthread.h>
9930 int main() {
9931     int detachstate = JOINABLE;
9932 }
9933 EOCP
9934         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
9935         if eval $compile; then
9936                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
9937                 val="$undef" # Yes, undef.
9938                 set d_old_pthread_create_joinable
9939                 eval $setvar
9940                 val=""
9941                 set old_pthread_create_joinable
9942                 eval $setvar
9943         else
9944                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
9945                 if eval $compile; then
9946                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
9947                         val="$define"
9948                         set d_old_pthread_create_joinable
9949                         eval $setvar
9950                         val=PTHREAD_CREATE_UNDETACHED
9951                         set old_pthread_create_joinable
9952                         eval $setvar
9953                 else            
9954                         set try -DJOINABLE=__UNDETACHED
9955                         if eval $compile; then
9956                                 echo "You seem to use __UNDETACHED." >&4
9957                                 val="$define"
9958                                 set d_old_pthread_create_joinable
9959                                 eval $setvar
9960                                 val=__UNDETACHED
9961                                 set old_pthread_create_joinable
9962                                 eval $setvar
9963                         else
9964                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
9965                                 val="$define"
9966                                 set d_old_pthread_create_joinable
9967                                 eval $setvar
9968                                 val=0
9969                                 set old_pthread_create_joinable
9970                                 eval $setvar
9971                         fi
9972                 fi
9973         fi
9974         $rm -f try try.*
9975 else
9976     d_old_pthread_create_joinable="$undef"
9977     old_pthread_create_joinable=""
9978 fi
9979
9980 : see if pause exists
9981 set pause d_pause
9982 eval $inlibc
9983
9984 : see if pipe exists
9985 set pipe d_pipe
9986 eval $inlibc
9987
9988 : see if poll exists
9989 set poll d_poll
9990 eval $inlibc
9991
9992
9993 : see whether the various POSIXish _yields exist
9994 $cat >try.c <<EOP
9995 #include <pthread.h>
9996 #include <stdio.h>
9997 int main() {
9998 #ifdef SCHED_YIELD
9999         sched_yield();
10000 #else
10001 #ifdef PTHREAD_YIELD
10002         pthread_yield();
10003 #else
10004 #ifdef PTHREAD_YIELD_NULL
10005         pthread_yield(NULL);
10006 #endif
10007 #endif
10008 #endif
10009 }
10010 EOP
10011 : see if sched_yield exists
10012 set try -DSCHED_YIELD
10013 if eval $compile; then
10014     val="$define"
10015     sched_yield='sched_yield()'
10016 else
10017     val="$undef"
10018 fi
10019 case "$usethreads" in
10020 $define)
10021         case "$val" in
10022         $define) echo 'sched_yield() found.' >&4        ;;
10023         *)       echo 'sched_yield() NOT found.' >&4    ;;
10024         esac
10025 esac
10026 set d_sched_yield
10027 eval $setvar
10028
10029 : see if pthread_yield exists
10030 set try -DPTHREAD_YIELD
10031 if eval $compile; then
10032     val="$define"
10033     case "$sched_yield" in
10034     '') sched_yield='pthread_yield()' ;;
10035     esac
10036 else
10037     set try -DPTHREAD_YIELD_NULL
10038     if eval $compile; then
10039         val="$define"
10040         case "$sched_yield" in
10041         '') sched_yield='pthread_yield(NULL)' ;;
10042         esac
10043     else
10044         val="$undef"
10045     fi
10046 fi
10047 case "$usethreads" in
10048 $define)
10049         case "$val" in
10050         $define) echo 'pthread_yield() found.' >&4      ;;
10051         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10052         esac
10053         ;;
10054 esac
10055 set d_pthread_yield
10056 eval $setvar
10057
10058 case "$sched_yield" in
10059 '') sched_yield=undef ;;
10060 esac
10061
10062 $rm -f try try.*
10063
10064 : see if this is a pwd.h system
10065 set pwd.h i_pwd
10066 eval $inhdr
10067
10068 case "$i_pwd" in
10069 $define)
10070         xxx=`./findhdr pwd.h`
10071         $cppstdin $cppflags $cppminus < $xxx >$$.h
10072
10073         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10074                 val="$define"
10075         else
10076                 val="$undef"
10077         fi
10078         set d_pwquota
10079         eval $setvar
10080
10081         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10082                 val="$define"
10083         else
10084                 val="$undef"
10085         fi
10086         set d_pwage
10087         eval $setvar
10088
10089         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10090                 val="$define"
10091         else
10092                 val="$undef"
10093         fi
10094         set d_pwchange
10095         eval $setvar
10096
10097         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10098                 val="$define"
10099         else
10100                 val="$undef"
10101         fi
10102         set d_pwclass
10103         eval $setvar
10104
10105         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10106                 val="$define"
10107         else
10108                 val="$undef"
10109         fi
10110         set d_pwexpire
10111         eval $setvar
10112
10113         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10114                 val="$define"
10115         else
10116                 val="$undef"
10117         fi
10118         set d_pwcomment
10119         eval $setvar
10120
10121         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10122                 val="$define"
10123         else
10124                 val="$undef"
10125         fi
10126         set d_pwgecos
10127         eval $setvar
10128
10129         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10130                 val="$define"
10131         else
10132                 val="$undef"
10133         fi
10134         set d_pwpasswd
10135         eval $setvar
10136
10137         $rm -f $$.h
10138         ;;
10139 *)
10140         val="$undef"; 
10141         set d_pwquota; eval $setvar
10142         set d_pwage; eval $setvar
10143         set d_pwchange; eval $setvar
10144         set d_pwclass; eval $setvar
10145         set d_pwexpire; eval $setvar
10146         set d_pwcomment; eval $setvar
10147         set d_pwgecos; eval $setvar
10148         set d_pwpasswd; eval $setvar
10149         ;;
10150 esac
10151
10152 : see if readdir and friends exist
10153 set readdir d_readdir
10154 eval $inlibc
10155 set seekdir d_seekdir
10156 eval $inlibc
10157 set telldir d_telldir
10158 eval $inlibc
10159 set rewinddir d_rewinddir
10160 eval $inlibc
10161
10162 : see if readlink exists
10163 set readlink d_readlink
10164 eval $inlibc
10165
10166 : see if rename exists
10167 set rename d_rename
10168 eval $inlibc
10169
10170 : see if rmdir exists
10171 set rmdir d_rmdir
10172 eval $inlibc
10173
10174 : see if memory.h is available.
10175 val=''
10176 set memory.h val
10177 eval $inhdr
10178
10179 : See if it conflicts with string.h
10180 case "$val" in
10181 $define)
10182         case "$strings" in
10183         '') ;;
10184         *)
10185                 $cppstdin $cppflags $cppminus < $strings > mem.h
10186                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10187                         echo " "
10188                         echo "We won't be including <memory.h>."
10189                         val="$undef"
10190                 fi
10191                 $rm -f mem.h
10192                 ;;
10193         esac
10194 esac
10195 set i_memory
10196 eval $setvar
10197
10198 : can bcopy handle overlapping blocks?
10199 val="$undef"
10200 case "$d_bcopy" in
10201 "$define")
10202         echo " "
10203         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10204         $cat >try.c <<EOCP
10205 #$i_memory I_MEMORY
10206 #$i_stdlib I_STDLIB
10207 #$i_string I_STRING
10208 #$i_unistd I_UNISTD
10209 EOCP
10210         $cat >>try.c <<'EOCP'
10211 #include <stdio.h>
10212 #ifdef I_MEMORY
10213 #  include <memory.h>
10214 #endif
10215 #ifdef I_STDLIB
10216 #  include <stdlib.h>
10217 #endif
10218 #ifdef I_STRING
10219 #  include <string.h>
10220 #else
10221 #  include <strings.h>
10222 #endif
10223 #ifdef I_UNISTD
10224 #  include <unistd.h>  /* Needed for NetBSD */
10225 #endif
10226 int main()
10227 {
10228 char buf[128], abc[128];
10229 char *b;
10230 int len;
10231 int off;
10232 int align;
10233
10234 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10235
10236 for (align = 7; align >= 0; align--) {
10237         for (len = 36; len; len--) {
10238                 b = buf+align;
10239                 bcopy(abc, b, len);
10240                 for (off = 1; off <= len; off++) {
10241                         bcopy(b, b+off, len);
10242                         bcopy(b+off, b, len);
10243                         if (bcmp(b, abc, len))
10244                                 exit(1);
10245                 }
10246         }
10247 }
10248 exit(0);
10249 }
10250 EOCP
10251         set try
10252         if eval $compile_ok; then
10253                 if ./try 2>/dev/null; then
10254                         echo "Yes, it can."
10255                         val="$define"
10256                 else
10257                         echo "It can't, sorry."
10258                         case "$d_memmove" in
10259                         "$define") echo "But that's Ok since you have memmove()." ;;
10260                         esac
10261                 fi
10262         else
10263                 echo "(I can't compile the test program, so we'll assume not...)"
10264                 case "$d_memmove" in
10265                 "$define") echo "But that's Ok since you have memmove()." ;;
10266                 esac
10267         fi
10268         ;;
10269 esac
10270 $rm -f try.* try core
10271 set d_safebcpy
10272 eval $setvar
10273
10274 : can memcpy handle overlapping blocks?
10275 val="$undef"
10276 case "$d_memcpy" in
10277 "$define")
10278         echo " "
10279         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10280         $cat >try.c <<EOCP
10281 #$i_memory I_MEMORY
10282 #$i_stdlib I_STDLIB
10283 #$i_string I_STRING
10284 #$i_unistd I_UNISTD
10285 EOCP
10286         $cat >>try.c <<'EOCP'
10287 #include <stdio.h>
10288 #ifdef I_MEMORY
10289 #  include <memory.h>
10290 #endif
10291 #ifdef I_STDLIB
10292 #  include <stdlib.h>
10293 #endif
10294 #ifdef I_STRING
10295 #  include <string.h>
10296 #else
10297 #  include <strings.h>
10298 #endif
10299 #ifdef I_UNISTD
10300 #  include <unistd.h>  /* Needed for NetBSD */
10301 #endif
10302 int main()
10303 {
10304 char buf[128], abc[128];
10305 char *b;
10306 int len;
10307 int off;
10308 int align;
10309
10310 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10311    try to store the string in read-only memory. */
10312 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10313
10314 for (align = 7; align >= 0; align--) {
10315         for (len = 36; len; len--) {
10316                 b = buf+align;
10317                 memcpy(b, abc, len);
10318                 for (off = 1; off <= len; off++) {
10319                         memcpy(b+off, b, len);
10320                         memcpy(b, b+off, len);
10321                         if (memcmp(b, abc, len))
10322                                 exit(1);
10323                 }
10324         }
10325 }
10326 exit(0);
10327 }
10328 EOCP
10329         set try
10330         if eval $compile_ok; then
10331                 if ./try 2>/dev/null; then
10332                         echo "Yes, it can."
10333                         val="$define"
10334                 else
10335                         echo "It can't, sorry."
10336                         case "$d_memmove" in
10337                         "$define") echo "But that's Ok since you have memmove()." ;;
10338                         esac
10339                 fi
10340         else
10341                 echo "(I can't compile the test program, so we'll assume not...)"
10342                 case "$d_memmove" in
10343                 "$define") echo "But that's Ok since you have memmove()." ;;
10344                 esac
10345         fi
10346         ;;
10347 esac
10348 $rm -f try.* try core
10349 set d_safemcpy
10350 eval $setvar
10351
10352 : can memcmp be trusted to compare relative magnitude?
10353 val="$undef"
10354 case "$d_memcmp" in
10355 "$define")
10356         echo " "
10357         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10358         $cat >try.c <<EOCP
10359 #$i_memory I_MEMORY
10360 #$i_stdlib I_STDLIB
10361 #$i_string I_STRING
10362 #$i_unistd I_UNISTD
10363 EOCP
10364         $cat >>try.c <<'EOCP'
10365 #include <stdio.h>
10366 #ifdef I_MEMORY
10367 #  include <memory.h>
10368 #endif
10369 #ifdef I_STDLIB
10370 #  include <stdlib.h>
10371 #endif
10372 #ifdef I_STRING
10373 #  include <string.h>
10374 #else
10375 #  include <strings.h>
10376 #endif
10377 #ifdef I_UNISTD
10378 #  include <unistd.h>  /* Needed for NetBSD */
10379 #endif
10380 int main()
10381 {
10382 char a = -1;
10383 char b = 0;
10384 if ((a < b) && memcmp(&a, &b, 1) < 0)
10385         exit(1);
10386 exit(0);
10387 }
10388 EOCP
10389         set try
10390         if eval $compile_ok; then
10391                 if ./try 2>/dev/null; then
10392                         echo "Yes, it can."
10393                         val="$define"
10394                 else
10395                         echo "No, it can't (it uses signed chars)."
10396                 fi
10397         else
10398                 echo "(I can't compile the test program, so we'll assume not...)"
10399         fi
10400         ;;
10401 esac
10402 $rm -f try.* try core
10403 set d_sanemcmp
10404 eval $setvar
10405
10406 : see if select exists
10407 set select d_select
10408 eval $inlibc
10409
10410 : see if semctl exists
10411 set semctl d_semctl
10412 eval $inlibc
10413
10414 : see if semget exists
10415 set semget d_semget
10416 eval $inlibc
10417
10418 : see if semop exists
10419 set semop d_semop
10420 eval $inlibc
10421
10422 : see how much of the 'sem*(2)' library is present.
10423 h_sem=true
10424 echo " "
10425 case "$d_semctl$d_semget$d_semop" in
10426 *"$undef"*) h_sem=false;;
10427 esac
10428 case "$osname" in
10429 freebsd)
10430     case "`ipcs 2>&1`" in
10431     "SVID messages"*"not configured"*)
10432         echo "Your $osname does not have the sem*(2) configured." >&4
10433         h_sem=false
10434         val="$undef"
10435         set semctl d_semctl
10436         eval $setvar
10437         set semget d_semget
10438         eval $setvar
10439         set semop d_semop
10440         eval $setvar
10441         ;;
10442     esac
10443     ;;
10444 esac
10445 : we could also check for sys/ipc.h ...
10446 if $h_sem && $test `./findhdr sys/sem.h`; then
10447         echo "You have the full sem*(2) library." >&4
10448         val="$define"
10449 else
10450         echo "You don't have the full sem*(2) library." >&4
10451         val="$undef"
10452 fi
10453 set d_sem
10454 eval $setvar
10455
10456 : see whether sys/sem.h defines union semun
10457 echo " "
10458 $cat > try.c <<'END'
10459 #include <sys/types.h>
10460 #include <sys/ipc.h>
10461 #include <sys/sem.h>
10462 int main () { union semun semun; semun.buf = 0; }
10463 END
10464 set try
10465 if eval $compile; then
10466     echo "You have union semun in <sys/sem.h>." >&4
10467     val="$define"
10468 else
10469     echo "You do not have union semun in <sys/sem.h>." >&4
10470     val="$undef"
10471 fi
10472 $rm -f try try.c try.h
10473 set d_union_semun
10474 eval $setvar
10475
10476 : see how to do semctl IPC_STAT
10477 case "$d_sem" in
10478 $define)
10479     : see whether semctl IPC_STAT can use union semun
10480     echo " "
10481     $cat > try.h <<END
10482 #ifndef S_IRUSR
10483 #   ifdef S_IREAD
10484 #       define S_IRUSR S_IREAD
10485 #       define S_IWUSR S_IWRITE
10486 #       define S_IXUSR S_IEXEC
10487 #   else
10488 #       define S_IRUSR 0400
10489 #       define S_IWUSR 0200
10490 #       define S_IXUSR 0100
10491 #   endif
10492 #   define S_IRGRP (S_IRUSR>>3)
10493 #   define S_IWGRP (S_IWUSR>>3)
10494 #   define S_IXGRP (S_IXUSR>>3)
10495 #   define S_IROTH (S_IRUSR>>6)
10496 #   define S_IWOTH (S_IWUSR>>6)
10497 #   define S_IXOTH (S_IXUSR>>6)
10498 #endif
10499 #ifndef S_IRWXU
10500 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10501 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10502 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10503 #endif
10504 END
10505
10506     $cat > try.c <<END
10507 #include <sys/types.h>
10508 #include <sys/ipc.h>
10509 #include <sys/sem.h>
10510 #include <sys/stat.h>
10511 #include <stdio.h>
10512 #include <errno.h>
10513 #include "try.h"
10514 #ifndef errno
10515 extern int errno;
10516 #endif
10517 #$d_union_semun HAS_UNION_SEMUN
10518 int main() {
10519     union semun
10520 #ifndef HAS_UNION_SEMUN
10521     {
10522         int val;
10523         struct semid_ds *buf;
10524         unsigned short *array;
10525     }
10526 #endif
10527     arg;
10528     int sem, st;
10529
10530 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10531     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10532     if (sem > -1) {
10533         struct semid_ds argbuf;
10534         arg.buf = &argbuf;
10535 #       ifdef IPC_STAT
10536         st = semctl(sem, 0, IPC_STAT, arg);
10537         if (st == 0)
10538             printf("semun\n");
10539         else
10540 #       endif /* IPC_STAT */
10541             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10542 #       ifdef IPC_RMID
10543         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10544 #       endif /* IPC_RMID */
10545             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10546     } else
10547 #endif /* IPC_PRIVATE && ... */
10548         printf("semget failed: errno = %d\n", errno);
10549   return 0;
10550 }
10551 END
10552     val="$undef"
10553     set try
10554     if eval $compile; then
10555         xxx=`./try`
10556         case "$xxx" in
10557         semun) val="$define" ;;
10558         esac
10559     fi
10560     $rm -f try try.c
10561     set d_semctl_semun
10562     eval $setvar
10563     case "$d_semctl_semun" in
10564     $define)
10565         echo "You can use union semun for semctl IPC_STAT." >&4
10566         also='also'
10567         ;;
10568     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10569         also=''
10570         ;;
10571     esac
10572
10573     : see whether semctl IPC_STAT can use struct semid_ds pointer
10574     $cat > try.c <<'END'
10575 #include <sys/types.h>
10576 #include <sys/ipc.h>
10577 #include <sys/sem.h>
10578 #include <sys/stat.h>
10579 #include "try.h"
10580 #include <stdio.h>
10581 #include <errno.h>
10582 #ifndef errno
10583 extern int errno;
10584 #endif
10585 int main() {
10586     struct semid_ds arg;
10587     int sem, st;
10588
10589 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
10590     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10591     if (sem > -1) {
10592 #       ifdef IPC_STAT
10593         st = semctl(sem, 0, IPC_STAT, &arg);
10594         if (st == 0)
10595             printf("semid_ds\n");
10596         else
10597 #       endif /* IPC_STAT */
10598             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10599 #       ifdef IPC_RMID
10600         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10601 #       endif /* IPC_RMID */
10602             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10603     } else
10604 #endif /* IPC_PRIVATE && ... */
10605         printf("semget failed: errno = %d\n", errno);
10606
10607     return 0;
10608 }
10609 END
10610     val="$undef"
10611     set try
10612     if eval $compile; then
10613         xxx=`./try`
10614         case "$xxx" in
10615         semid_ds) val="$define" ;;
10616         esac
10617     fi
10618     $rm -f try try.c
10619     set d_semctl_semid_ds
10620     eval $setvar
10621     case "$d_semctl_semid_ds" in
10622     $define)
10623         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10624         ;;
10625     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10626         ;;
10627     esac
10628     $rm -f try.h
10629     ;;
10630 *)  val="$undef"
10631
10632     # We do not have the full sem*(2) library, so assume we can not
10633     # use either.
10634
10635     set d_semctl_semun
10636     eval $setvar
10637
10638     set d_semctl_semid_ds
10639     eval $setvar
10640     ;;
10641 esac
10642
10643 : see if setegid exists
10644 set setegid d_setegid
10645 eval $inlibc
10646
10647 : see if seteuid exists
10648 set seteuid d_seteuid
10649 eval $inlibc
10650
10651 : see if setgrent exists
10652 set setgrent d_setgrent
10653 eval $inlibc
10654
10655 : see if sethostent exists
10656 set sethostent d_sethent
10657 eval $inlibc
10658
10659 : see if setlinebuf exists
10660 set setlinebuf d_setlinebuf
10661 eval $inlibc
10662
10663 : see if setlocale exists
10664 set setlocale d_setlocale
10665 eval $inlibc
10666
10667 : see if setnetent exists
10668 set setnetent d_setnent
10669 eval $inlibc
10670
10671 : see if setprotoent exists
10672 set setprotoent d_setpent
10673 eval $inlibc
10674
10675 : see if setpgid exists
10676 set setpgid d_setpgid
10677 eval $inlibc
10678
10679 : see if setpgrp2 exists
10680 set setpgrp2 d_setpgrp2
10681 eval $inlibc
10682
10683 : see if setpriority exists
10684 set setpriority d_setprior
10685 eval $inlibc
10686
10687 : see if setpwent exists
10688 set setpwent d_setpwent
10689 eval $inlibc
10690
10691 : see if setregid exists
10692 set setregid d_setregid
10693 eval $inlibc
10694 set setresgid d_setresgid
10695 eval $inlibc
10696
10697 : see if setreuid exists
10698 set setreuid d_setreuid
10699 eval $inlibc
10700 set setresuid d_setresuid
10701 eval $inlibc
10702
10703 : see if setrgid exists
10704 set setrgid d_setrgid
10705 eval $inlibc
10706
10707 : see if setruid exists
10708 set setruid d_setruid
10709 eval $inlibc
10710
10711 : see if setservent exists
10712 set setservent d_setsent
10713 eval $inlibc
10714
10715 : see if setsid exists
10716 set setsid d_setsid
10717 eval $inlibc
10718
10719 : see if setspent exists
10720 set setspent d_setspent
10721 eval $inlibc
10722
10723 : see if setvbuf exists
10724 set setvbuf d_setvbuf
10725 eval $inlibc
10726
10727 : see if sfio.h is available
10728 set sfio.h i_sfio
10729 eval $inhdr
10730
10731
10732 : see if sfio library is available
10733 case "$i_sfio" in
10734 $define)
10735         val=''
10736         set sfreserve val
10737         eval $inlibc
10738         ;;
10739 *)
10740         val="$undef"
10741         ;;
10742 esac
10743 : Ok, but do we want to use it.
10744 case "$val" in
10745 $define)
10746         case "$usesfio" in
10747         true|$define|[yY]*) dflt='y';;
10748         *) dflt='n';;
10749         esac
10750         echo "$package can use the sfio library, but it is experimental."
10751         rp="You seem to have sfio available, do you want to try using it?"
10752         . ./myread
10753         case "$ans" in
10754         y|Y) ;;
10755         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
10756                 val="$undef"
10757                 : Remove sfio from list of libraries to use
10758                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
10759                 shift
10760                 libs="$*"
10761                 echo "libs = $libs" >&4
10762                 ;;
10763         esac
10764         ;;
10765 *)      case "$usesfio" in
10766         true|$define|[yY]*)
10767                 echo "Sorry, cannot find sfio on this machine" >&4
10768                 echo "Ignoring your setting of usesfio=$usesfio" >&4
10769                 ;;
10770         esac
10771         ;;
10772 esac
10773 set d_sfio
10774 eval $setvar
10775 case "$d_sfio" in
10776 $define) usesfio='true';;
10777 *) usesfio='false';;
10778 esac
10779
10780 : see if shmctl exists
10781 set shmctl d_shmctl
10782 eval $inlibc
10783
10784 : see if shmget exists
10785 set shmget d_shmget
10786 eval $inlibc
10787
10788 : see if shmat exists
10789 set shmat d_shmat
10790 eval $inlibc
10791 : see what shmat returns
10792 case "$d_shmat" in
10793 "$define")
10794         $cat >shmat.c <<'END'
10795 #include <sys/shm.h>
10796 void *shmat();
10797 END
10798         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
10799                 shmattype='void *'
10800         else
10801                 shmattype='char *'
10802         fi
10803         echo "and it returns ($shmattype)." >&4
10804         : see if a prototype for shmat is available
10805         xxx=`./findhdr sys/shm.h`
10806         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
10807         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
10808                 val="$define"
10809         else
10810                 val="$undef"
10811         fi
10812         $rm -f shmat.[co]
10813         ;;
10814 *)
10815         val="$undef"
10816         ;;
10817 esac
10818 set d_shmatprototype
10819 eval $setvar
10820
10821 : see if shmdt exists
10822 set shmdt d_shmdt
10823 eval $inlibc
10824
10825 : see how much of the 'shm*(2)' library is present.
10826 h_shm=true
10827 echo " "
10828 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
10829 *"$undef"*) h_shm=false;;
10830 esac
10831 case "$osname" in
10832 freebsd)
10833     case "`ipcs 2>&1`" in
10834     "SVID shared memory"*"not configured"*)
10835         echo "Your $osname does not have the shm*(2) configured." >&4
10836         h_shm=false
10837         val="$undef"
10838         set shmctl d_shmctl
10839         evat $setvar
10840         set shmget d_shmget
10841         evat $setvar
10842         set shmat d_shmat
10843         evat $setvar
10844         set shmdt d_shmdt
10845         evat $setvar
10846         ;;
10847     esac
10848     ;;
10849 esac
10850 : we could also check for sys/ipc.h ...
10851 if $h_shm && $test `./findhdr sys/shm.h`; then
10852         echo "You have the full shm*(2) library." >&4
10853         val="$define"
10854 else
10855         echo "You don't have the full shm*(2) library." >&4
10856         val="$undef"
10857 fi
10858 set d_shm
10859 eval $setvar
10860
10861 echo " "
10862 : see if we have sigaction
10863 if set sigaction val -f d_sigaction; eval $csym; $val; then
10864         echo 'sigaction() found.' >&4
10865         $cat > try.c <<'EOP'
10866 #include <stdio.h>
10867 #include <sys/types.h>
10868 #include <signal.h>
10869 int main()
10870 {
10871     struct sigaction act, oact;
10872     act.sa_flags = 0;
10873     oact.sa_handler = 0;
10874     /* so that act and oact are used */
10875     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
10876 }
10877 EOP
10878         set try
10879         if eval $compile_ok; then
10880                 val="$define"
10881         else
10882                 echo "But you don't seem to have a useable struct sigaction." >&4
10883                 val="$undef"
10884         fi
10885 else
10886         echo 'sigaction NOT found.' >&4
10887         val="$undef"
10888 fi
10889 set d_sigaction; eval $setvar
10890 $rm -f try try$_o try.c
10891
10892 : see if sigsetjmp exists
10893 echo " "
10894 case "$d_sigsetjmp" in
10895 '')
10896         $cat >try.c <<'EOP'
10897 #include <setjmp.h>
10898 sigjmp_buf env;
10899 int set = 1;
10900 int main()
10901 {
10902         if (sigsetjmp(env,1))
10903                 exit(set);
10904         set = 0;
10905         siglongjmp(env, 1);
10906         exit(1);
10907 }
10908 EOP
10909         set try
10910         if eval $compile; then
10911                 if ./try >/dev/null 2>&1; then
10912                         echo "POSIX sigsetjmp found." >&4
10913                         val="$define"
10914                 else
10915                         $cat >&4 <<EOM
10916 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
10917 I'll ignore them.
10918 EOM
10919                         val="$undef"
10920                 fi
10921         else
10922                 echo "sigsetjmp not found." >&4
10923                 val="$undef"
10924         fi
10925         ;;
10926 *) val="$d_sigsetjmp"
10927         case "$d_sigsetjmp" in
10928         $define) echo "POSIX sigsetjmp found." >&4;;
10929         $undef) echo "sigsetjmp not found." >&4;;
10930         esac
10931         ;;
10932 esac
10933 set d_sigsetjmp
10934 eval $setvar
10935 $rm -f try.c try
10936
10937 : see if sys/stat.h is available
10938 set sys/stat.h i_sysstat
10939 eval $inhdr
10940
10941
10942 : see if stat knows about block sizes
10943 echo " "
10944 echo "Checking to see if your struct stat has st_blocks field..." >&4
10945 set d_statblks stat st_blocks $i_sysstat sys/stat.h
10946 eval $hasfield
10947
10948
10949 : see if this is a sys/vfs.h system
10950 set sys/vfs.h i_sysvfs
10951 eval $inhdr
10952
10953
10954 : see if this is a sys/statfs.h system
10955 set sys/statfs.h i_sysstatfs
10956 eval $inhdr
10957
10958
10959 echo " "
10960 echo "Checking to see if your system supports struct statfs..." >&4
10961 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
10962 eval $hasstruct
10963 case "$d_statfs_s" in
10964 "$define")      echo "Yes, it does."   ;;
10965 *)              echo "No, it doesn't." ;;
10966 esac
10967
10968
10969
10970 : see if struct statfs knows about f_flags
10971 case "$d_statfs_s" in
10972 define) 
10973         echo " "
10974         echo "Checking to see if your struct statfs has f_flags field..." >&4
10975         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
10976         eval $hasfield
10977         ;;
10978 *)      val="$undef"
10979         set d_statfs_f_flags
10980         eval $setvar
10981         ;;
10982 esac
10983 case "$d_statfs_f_flags" in
10984 "$define")      echo "Yes, it does."   ;;
10985 *)              echo "No, it doesn't." ;;
10986 esac
10987
10988 : see if _ptr and _cnt from stdio act std
10989 echo " "
10990 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
10991         echo "(Looks like you have stdio.h from Linux.)"
10992         case "$stdio_ptr" in
10993         '') stdio_ptr='((fp)->_IO_read_ptr)'
10994                 ptr_lval=$define
10995                 ;;
10996         *)      ptr_lval=$d_stdio_ptr_lval;;
10997         esac
10998         case "$stdio_cnt" in
10999         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11000                 cnt_lval=$undef
11001                 ;;
11002         *)      cnt_lval=$d_stdio_cnt_lval;;
11003         esac
11004         case "$stdio_base" in
11005         '') stdio_base='((fp)->_IO_read_base)';;
11006         esac
11007         case "$stdio_bufsiz" in
11008         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11009         esac
11010 else
11011         case "$stdio_ptr" in
11012         '') stdio_ptr='((fp)->_ptr)'
11013                 ptr_lval=$define
11014                 ;;
11015         *)      ptr_lval=$d_stdio_ptr_lval;;
11016         esac
11017         case "$stdio_cnt" in
11018         '') stdio_cnt='((fp)->_cnt)'
11019                 cnt_lval=$define
11020                 ;;
11021         *)      cnt_lval=$d_stdio_cnt_lval;;
11022         esac
11023         case "$stdio_base" in
11024         '') stdio_base='((fp)->_base)';;
11025         esac
11026         case "$stdio_bufsiz" in
11027         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11028         esac
11029 fi
11030 : test whether _ptr and _cnt really work
11031 echo "Checking how std your stdio is..." >&4
11032 $cat >try.c <<EOP
11033 #include <stdio.h>
11034 #define FILE_ptr(fp)    $stdio_ptr
11035 #define FILE_cnt(fp)    $stdio_cnt
11036 int main() {
11037         FILE *fp = fopen("try.c", "r");
11038         char c = getc(fp);
11039         if (
11040                 18 <= FILE_cnt(fp) &&
11041                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11042         )
11043                 exit(0);
11044         exit(1);
11045 }
11046 EOP
11047 val="$undef"
11048 set try
11049 if eval $compile; then
11050         if ./try; then
11051                 echo "Your stdio acts pretty std."
11052                 val="$define"
11053         else
11054                 echo "Your stdio isn't very std."
11055         fi
11056 else
11057         echo "Your stdio doesn't appear very std."
11058 fi
11059 $rm -f try.c try
11060 set d_stdstdio
11061 eval $setvar
11062
11063 : Can _ptr be used as an lvalue?
11064 case "$d_stdstdio$ptr_lval" in
11065 $define$define) val=$define ;;
11066 *) val=$undef ;;
11067 esac
11068 set d_stdio_ptr_lval
11069 eval $setvar
11070
11071 : Can _cnt be used as an lvalue?
11072 case "$d_stdstdio$cnt_lval" in
11073 $define$define) val=$define ;;
11074 *) val=$undef ;;
11075 esac
11076 set d_stdio_cnt_lval
11077 eval $setvar
11078
11079 : see if _base is also standard
11080 val="$undef"
11081 case "$d_stdstdio" in
11082 $define)
11083         $cat >try.c <<EOP
11084 #include <stdio.h>
11085 #define FILE_base(fp)   $stdio_base
11086 #define FILE_bufsiz(fp) $stdio_bufsiz
11087 int main() {
11088         FILE *fp = fopen("try.c", "r");
11089         char c = getc(fp);
11090         if (
11091                 19 <= FILE_bufsiz(fp) &&
11092                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11093         )
11094                 exit(0);
11095         exit(1);
11096 }
11097 EOP
11098         set try
11099         if eval $compile; then
11100                 if ./try; then
11101                         echo "And its _base field acts std."
11102                         val="$define"
11103                 else
11104                         echo "But its _base field isn't std."
11105                 fi
11106         else
11107                 echo "However, it seems to be lacking the _base field."
11108         fi
11109         $rm -f try.c try
11110         ;;
11111 esac
11112 set d_stdiobase
11113 eval $setvar
11114
11115 $cat >&4 <<EOM
11116 Checking how to access stdio streams by file descriptor number...
11117 EOM
11118 case "$stdio_stream_array" in
11119 '')     $cat >try.c <<EOCP
11120 #include <stdio.h>
11121 int main() {
11122   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11123     printf("yes\n");
11124 }
11125 EOCP
11126         for s in _iob __iob __sF
11127         do
11128                 set try -DSTDIO_STREAM_ARRAY=$s
11129                 if eval $compile; then
11130                         case "`./try$exe_ext`" in
11131                         yes)    stdio_stream_array=$s; break ;;
11132                         esac
11133                 fi
11134         done
11135         $rm -f try.* try$exe_ext
11136 esac
11137 case "$stdio_stream_array" in
11138 '')     $cat >&4 <<EOM
11139 I can't figure out how to access stdio streams by file descriptor number.
11140 EOM
11141         d_stdio_stream_array="$undef"
11142         ;;
11143 *)      $cat >&4 <<EOM
11144 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11145 EOM
11146         d_stdio_stream_array="$define"
11147         ;;
11148 esac
11149
11150 : see if strcoll exists
11151 set strcoll d_strcoll
11152 eval $inlibc
11153
11154 : check for structure copying
11155 echo " "
11156 echo "Checking to see if your C compiler can copy structs..." >&4
11157 $cat >try.c <<'EOCP'
11158 int main()
11159 {
11160         struct blurfl {
11161                 int dyick;
11162         } foo, bar;
11163
11164         foo = bar;
11165 }
11166 EOCP
11167 if $cc -c try.c >/dev/null 2>&1 ; then
11168         val="$define"
11169         echo "Yup, it can."
11170 else
11171         val="$undef"
11172         echo "Nope, it can't."
11173 fi
11174 set d_strctcpy
11175 eval $setvar
11176 $rm -f try.*
11177
11178 : see if strerror and/or sys_errlist[] exist
11179 echo " "
11180 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11181     if set strerror val -f d_strerror; eval $csym; $val; then
11182                 echo 'strerror() found.' >&4
11183                 d_strerror="$define"
11184                 d_strerrm='strerror(e)'
11185                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11186                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11187                         d_syserrlst="$define"
11188                 else
11189                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11190                         d_syserrlst="$undef"
11191                 fi
11192     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11193                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11194                 echo 'strerror() found in string header.' >&4
11195                 d_strerror="$define"
11196                 d_strerrm='strerror(e)'
11197                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11198                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11199                                 d_syserrlst="$define"
11200                 else
11201                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11202                         d_syserrlst="$undef"
11203                 fi
11204     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11205                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11206                 d_strerror="$undef"
11207                 d_syserrlst="$define"
11208                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11209     else
11210                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11211                 d_strerror="$undef"
11212                 d_syserrlst="$undef"
11213                 d_strerrm='"unknown"'
11214     fi
11215 fi
11216
11217 : see if strtod exists
11218 set strtod d_strtod
11219 eval $inlibc
11220
11221 : see if strtol exists
11222 set strtol d_strtol
11223 eval $inlibc
11224
11225 : see if strtold exists
11226 set strtold d_strtold
11227 eval $inlibc
11228
11229 : see if strtoll exists
11230 set strtoll d_strtoll
11231 eval $inlibc
11232
11233 : see if strtoul exists
11234 set strtoul d_strtoul
11235 eval $inlibc
11236
11237 : see if strtoull exists
11238 set strtoull d_strtoull
11239 eval $inlibc
11240
11241 : see if strtouq exists
11242 set strtouq d_strtouq
11243 eval $inlibc
11244
11245 : see if strxfrm exists
11246 set strxfrm d_strxfrm
11247 eval $inlibc
11248
11249 : see if symlink exists
11250 set symlink d_symlink
11251 eval $inlibc
11252
11253 : see if syscall exists
11254 set syscall d_syscall
11255 eval $inlibc
11256
11257 : see if sysconf exists
11258 set sysconf d_sysconf
11259 eval $inlibc
11260
11261 : see if system exists
11262 set system d_system
11263 eval $inlibc
11264
11265 : see if tcgetpgrp exists
11266 set tcgetpgrp d_tcgetpgrp
11267 eval $inlibc
11268
11269 : see if tcsetpgrp exists
11270 set tcsetpgrp d_tcsetpgrp
11271 eval $inlibc
11272
11273 : see if prototype for telldir is available
11274 echo " "
11275 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11276 eval $hasproto
11277
11278 : see if this is a sys/times.h system
11279 set sys/times.h i_systimes
11280 eval $inhdr
11281
11282 : see if times exists
11283 echo " "
11284 if set times val -f d_times; eval $csym; $val; then
11285         echo 'times() found.' >&4
11286         d_times="$define"
11287         inc=''
11288         case "$i_systimes" in
11289         "$define") inc='sys/times.h';;
11290         esac
11291         rp="What is the type returned by times() on this system?"
11292         set clock_t clocktype long stdio.h sys/types.h $inc
11293         eval $typedef_ask
11294 else
11295         echo 'times() NOT found, hope that will do.' >&4
11296         d_times="$undef"
11297         clocktype='int'
11298 fi
11299
11300 : see if truncate exists
11301 set truncate d_truncate
11302 eval $inlibc
11303
11304 : see if tzname[] exists
11305 echo " "
11306 if set tzname val -a d_tzname; eval $csym; $val; then
11307         val="$define"
11308         echo 'tzname[] found.' >&4
11309 else
11310         val="$undef"
11311         echo 'tzname[] NOT found.' >&4
11312 fi
11313 set d_tzname
11314 eval $setvar
11315
11316 : see if umask exists
11317 set umask d_umask
11318 eval $inlibc
11319
11320 : see if ustat exists
11321 set ustat d_ustat
11322 eval $inlibc
11323
11324 : backward compatibility for d_hvfork
11325 if test X$d_hvfork != X; then
11326         d_vfork="$d_hvfork"
11327         d_hvfork=''
11328 fi
11329 : see if there is a vfork
11330 val=''
11331 set vfork val
11332 eval $inlibc
11333
11334 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11335 : perl on Solaris 2.x, and probably elsewhere.
11336 case "$val" in
11337 $define)
11338         echo " "
11339         case "$usevfork" in
11340         false) dflt='n';;
11341         *) dflt='y';;
11342         esac
11343         cat <<'EOM'
11344  
11345 Perl can only use a vfork() that doesn't suffer from strict
11346 restrictions on calling functions or modifying global data in
11347 the child.  For example, glibc-2.1 contains such a vfork()
11348 that is unsuitable.  If your system provides a proper fork()
11349 call, chances are that you do NOT want perl to use vfork().
11350
11351 EOM
11352         rp="Do you still want to use vfork()?"
11353         . ./myread
11354         case "$ans" in
11355         y|Y) ;;
11356         *)
11357                 echo "Ok, we won't use vfork()."
11358                 val="$undef"
11359                 ;;
11360         esac
11361         ;;
11362 esac
11363 set d_vfork
11364 eval $setvar
11365 case "$d_vfork" in
11366 $define) usevfork='true';;
11367 *) usevfork='false';;
11368 esac
11369
11370 : see if this is an sysdir system
11371 set sys/dir.h i_sysdir
11372 eval $inhdr
11373
11374 : see if this is an sysndir system
11375 set sys/ndir.h i_sysndir
11376 eval $inhdr
11377
11378 : see if closedir exists
11379 set closedir d_closedir
11380 eval $inlibc
11381
11382 case "$d_closedir" in
11383 "$define")
11384         echo " "
11385         echo "Checking whether closedir() returns a status..." >&4
11386         cat > closedir.c <<EOM
11387 #$i_dirent I_DIRENT             /**/
11388 #$i_sysdir I_SYS_DIR            /**/
11389 #$i_sysndir I_SYS_NDIR          /**/
11390 #$i_systypes I_SYS_TYPES        /**/
11391
11392 #if defined(I_SYS_TYPES)
11393 #include <sys/types.h>
11394 #endif
11395 #if defined(I_DIRENT)
11396 #include <dirent.h>
11397 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11398 #include <sys/dir.h>
11399 #endif
11400 #else
11401 #ifdef I_SYS_NDIR
11402 #include <sys/ndir.h>
11403 #else
11404 #ifdef I_SYS_DIR
11405 #ifdef hp9000s500
11406 #include <ndir.h>       /* may be wrong in the future */
11407 #else
11408 #include <sys/dir.h>
11409 #endif
11410 #endif
11411 #endif
11412 #endif 
11413 int main() { return closedir(opendir(".")); }
11414 EOM
11415         set closedir
11416         if eval $compile_ok; then
11417                 if ./closedir > /dev/null 2>&1 ; then
11418                         echo "Yes, it does."
11419                         val="$undef"
11420                 else
11421                         echo "No, it doesn't."
11422                         val="$define"
11423                 fi
11424         else
11425                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11426                 val="$define"
11427         fi
11428         ;;
11429 *)
11430         val="$undef";
11431         ;;
11432 esac
11433 set d_void_closedir
11434 eval $setvar
11435 $rm -f closedir*
11436 : check for volatile keyword
11437 echo " "
11438 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11439 $cat >try.c <<'EOCP'
11440 int main()
11441 {
11442         typedef struct _goo_struct goo_struct;
11443         goo_struct * volatile goo = ((goo_struct *)0);
11444         struct _goo_struct {
11445                 long long_int;
11446                 int reg_int;
11447                 char char_var;
11448         };
11449         typedef unsigned short foo_t;
11450         char *volatile foo;
11451         volatile int bar;
11452         volatile foo_t blech;
11453         foo = foo;
11454 }
11455 EOCP
11456 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11457         val="$define"
11458         echo "Yup, it does."
11459 else
11460         val="$undef"
11461         echo "Nope, it doesn't."
11462 fi
11463 set d_volatile
11464 eval $setvar
11465 $rm -f try.*
11466
11467 : see if there is a wait4
11468 set wait4 d_wait4
11469 eval $inlibc
11470
11471 : see if waitpid exists
11472 set waitpid d_waitpid
11473 eval $inlibc
11474
11475 : see if wcstombs exists
11476 set wcstombs d_wcstombs
11477 eval $inlibc
11478
11479 : see if wctomb exists
11480 set wctomb d_wctomb
11481 eval $inlibc
11482
11483 : preserve RCS keywords in files with variable substitution, grrr
11484 Date='$Date'
11485 Id='$Id'
11486 Log='$Log'
11487 RCSfile='$RCSfile'
11488 Revision='$Revision'
11489
11490 case "$crosscompile" in
11491 ''|[nN]*) crosscompile="$undef" ;;
11492 esac
11493
11494 case "$osname" in
11495 next|rhapsody) multiarch="$define" ;;
11496 esac
11497 case "$multiarch" in
11498 ''|[nN]*) multiarch="$undef" ;;
11499 esac
11500
11501 : check for alignment requirements
11502 echo " "
11503 case "$crosscompile$multiarch" in
11504 *$define*)
11505         $cat <<EOM
11506 You seem to be either cross-compiling or doing a multiarchitecture build,
11507 skipping the memory alignment check.
11508
11509 EOM
11510         case "$alignbytes" in
11511         '') alignbytes=8 ;;
11512         esac
11513         ;;
11514 *)
11515         case "$alignbytes" in
11516         '') echo "Checking alignment constraints..." >&4
11517                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
11518                         $cat >try.c <<'EOCP'
11519 typedef long double NV;
11520 EOCP
11521                 else
11522                         $cat >try.c <<'EOCP'
11523 typedef double NV;
11524 EOCP
11525                 fi
11526                 $cat >>try.c <<'EOCP'
11527 #include <stdio.h>
11528 struct foobar {
11529         char foo;
11530         NV bar;
11531 } try_algn;
11532 int main()
11533 {
11534     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11535     return(0);
11536 }
11537 EOCP
11538                 set try
11539                 if eval $compile_ok; then
11540                         dflt=`./try`
11541                 else
11542                         dflt='8'
11543                         echo "(I can't seem to compile the test program...)"
11544                 fi
11545                 ;;
11546         *) dflt="$alignbytes"
11547                 ;;
11548         esac
11549         rp="Doubles must be aligned on a how-many-byte boundary?"
11550         . ./myread
11551         alignbytes="$ans"
11552         $rm -f try.c try
11553         ;;
11554 esac
11555
11556
11557 : check for ordering of bytes in a long
11558 echo " "
11559 case "$crosscompile$multiarch" in
11560 *$define*)
11561         $cat <<EOM
11562 You seem to be either cross-compiling or doing a multiarchitecture build,
11563 skipping the byteorder check.
11564
11565 EOM
11566         byteorder='0xffff'
11567         ;;
11568 *)
11569         case "$byteorder" in
11570         '')
11571                 $cat <<'EOM'
11572 In the following, larger digits indicate more significance.  A big-endian
11573 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11574 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11575 machines may have weird orders like 3412.  A Cray will report 87654321,
11576 an Alpha will report 12345678. If the test program works the default is
11577 probably right.
11578 I'm now running the test program...
11579 EOM
11580                 $cat >try.c <<'EOCP'
11581 #include <stdio.h>
11582 int main()
11583 {
11584         int i;
11585         union {
11586                 unsigned long l;
11587                 char c[sizeof(long)];
11588         } u;
11589
11590         if (sizeof(long) > 4)
11591                 u.l = (0x08070605L << 32) | 0x04030201L;
11592         else
11593                 u.l = 0x04030201L;
11594         for (i = 0; i < sizeof(long); i++)
11595                 printf("%c", u.c[i]+'0');
11596         printf("\n");
11597         exit(0);
11598 }
11599 EOCP
11600                 xxx_prompt=y
11601                 set try
11602                 if eval $compile && ./try > /dev/null; then
11603                         dflt=`./try`
11604                         case "$dflt" in
11605                         [1-4][1-4][1-4][1-4]|12345678|87654321)
11606                                 echo "(The test program ran ok.)"
11607                                 echo "byteorder=$dflt"
11608                                 xxx_prompt=n
11609                         ;;
11610                         ????|????????) echo "(The test program ran ok.)" ;;
11611                         *) echo "(The test program didn't run right for some reason.)" ;;
11612                         esac
11613                 else
11614                         dflt='4321'
11615                         cat <<'EOM'
11616 (I can't seem to compile the test program.  Guessing big-endian...)
11617 EOM
11618                 fi
11619                 case "$xxx_prompt" in
11620                 y)
11621                         rp="What is the order of bytes in a long?"
11622                         . ./myread
11623                         byteorder="$ans"
11624                         ;;
11625                 *)      byteorder=$dflt
11626                         ;;
11627                 esac
11628                 ;;
11629         esac
11630         $rm -f try.c try
11631         ;;
11632 esac
11633
11634
11635 : how do we catenate cpp tokens here?
11636 echo " "
11637 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11638 $cat >cpp_stuff.c <<'EOCP'
11639 #define RCAT(a,b)a/**/b
11640 #define ACAT(a,b)a ## b
11641 RCAT(Rei,ser)
11642 ACAT(Cir,cus)
11643 EOCP
11644 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
11645 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
11646         echo "Oh!  Smells like ANSI's been here." >&4
11647         echo "We can catify or stringify, separately or together!"
11648         cpp_stuff=42
11649 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
11650         echo "Ah, yes!  The good old days!" >&4
11651         echo "However, in the good old days we don't know how to stringify and"
11652         echo "catify at the same time."
11653         cpp_stuff=1
11654 else
11655         $cat >&4 <<EOM
11656 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
11657 to have to edit the values of CAT[2-5] in config.h...
11658 EOM
11659         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
11660 fi
11661 $rm -f cpp_stuff.*
11662
11663 : see if this is a db.h system
11664 set db.h i_db
11665 eval $inhdr
11666
11667 case "$i_db" in
11668 $define)
11669         : Check db version.
11670         echo " "
11671         echo "Checking Berkeley DB version ..." >&4
11672         $cat >try.c <<EOCP
11673 #$d_const HASCONST
11674 #ifndef HASCONST
11675 #define const
11676 #endif
11677 #include <sys/types.h>
11678 #include <stdio.h>
11679 #include <db.h>
11680 int main()
11681 {
11682 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
11683     int Major, Minor, Patch ;
11684     unsigned long Version ;
11685     (void)db_version(&Major, &Minor, &Patch) ;
11686     printf("You have Berkeley DB Version 2 or greater\n");
11687
11688     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
11689                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
11690     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
11691                 Major, Minor, Patch) ;
11692
11693     /* check that db.h & libdb are compatible */
11694     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
11695         printf("db.h and libdb are incompatible\n") ;
11696         exit(3);        
11697     }
11698
11699     printf("db.h and libdb are compatible\n") ;
11700
11701     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
11702                 + DB_VERSION_PATCH ;
11703
11704     /* needs to be >= 2.3.4 */
11705     if (Version < 2003004) {
11706     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
11707         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
11708         exit(2);        
11709     }
11710
11711     exit(0);
11712 #else
11713 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
11714     printf("You have Berkeley DB Version 1\n");
11715     exit(0);    /* DB version < 2: the coast is clear. */
11716 #else
11717     exit(1);    /* <db.h> not Berkeley DB? */
11718 #endif
11719 #endif
11720 }
11721 EOCP
11722         set try
11723         if eval $compile_ok && ./try; then
11724                 echo 'Looks OK.' >&4
11725         else
11726                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
11727                 i_db=$undef
11728                 case " $libs " in
11729                 *"-ldb "*)
11730                         : Remove db from list of libraries to use
11731                         echo "Removing unusable -ldb from library list" >&4
11732                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
11733                         shift
11734                         libs="$*"
11735                         echo "libs = $libs" >&4
11736                         ;;
11737                 esac
11738         fi
11739         $rm -f try.*
11740         ;;
11741 esac
11742
11743 case "$i_db" in
11744 define)
11745         : Check the return type needed for hash 
11746         echo " "
11747         echo "Checking return type needed for hash for Berkeley DB ..." >&4
11748         $cat >try.c <<EOCP
11749 #$d_const HASCONST
11750 #ifndef HASCONST
11751 #define const
11752 #endif
11753 #include <sys/types.h>
11754 #include <db.h>
11755
11756 #ifndef DB_VERSION_MAJOR
11757 u_int32_t hash_cb (ptr, size)
11758 const void *ptr;
11759 size_t size;
11760 {
11761 }
11762 HASHINFO info;
11763 int main()
11764 {
11765         info.hash = hash_cb;
11766 }
11767 #endif
11768 EOCP
11769         if $cc $ccflags -c try.c >try.out 2>&1 ; then
11770                 if $contains warning try.out >>/dev/null 2>&1 ; then
11771                         db_hashtype='int'
11772                 else
11773                         db_hashtype='u_int32_t'
11774                 fi
11775         else
11776                 : XXX Maybe we should just give up here.
11777                 db_hashtype=u_int32_t
11778                 $cat try.out >&4
11779                 echo "Help:  I can't seem to compile the db test program." >&4
11780                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
11781         fi
11782         $rm -f try.*
11783         echo "Your version of Berkeley DB uses $db_hashtype for hash."
11784         ;;
11785 *)      db_hashtype=u_int32_t
11786         ;;
11787 esac
11788 case "$i_db" in
11789 define)
11790         : Check the return type needed for prefix 
11791         echo " "
11792         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
11793         cat >try.c <<EOCP
11794 #$d_const HASCONST
11795 #ifndef HASCONST
11796 #define const
11797 #endif
11798 #include <sys/types.h>
11799 #include <db.h>
11800
11801 #ifndef DB_VERSION_MAJOR
11802 size_t prefix_cb (key1, key2)
11803 const DBT *key1;
11804 const DBT *key2;
11805 {
11806 }
11807 BTREEINFO info;
11808 int main()
11809 {
11810         info.prefix = prefix_cb;
11811 }
11812 #endif
11813 EOCP
11814         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
11815                 if $contains warning try.out >>/dev/null 2>&1 ; then
11816                         db_prefixtype='int'
11817                 else
11818                         db_prefixtype='size_t'
11819                 fi
11820         else
11821                 db_prefixtype='size_t'
11822                 : XXX Maybe we should just give up here.
11823                 $cat try.out >&4
11824                 echo "Help:  I can't seem to compile the db test program." >&4
11825                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
11826         fi
11827         $rm -f try.*
11828         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
11829         ;;
11830 *)      db_prefixtype='size_t'
11831         ;;
11832 esac
11833
11834 : check for void type
11835 echo " "
11836 echo "Checking to see how well your C compiler groks the void type..." >&4
11837 case "$voidflags" in
11838 '')
11839         $cat >try.c <<'EOCP'
11840 #if TRY & 1
11841 void sub() {
11842 #else
11843 sub() {
11844 #endif
11845         extern void moo();      /* function returning void */
11846         void (*goo)();          /* ptr to func returning void */
11847 #if TRY & 8
11848         void *hue;              /* generic ptr */
11849 #endif
11850 #if TRY & 2
11851         void (*foo[10])();
11852 #endif
11853
11854 #if TRY & 4
11855         if(goo == moo) {
11856                 exit(0);
11857         }
11858 #endif
11859         exit(0);
11860 }
11861 int main() { sub(); }
11862 EOCP
11863         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
11864                 voidflags=$defvoidused
11865         echo "Good.  It appears to support void to the level $package wants.">&4
11866                 if $contains warning .out >/dev/null 2>&1; then
11867                         echo "However, you might get some warnings that look like this:"
11868                         $cat .out
11869                 fi
11870         else
11871 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
11872                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
11873                         echo "It supports 1..."
11874                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
11875                                 echo "It also supports 2..."
11876                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
11877                                         voidflags=7
11878                                         echo "And it supports 4 but not 8 definitely."
11879                                 else
11880                                         echo "It doesn't support 4..."
11881                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
11882                                                 voidflags=11
11883                                                 echo "But it supports 8."
11884                                         else
11885                                                 voidflags=3
11886                                                 echo "Neither does it support 8."
11887                                         fi
11888                                 fi
11889                         else
11890                                 echo "It does not support 2..."
11891                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
11892                                         voidflags=13
11893                                         echo "But it supports 4 and 8."
11894                                 else
11895                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
11896                                                 voidflags=5
11897                                                 echo "And it supports 4 but has not heard about 8."
11898                                         else
11899                                                 echo "However it supports 8 but not 4."
11900                                         fi
11901                                 fi
11902                         fi
11903                 else
11904                         echo "There is no support at all for void."
11905                         voidflags=0
11906                 fi
11907         fi
11908 esac
11909 case "$voidflags" in
11910 "$defvoidused") ;;
11911 *)      $cat >&4 <<'EOM'
11912   Support flag bits are:
11913     1: basic void declarations.
11914     2: arrays of pointers to functions returning void.
11915     4: operations between pointers to and addresses of void functions.
11916     8: generic void pointers.
11917 EOM
11918         dflt="$voidflags";
11919         rp="Your void support flags add up to what?"
11920         . ./myread
11921         voidflags="$ans"
11922         ;;
11923 esac
11924 $rm -f try.* .out
11925
11926
11927 : How can we generate normalized random numbers ?
11928 echo " "
11929 echo "Looking for a random number function..." >&4
11930 case "$randfunc" in
11931 '')
11932         if set drand48 val -f; eval $csym; $val; then
11933                 dflt="drand48"
11934                 echo "Good, found drand48()." >&4
11935         elif set random val -f; eval $csym; $val; then
11936                 dflt="random"
11937                 echo "OK, found random()." >&4
11938         else
11939                 dflt="rand"
11940                 echo "Yick, looks like I have to use rand()." >&4
11941         fi
11942         echo " "
11943         ;;
11944 *)
11945         dflt="$randfunc"
11946         ;;
11947 esac
11948 cont=true
11949
11950 case "$ccflags" in
11951 *-Dmy_rand=*|*-Dmy_srand=*)
11952         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
11953         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
11954         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
11955         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
11956         ;;
11957 esac
11958
11959 while $test "$cont"; do
11960         rp="Use which function to generate random numbers?"
11961         . ./myread
11962         if $test "$ans" = "$dflt"; then
11963                 : null
11964         else
11965                 randbits=''
11966         fi
11967         randfunc="$ans"
11968         if set $ans val -f; eval $csym; $val; then
11969                 cont=''
11970         else
11971                 dflt=y
11972                 rp="I cannot find function $ans. Use that name anyway?"
11973                 . ./myread
11974                 dflt=rand
11975                 case "$ans" in
11976                         [yY]*) cont='';;
11977                 esac
11978         fi
11979         case "$cont" in
11980         '')
11981                 case "$randfunc" in
11982                 drand48)
11983                         drand01="drand48()"
11984                         seedfunc="srand48"
11985                         randbits=48
11986                         randseedtype=long
11987                         ;;
11988                 rand|random)
11989                         case "$randbits" in
11990                         '')
11991 echo "Checking to see how many bits your $randfunc() function produces..." >&4
11992                                 $cat >try.c <<EOCP
11993 #$i_unistd I_UNISTD
11994 #$i_stdlib I_STDLIB
11995 #include <stdio.h>
11996 #ifdef I_UNISTD
11997 #  include <unistd.h>
11998 #endif
11999 #ifdef I_STDLIB
12000 #  include <stdlib.h>
12001 #endif
12002 int main()
12003 {
12004         register int i;
12005         register unsigned long tmp;
12006         register unsigned long max = 0L;
12007
12008         for (i = 1000; i; i--) {
12009                 tmp = (unsigned long) $randfunc();
12010                 if (tmp > max) max = tmp;
12011         }
12012         for (i = 0; max; i++)
12013                 max /= 2;
12014         printf("%d\n",i);
12015 }
12016 EOCP
12017                                 set try
12018                                 if eval $compile_ok; then
12019                                         dflt=`try`
12020                                 else
12021                                         dflt='?'
12022                                         echo "(I can't seem to compile the test program...)"
12023                                 fi
12024                                 ;;
12025                         *)
12026                                 dflt="$randbits"
12027                                 ;;
12028                         esac
12029                         rp="How many bits does your $randfunc() function produce?"
12030                         . ./myread
12031                         randbits="$ans"
12032                         $rm -f try.c try
12033                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12034                         seedfunc="s$randfunc"
12035                         randseedtype=unsigned
12036                         ;;
12037                 *)
12038                         dflt="31"
12039                         rp="How many bits does your $randfunc() function produce?"
12040                         . ./myread
12041                         randbits="$ans"
12042                         seedfunc="s$randfunc"
12043                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12044                         if set $seedfunc val -f; eval $csym; $val; then
12045                                 echo "(Using $seedfunc() to seed random generator)"
12046                         else
12047                                 echo "(Warning: no $seedfunc() to seed random generator)"
12048                                 seedfunc=rand
12049                         fi
12050                         randseedtype=unsigned
12051                         ;;
12052                 esac
12053                 ;;
12054         esac
12055 done
12056
12057 echo " "
12058 echo "Determining whether or not we are on an EBCDIC system..." >&4
12059 $cat >tebcdic.c <<'EOM'
12060 int main()
12061 {
12062   if ('M'==0xd4) return 0;
12063   return 1;
12064 }
12065 EOM
12066
12067 val=$undef
12068 set tebcdic
12069 if eval $compile_ok; then
12070         if ./tebcdic; then
12071                 echo "You have EBCDIC." >&4
12072                 val="$define"
12073         else
12074                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12075         fi
12076 else
12077         echo "I'm unable to compile the test program." >&4
12078         echo "I'll assume ASCII or some ISO Latin." >&4
12079 fi
12080 $rm -f tebcdic.c tebcdic
12081 set ebcdic
12082 eval $setvar
12083
12084 echo " "
12085 $cat >&4 <<EOM
12086 Checking how to flush all pending stdio output...
12087 EOM
12088 # I only know how to find the first 32 possibly open files on SunOS.
12089 # See also hints/sunos_4_1.sh and util.c  --AD
12090 case "$osname" in
12091 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12092 esac
12093 $cat >>try.c <<EOCP
12094 #include <stdio.h>
12095 #$i_unistd I_UNISTD
12096 #ifdef I_UNISTD
12097 # include <unistd.h>
12098 #endif
12099 #$d_sysconf HAS_SYSCONF
12100 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12101 #ifdef HAS_STDIO_STREAM_ARRAY
12102 # define STDIO_STREAM_ARRAY $stdio_stream_array
12103 #endif
12104 int main() {
12105   FILE* p = fopen("try.out", "w");
12106 #ifdef TRY_FPUTC
12107   fputc('x', p);
12108 #else
12109 # ifdef TRY_FPRINTF
12110   fprintf(p, "x");
12111 # endif
12112 #endif
12113 #ifdef TRY_FFLUSH_NULL
12114   fflush(NULL);
12115 #endif
12116 #ifdef TRY_FFLUSH_ALL
12117   {
12118     long open_max = -1;
12119 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12120     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12121 # else
12122 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12123     open_max = sysconf(_SC_OPEN_MAX);
12124 #  else
12125 #   ifdef FOPEN_MAX
12126     open_max = FOPEN_MAX;
12127 #   else
12128 #    ifdef OPEN_MAX
12129     open_max = OPEN_MAX;
12130 #    else
12131 #     ifdef _NFILE
12132     open_max = _NFILE;
12133 #     endif
12134 #    endif
12135 #   endif
12136 #  endif
12137 # endif 
12138 # ifdef HAS_STDIO_STREAM_ARRAY
12139     if (open_max > 0) {
12140       long i;
12141       for (i = 0; i < open_max; i++)
12142             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12143                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12144                 STDIO_STREAM_ARRAY[i]._flag)
12145                 fflush(&STDIO_STREAM_ARRAY[i]);
12146     }   
12147   }
12148 # endif
12149 #endif
12150   _exit(42);
12151 }
12152 EOCP
12153 : first we have to find out how _not_ to flush
12154 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12155     output=''
12156     set try -DTRY_FPUTC
12157     if eval $compile; then
12158             $rm -f try.out
12159             ./try$exe_ext 2>/dev/null
12160             if $test ! -s try.out -a "X$?" = X42; then
12161                 output=-DTRY_FPUTC
12162             fi
12163     fi
12164     case "$output" in
12165     '')
12166             set try -DTRY_FPRINTF
12167             $rm -f try.out
12168             if eval $compile; then
12169                     $rm -f try.out
12170                     ./try$exe_ext 2>/dev/null
12171                     if $test ! -s try.out -a "X$?" = X42; then
12172                         output=-DTRY_FPRINTF
12173                     fi
12174             fi
12175         ;;
12176     esac
12177 fi
12178 : check for fflush NULL behaviour
12179 case "$fflushNULL" in
12180 '')     set try -DTRY_FFLUSH_NULL $output
12181         if eval $compile; then
12182                 $rm -f try.out
12183                 ./try$exe_ext 2>/dev/null
12184                 code="$?"
12185                 if $test -s try.out -a "X$code" = X42; then
12186                         fflushNULL="`$cat try.out`"
12187                 else
12188                         if $test "X$code" != X42; then
12189                                 $cat >&4 <<EOM
12190 (If this test failed, don't worry, we'll try another method shortly.)
12191 EOM
12192                         fi
12193                 fi
12194         fi
12195         $rm -f core try.core core.try.*
12196         case "$fflushNULL" in
12197         x)      $cat >&4 <<EOM
12198 Your fflush(NULL) works okay.
12199 EOM
12200                 fflushNULL="$define"
12201                 ;;
12202         '')     $cat >&4 <<EOM
12203 Your fflush(NULL) isn't working (contrary to ANSI C).
12204 EOM
12205                 fflushNULL="$undef"
12206                 ;;
12207         *)      $cat >&4 <<EOM
12208 Cannot figure out whether your fflush(NULL) works or not.
12209 I'm assuming it doesn't (contrary to ANSI C).
12210 EOM
12211                 fflushNULL="$undef"
12212                 ;;
12213         esac
12214         ;;
12215 $define|true|[yY]*)
12216         fflushNULL="$define"
12217         ;;
12218 *)
12219         fflushNULL="$undef"
12220         ;;
12221 esac
12222 : check explicit looping only if NULL did not work
12223 case "$fflushNULL" in
12224 "$undef")
12225         : check for fflush all behaviour
12226         case "$fflushall" in
12227         '')     set try -DTRY_FFLUSH_ALL $output
12228                 if eval $compile; then
12229                         $cat >&4 <<EOM
12230 (Now testing the other method--but note that also this may fail.)
12231 EOM
12232                         $rm -f try.out
12233                         ./try$exe_ext 2>/dev/null
12234                         if $test -s try.out -a "X$?" = X42; then
12235                                 fflushall="`$cat try.out`"
12236                         fi
12237                 fi
12238                 $rm -f core try.core core.try.*
12239                 case "$fflushall" in
12240                 x)      $cat >&4 <<EOM
12241 Whew. Flushing explicitly all the stdio streams works.
12242 EOM
12243                         fflushall="$define"
12244                         ;;
12245                 '')     $cat >&4 <<EOM
12246 Sigh. Flushing explicitly all the stdio streams doesn't work.
12247 EOM
12248                         fflushall="$undef"
12249                         ;;
12250                 *)      $cat >&4 <<EOM
12251 Cannot figure out whether flushing stdio streams explicitly works or not.
12252 I'm assuming it doesn't.
12253 EOM
12254                         fflushall="$undef"
12255                         ;;
12256                 esac
12257                 ;;
12258         "$define"|true|[yY]*)
12259                 fflushall="$define"
12260                 ;;
12261         *)
12262                 fflushall="$undef"
12263                 ;;
12264         esac
12265         ;;
12266 *)      fflushall="$undef"      
12267         ;;
12268 esac
12269 case "$fflushNULL$fflushall" in
12270 undefundef)
12271         $cat <<EOM
12272 I cannot figure out how to flush pending stdio output.
12273 EOM
12274         ;;
12275 esac
12276 $rm -f try.* try$exe_ext
12277
12278 : Store the full pathname to the ar program for use in the C program
12279 : Respect a hint or command line value for full_ar.
12280 case "$full_ar" in
12281 '') full_ar=$ar ;;
12282 esac
12283
12284 : Store the full pathname to the sed program for use in the C program
12285 full_sed=$sed
12286
12287 : see what type gids are declared as in the kernel
12288 echo " "
12289 echo "Looking for the type for group ids returned by getgid()."
12290 set gid_t gidtype xxx stdio.h sys/types.h
12291 eval $typedef
12292 case "$gidtype" in
12293 xxx)
12294         xxx=`./findhdr sys/user.h`
12295         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12296         case $1 in
12297         unsigned) dflt="$1 $2" ;;
12298         *) dflt="$1" ;;
12299         esac
12300         ;;
12301 *) dflt="$gidtype";;
12302 esac
12303 case "$gidtype" in
12304 gid_t) echo "gid_t found." ;;
12305 *)      rp="What is the type for group ids returned by getgid()?"
12306         . ./myread
12307         gidtype="$ans"
12308         ;;
12309 esac
12310
12311 echo " "
12312 case "$gidtype" in
12313 *_t) zzz="$gidtype"     ;;
12314 *)   zzz="gid"          ;;
12315 esac
12316 echo "Checking the size of $zzz..." >&4 
12317 cat > try.c <<EOCP
12318 #include <sys/types.h>
12319 #include <stdio.h>
12320 int main() {
12321     printf("%d\n", (int)sizeof($gidtype));
12322     exit(0);
12323 }
12324 EOCP
12325 set try
12326 if eval $compile_ok; then
12327         yyy=`./try`
12328         case "$yyy" in
12329         '')     gidsize=4
12330                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12331                 ;;
12332         *)      gidsize=$yyy
12333                 echo "Your $zzz size is $gidsize bytes."
12334                 ;;
12335         esac
12336 else
12337         gidsize=4
12338         echo "(I can't compile the test program--guessing $gidsize.)" >&4
12339 fi
12340
12341
12342 echo " "
12343 case "$gidtype" in
12344 *_t) zzz="$gidtype"     ;;
12345 *)   zzz="gid"          ;;
12346 esac
12347 echo "Checking the sign of $zzz..." >&4 
12348 cat > try.c <<EOCP
12349 #include <sys/types.h>
12350 #include <stdio.h>
12351 int main() {
12352         $gidtype foo = -1;
12353         if (foo < 0)
12354                 printf("-1\n");
12355         else
12356                 printf("1\n");
12357 }
12358 EOCP
12359 set try
12360 if eval $compile; then
12361         yyy=`./try`
12362         case "$yyy" in
12363         '')     gidsign=1
12364                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12365                 ;;
12366         *)      gidsign=$yyy
12367                 case "$gidsign" in
12368                  1) echo "Your $zzz is unsigned." ;;
12369                 -1) echo "Your $zzz is signed."   ;;
12370                 esac
12371                 ;;
12372         esac
12373 else
12374         gidsign=1
12375         echo "(I can't compile the test program--guessing unsigned.)" >&4
12376 fi
12377
12378
12379 echo " "
12380
12381 if $test X"$quadtype" != X; then
12382
12383 echo "Checking how to print 64-bit integers..." >&4
12384
12385 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12386         $cat >try.c <<'EOCP'
12387 #include <sys/types.h>
12388 #include <stdio.h>
12389 int main() {
12390   int q = 12345678901;
12391   printf("%ld\n", q);
12392 }
12393 EOCP
12394         set try
12395         if eval $compile; then
12396                 yyy=`./try$exe_ext`
12397                 case "$yyy" in
12398                 12345678901)
12399                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12400                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12401                         echo "We will use %d."
12402                         ;;
12403                 esac
12404         fi
12405 fi
12406
12407 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12408         $cat >try.c <<'EOCP'
12409 #include <sys/types.h>
12410 #include <stdio.h>
12411 int main() {
12412   long q = 12345678901;
12413   printf("%ld\n", q);
12414 }
12415 EOCP
12416         set try
12417         if eval $compile; then
12418                 yyy=`./try$exe_ext`
12419                 case "$yyy" in
12420                 12345678901)
12421                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12422                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12423                         echo "We will use %ld."
12424                         ;;
12425                 esac
12426         fi
12427 fi
12428
12429 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12430         $cat >try.c <<'EOCP'
12431 #include <sys/types.h>
12432 #include <inttypes.h>
12433 #include <stdio.h>
12434 int main() {
12435   int64_t q = 12345678901;
12436   printf("%" PRId64 "\n", q);
12437 }
12438 EOCP
12439         set try
12440         if eval $compile; then
12441                 yyy=`./try$exe_ext`
12442                 case "$yyy" in
12443                 12345678901)
12444                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12445                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12446                         echo "We will use the C9X style."
12447                         ;;
12448                 esac
12449         fi
12450 fi
12451
12452 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12453         $cat >try.c <<'EOCP'
12454 #include <sys/types.h>
12455 #include <stdio.h>
12456 int main() {
12457   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12458   printf("%lld\n", q);
12459 }
12460 EOCP
12461         set try
12462         if eval $compile; then
12463                 yyy=`./try$exe_ext`
12464                 case "$yyy" in
12465                 12345678901)
12466                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12467                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12468                         echo "We will use the %lld style."
12469                         ;;
12470                 esac
12471         fi
12472 fi
12473
12474 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12475         $cat >try.c <<EOCP
12476 #include <sys/types.h>
12477 #include <stdio.h>
12478 int main() {
12479   $quadtype q = 12345678901;
12480   printf("%Ld\n", q);
12481 }
12482 EOCP
12483         set try
12484         if eval $compile; then
12485                 yyy=`./try$exe_ext`
12486                 case "$yyy" in
12487                 12345678901)
12488                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12489                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12490                         echo "We will use %Ld."
12491                         ;;
12492                 esac
12493         fi
12494 fi
12495
12496 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12497         $cat >try.c <<EOCP
12498 #include <sys/types.h>
12499 #include <stdio.h>
12500 int main() {
12501   $quadtype q = 12345678901;
12502   printf("%qd\n", q);
12503 }
12504 EOCP
12505         set try
12506         if eval $compile; then
12507                 yyy=`./try$exe_ext`
12508                 case "$yyy" in
12509                 12345678901)
12510                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12511                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12512                         echo "We will use %qd."
12513                         ;;
12514                 esac
12515         fi
12516 fi
12517
12518 if $test X"$sPRId64" = X; then
12519         echo "Cannot figure out how to print 64-bit integers." >&4
12520 fi
12521
12522 $rm -f try try.*
12523
12524 fi
12525
12526 case "$sPRId64" in
12527 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
12528         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
12529         ;;
12530 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
12531         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
12532         ;;
12533 esac
12534
12535
12536 echo " "
12537 $echo "Checking the format strings to be used for Perl's internal types..." >&4
12538
12539 if $test X"$ivsize" = X8; then
12540         ivdformat="$sPRId64"
12541         uvuformat="$sPRIu64"
12542         uvoformat="$sPRIo64"
12543         uvxformat="$sPRIx64"
12544 else
12545         if $test X"$ivsize" = X"$longsize"; then
12546                 ivdformat='"ld"'
12547                 uvuformat='"lu"'
12548                 uvoformat='"lo"'
12549                 uvxformat='"lx"'
12550         else
12551                 if $test X"$ivsize" = X"$intsize"; then
12552                         ivdformat='"d"'
12553                         uvuformat='"u"'
12554                         uvoformat='"o"'
12555                         uvxformat='"x"'
12556                 else
12557                         : far out
12558                         if $test X"$ivsize" = X"$shortsize"; then
12559                                 ivdformat='"hd"'
12560                                 uvuformat='"hu"'
12561                                 uvoformat='"ho"'
12562                                 uvxformat='"hx"'
12563                         fi
12564                 fi
12565         fi
12566 fi
12567
12568 case "$ivdformat" in
12569 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
12570     exit 1
12571     ;;
12572 esac
12573
12574
12575 echo " "
12576 $echo "Checking the format string to be used for gids..." >&4
12577
12578 case "$gidsign" in
12579 -1)     if $test X"$gidsize" = X"$ivsize"; then
12580                 gidformat="$ivdformat"
12581         else
12582                 if $test X"$gidsize" = X"$longsize"; then
12583                         gidformat='"ld"'
12584                 else
12585                         if $test X"$gidsize" = X"$intsize"; then
12586                                 gidformat='"d"'
12587                         else
12588                                 if $test X"$gidsize" = X"$shortsize"; then
12589                                         gidformat='"hd"'
12590                                 fi
12591                         fi
12592                 fi
12593         fi
12594         ;;
12595 *)      if $test X"$gidsize" = X"$uvsize"; then
12596                 gidformat="$uvuformat"
12597         else
12598                 if $test X"$gidsize" = X"$longsize"; then
12599                         gidformat='"lu"'
12600                 else
12601                         if $test X"$gidsize" = X"$intsize"; then
12602                                 gidformat='"u"'
12603                         else
12604                                 if $test X"$gidsize" = X"$shortsize"; then
12605                                         gidformat='"hu"'
12606                                 fi
12607                         fi
12608                 fi
12609         fi
12610         ;;
12611 esac
12612
12613 : see if getgroups exists
12614 set getgroups d_getgrps
12615 eval $inlibc
12616
12617 : see if setgroups exists
12618 set setgroups d_setgrps
12619 eval $inlibc
12620
12621
12622 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
12623 echo " "
12624 case "$d_getgrps$d_setgrps" in
12625 *define*)
12626         case "$groupstype" in
12627         '') dflt="$gidtype" ;;
12628         *)  dflt="$groupstype" ;;
12629         esac
12630         $cat <<EOM
12631 What type of pointer is the second argument to getgroups() and setgroups()?
12632 Usually this is the same as group ids, $gidtype, but not always.
12633
12634 EOM
12635         rp='What type pointer is the second argument to getgroups() and setgroups()?'
12636         . ./myread
12637         groupstype="$ans"
12638         ;;
12639 *)  groupstype="$gidtype";;
12640 esac
12641
12642 echo " "
12643 echo "Checking if your $make program sets \$(MAKE)..." >&4
12644 case "$make_set_make" in
12645 '')
12646         $sed 's/^X //' > testmake.mak << 'EOF'
12647 Xall:
12648 X       @echo 'maketemp="$(MAKE)"'
12649 EOF
12650         case "`$make -f testmake.mak 2>/dev/null`" in
12651         *maketemp=*) make_set_make='#' ;;
12652         *)      make_set_make="MAKE=$make" ;;
12653         esac
12654         $rm -f testmake.mak
12655         ;;
12656 esac
12657 case "$make_set_make" in
12658 '#') echo "Yup, it does.";;
12659 *) echo "Nope, it doesn't.";;
12660 esac
12661
12662 : see what type is used for mode_t
12663 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
12664 set mode_t modetype int stdio.h sys/types.h
12665 eval $typedef_ask
12666
12667 : define a fucntion to check prototypes
12668 $cat > protochk <<EOSH
12669 $startsh
12670 cc="$cc"
12671 optimize="$optimize"
12672 ccflags="$ccflags"
12673 prototype="$prototype"
12674 define="$define"
12675 rm=$rm
12676 EOSH
12677
12678 $cat >> protochk <<'EOSH'
12679
12680 $rm -f try.c
12681 foo="$1"
12682 shift
12683 while test $# -ge 2; do
12684         case "$1" in
12685                 $define) echo "#include <$2>" >> try.c ;;
12686                 literal) echo "$2" >> try.c ;;
12687         esac
12688     shift 2
12689 done
12690 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
12691 cat >> try.c <<'EOCP'
12692 #ifdef CAN_PROTOTYPE
12693 #define _(args) args
12694 #else
12695 #define _(args) ()
12696 #endif
12697 EOCP
12698 echo "$foo" >> try.c
12699 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
12700 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
12701 status=$?
12702 $rm -f try.[co]
12703 exit $status
12704 EOSH
12705 chmod +x protochk
12706 $eunicefix protochk
12707
12708 : see what type is used for size_t
12709 rp="What is the type used for the length parameter for string functions?"
12710 set size_t sizetype 'unsigned int' stdio.h sys/types.h
12711 eval $typedef_ask
12712
12713 : check for type of arguments to gethostbyaddr. 
12714 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
12715         case "$d_gethbyaddr" in
12716         $define)
12717                 $cat <<EOM
12718
12719 Checking to see what type of arguments are accepted by gethostbyaddr().
12720 EOM
12721                 hdrs="$define sys/types.h
12722                         $d_socket sys/socket.h 
12723                         $i_niin netinet/in.h 
12724                         $i_netdb netdb.h
12725                         $i_unistd unistd.h"
12726                 : The first arg can 'char *' or 'void *'
12727                 : The second arg is some of integral type
12728                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
12729                         for yyy in size_t long int; do
12730                                 case "$netdb_host_type" in
12731                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
12732                                         if ./protochk "$try" $hdrs; then
12733                                                 echo "Your system accepts $xxx for the first arg."
12734                                                 echo "...and $yyy for the second arg."
12735                                                 netdb_host_type="$xxx"
12736                                                 netdb_hlen_type="$yyy"
12737                                         fi
12738                                         ;;
12739                                 esac
12740                         done
12741                 done
12742                 : In case none of those worked, prompt the user.
12743                 case "$netdb_host_type" in
12744                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
12745                         dflt='char *'
12746                         . ./myread
12747                         netdb_host_type=$ans
12748                         rp='What is the type for the 2nd argument to gethostbyaddr?'
12749                         dflt="$sizetype"
12750                         . ./myread
12751                         netdb_hlen_type=$ans
12752                         ;;
12753                 esac
12754                 ;;
12755         *)      : no gethostbyaddr, so pick harmless defaults
12756                 netdb_host_type='char *'
12757                 netdb_hlen_type="$sizetype"
12758                 ;;
12759         esac
12760         # Remove the "const" if needed. -- but then we'll have a 
12761         # prototype clash!
12762         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
12763 fi
12764
12765 : check for type of argument to gethostbyname. 
12766 if test "X$netdb_name_type" = X ; then
12767         case "$d_gethbyname" in
12768         $define)
12769                 $cat <<EOM
12770
12771 Checking to see what type of argument is accepted by gethostbyname().
12772 EOM
12773                 hdrs="$define sys/types.h
12774                         $d_socket sys/socket.h 
12775                         $i_niin netinet/in.h 
12776                         $i_netdb netdb.h
12777                         $i_unistd unistd.h"
12778                 for xxx in "const char *" "char *"; do
12779                         case "$netdb_name_type" in
12780                         '')     try="extern struct hostent *gethostbyname($xxx);"
12781                                 if ./protochk "$try" $hdrs; then
12782                                         echo "Your system accepts $xxx."
12783                                         netdb_name_type="$xxx"
12784                                 fi
12785                                 ;;
12786                         esac
12787                 done
12788                 : In case none of those worked, prompt the user.
12789                 case "$netdb_name_type" in
12790                 '')     rp='What is the type for the 1st argument to gethostbyname?'
12791                         dflt='char *'
12792                         . ./myread
12793                         netdb_name_type=$ans
12794                         ;;
12795                 esac
12796                 ;;
12797         *)      : no gethostbyname, so pick harmless default
12798                 netdb_name_type='char *'
12799                 ;;
12800         esac
12801 fi
12802
12803 : check for type of 1st argument to getnetbyaddr. 
12804 if test "X$netdb_net_type" = X ; then
12805         case "$d_getnbyaddr" in
12806         $define)
12807                 $cat <<EOM
12808
12809 Checking to see what type of 1st argument is accepted by getnetbyaddr().
12810 EOM
12811                 hdrs="$define sys/types.h
12812                         $d_socket sys/socket.h 
12813                         $i_niin netinet/in.h 
12814                         $i_netdb netdb.h
12815                         $i_unistd unistd.h"
12816                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
12817                         case "$netdb_net_type" in
12818                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
12819                                 if ./protochk "$try" $hdrs; then
12820                                         echo "Your system accepts $xxx."
12821                                         netdb_net_type="$xxx"
12822                                 fi
12823                                 ;;
12824                         esac
12825                 done
12826                 : In case none of those worked, prompt the user.
12827                 case "$netdb_net_type" in
12828                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
12829                         dflt='long'
12830                         . ./myread
12831                         netdb_net_type=$ans
12832                         ;;
12833                 esac
12834                 ;;
12835         *)      : no getnetbyaddr, so pick harmless default
12836                 netdb_net_type='long'
12837                 ;;
12838         esac
12839 fi
12840 : locate the preferred pager for this system
12841 case "$pager" in
12842 '')
12843         dflt=''
12844         case "$pg" in
12845         /*) dflt=$pg;;
12846         esac
12847         case "$more" in
12848         /*) dflt=$more;;
12849         esac
12850         case "$less" in
12851         /*) dflt=$less;;
12852         esac
12853         case "$dflt" in
12854         '') dflt=/usr/ucb/more;;
12855         esac
12856         ;;
12857 *) dflt="$pager";;
12858 esac
12859 echo " "
12860 fn=f/
12861 rp='What pager is used on your system?'
12862 . ./getfile
12863 pager="$ans"
12864
12865 : see what type pids are declared as in the kernel
12866 rp="What is the type of process ids on this system?"
12867 set pid_t pidtype int stdio.h sys/types.h
12868 eval $typedef_ask
12869
12870 : Find earliest binary compatible site_perl subdirectory perl can use.
12871 case "$bincompat5005" in
12872 "$define") xs_apiversion='5.005' ;;
12873 *) xs_apiversion=$version ;;   # The current site_perl version.
12874 esac
12875 : Find earliest pure perl site_perl subdirectory perl can use.
12876 : The versioned directories started at 5.005.
12877 pm_apiversion='5.005'
12878
12879 : check for length of pointer
12880 echo " "
12881 case "$ptrsize" in
12882 '')
12883         $echo $n "Checking to see how big your pointers are...$c" >&4
12884         if test "$voidflags" -gt 7; then
12885                 echo '#define VOID_PTR char *' > try.c
12886         else
12887                 echo '#define VOID_PTR void *' > try.c
12888         fi
12889         $cat >>try.c <<'EOCP'
12890 #include <stdio.h>
12891 int main()
12892 {
12893     printf("%d\n", (int)sizeof(VOID_PTR));
12894     exit(0);
12895 }
12896 EOCP
12897         set try
12898         if eval $compile_ok; then
12899                 ptrsize=`./try`
12900                 $echo " $ptrsize bytes." >&4
12901         else
12902                 dflt='4'
12903                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
12904                 rp="What is the size of a pointer (in bytes)?"
12905                 . ./myread
12906                 ptrsize="$ans"
12907         fi
12908         ;;
12909 esac
12910 $rm -f try.c try
12911
12912 : see if ar generates random libraries by itself
12913 echo " "
12914 echo "Checking how to generate random libraries on your machine..." >&4
12915 echo 'int bar1() { return bar2(); }' > bar1.c
12916 echo 'int bar2() { return 2; }' > bar2.c
12917 $cat > foo.c <<'EOP'
12918 int main() { printf("%d\n", bar1()); exit(0); }
12919 EOP
12920 $cc $ccflags -c bar1.c >/dev/null 2>&1
12921 $cc $ccflags -c bar2.c >/dev/null 2>&1
12922 $cc $ccflags -c foo.c >/dev/null 2>&1
12923 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
12924 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12925         ./foobar >/dev/null 2>&1; then
12926         echo "$ar appears to generate random libraries itself."
12927         orderlib=false
12928         ranlib=":"
12929 elif $ar ts bar$_a >/dev/null 2>&1 &&
12930         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12931         ./foobar >/dev/null 2>&1; then
12932                 echo "a table of contents needs to be added with '$ar ts'."
12933                 orderlib=false
12934                 ranlib="$ar ts"
12935 else
12936         case "$ranlib" in
12937         :) ranlib='';;
12938         '')
12939                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
12940                 $test -f $ranlib || ranlib=''
12941                 ;;
12942         esac
12943         if $test -n "$ranlib"; then
12944                 echo "your system has '$ranlib'; we'll use that."
12945                 orderlib=false
12946         else
12947                 echo "your system doesn't seem to support random libraries"
12948                 echo "so we'll use lorder and tsort to order the libraries."
12949                 orderlib=true
12950                 ranlib=":"
12951         fi
12952 fi
12953 $rm -f foo* bar* 
12954
12955 : check for type of arguments to select. 
12956 case "$selecttype" in
12957 '') case "$d_select" in
12958         $define)
12959                 echo " "
12960                 $cat <<EOM
12961 Checking to see what type of arguments are accepted by select().
12962 EOM
12963                 hdrs="$define sys/types.h
12964                         $i_systime sys/time.h 
12965                         $i_sysselct sys/select.h
12966                         $d_socket sys/socket.h"
12967                 : The first arg can be int, unsigned, or size_t
12968                 : The last arg may or may not be 'const'
12969                 val=''
12970                 : void pointer has been seen but using that
12971                 : breaks the selectminbits test
12972                 for xxx in 'fd_set *' 'int *'; do
12973                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
12974                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
12975                                         case "$val" in
12976                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
12977                                                 if ./protochk "$try" $hdrs; then
12978                                                         echo "Your system accepts $xxx."
12979                                                         val="$xxx"
12980                                                 fi
12981                                                 ;;
12982                                         esac
12983                                 done
12984                         done
12985                 done
12986                 case "$val" in
12987                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
12988                         case "$d_fd_set" in
12989                                 $define) dflt="fd_set *" ;;
12990                                 *)              dflt="int *" ;;
12991                         esac
12992                         . ./myread
12993                         val=$ans
12994                         ;;
12995                 esac
12996                 selecttype="$val"
12997                 ;;
12998         *)      : no select, so pick a harmless default
12999                 selecttype='int *'
13000                 ;;
13001         esac
13002         ;;
13003 esac
13004
13005 : check for the select 'width'
13006 case "$selectminbits" in
13007 '') case "$d_select" in
13008         $define)
13009                 $cat <<EOM
13010
13011 Checking to see on how many bits at a time your select() operates...
13012 EOM
13013                 $cat >try.c <<EOCP
13014 #include <sys/types.h>
13015 #$i_time I_TIME
13016 #$i_systime I_SYS_TIME
13017 #$i_systimek I_SYS_TIME_KERNEL
13018 #ifdef I_TIME
13019 #   include <time.h>
13020 #endif
13021 #ifdef I_SYS_TIME
13022 #   ifdef I_SYS_TIME_KERNEL
13023 #       define KERNEL
13024 #   endif
13025 #   include <sys/time.h>
13026 #   ifdef I_SYS_TIME_KERNEL
13027 #       undef KERNEL
13028 #   endif
13029 #endif
13030 #$i_sysselct I_SYS_SELECT
13031 #ifdef I_SYS_SELECT
13032 #include <sys/select.h>
13033 #endif
13034 #$d_socket HAS_SOCKET
13035 #ifdef HAS_SOCKET
13036 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13037 #endif
13038 #include <stdio.h>
13039 $selecttype b;
13040 #define S sizeof(*(b))
13041 #define MINBITS 64
13042 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13043 #define NBITS  (NBYTES * 8)
13044 int main() {
13045     char s[NBYTES];
13046     struct timeval t;
13047     int i;
13048     FILE* fp;
13049     int fd;
13050
13051     fclose(stdin);
13052     fp = fopen("try.c", "r");
13053     if (fp == 0)
13054       exit(1);
13055     fd = fileno(fp);
13056     if (fd < 0)
13057       exit(2);
13058     b = ($selecttype)s;
13059     for (i = 0; i < NBITS; i++)
13060         FD_SET(i, b);
13061     t.tv_sec  = 0;
13062     t.tv_usec = 0;
13063     select(fd + 1, b, 0, 0, &t);
13064     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13065     printf("%d\n", i + 1);
13066     return 0;
13067 }
13068 EOCP
13069                 set try
13070                 if eval $compile_ok; then
13071                         selectminbits=`./try`
13072                         case "$selectminbits" in
13073                         '')     cat >&4 <<EOM
13074 Cannot figure out on how many bits at a time your select() operates.
13075 I'll play safe and guess it is 32 bits.
13076 EOM
13077                                 selectminbits=32
13078                                 bits="32 bits"
13079                                 ;;
13080                         1)      bits="1 bit" ;;
13081                         *)      bits="$selectminbits bits" ;;
13082                         esac
13083                         echo "Your select() operates on $bits at a time." >&4
13084                 else
13085                         rp='What is the minimum number of bits your select() operates on?'
13086                         case "$byteorder" in
13087                         1234|12345678)  dflt=32 ;;
13088                         *)              dflt=1  ;;
13089                         esac
13090                         . ./myread
13091                         val=$ans
13092                         selectminbits="$val"
13093                 fi
13094                 $rm -f try.* try
13095                 ;;
13096         *)      : no select, so pick a harmless default
13097                 selectminbits='32'
13098                 ;;
13099         esac
13100         ;;
13101 esac
13102
13103 : Trace out the files included by signal.h, then look for SIGxxx names.
13104 : Remove SIGARRAYSIZE used by HPUX.
13105 : Remove SIGSTKSIZE used by Linux.
13106 : Remove SIGSTKSZ used by Posix.
13107 : Remove SIGTYP void lines used by OS2.
13108 : Some cpps, like os390, dont give the file name anywhere
13109 if [ "X$fieldn" = X ]; then
13110         : Just make some guesses.  We check them later.
13111         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13112 else
13113         xxx=`echo '#include <signal.h>' |
13114         $cppstdin $cppminus $cppflags 2>/dev/null |
13115         $grep '^[       ]*#.*include' | 
13116         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13117 fi
13118 : Check this list of files to be sure we have parsed the cpp output ok.
13119 : This will also avoid potentially non-existent files, such 
13120 : as ../foo/bar.h
13121 xxxfiles=''
13122 for xx in $xxx /dev/null ; do
13123         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13124 done
13125 : If we have found no files, at least try signal.h
13126 case "$xxxfiles" in
13127 '')     xxxfiles=`./findhdr signal.h` ;;
13128 esac
13129 xxx=`awk '
13130 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13131         print substr($2, 4, 20)
13132 }
13133 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13134         print substr($3, 4, 20)
13135 }' $xxxfiles`
13136 : Append some common names just in case the awk scan failed.
13137 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13138 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13139 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13140 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13141 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13142
13143 : generate a few handy files for later
13144 $cat > signal.c <<'EOCP'
13145 #include <sys/types.h>
13146 #include <signal.h>
13147 #include <stdio.h>
13148 int main() {
13149
13150 /* Strange style to avoid deeply-nested #if/#else/#endif */
13151 #ifndef NSIG
13152 #  ifdef _NSIG
13153 #    define NSIG (_NSIG)
13154 #  endif
13155 #endif
13156
13157 #ifndef NSIG
13158 #  ifdef SIGMAX
13159 #    define NSIG (SIGMAX+1)
13160 #  endif
13161 #endif
13162
13163 #ifndef NSIG
13164 #  ifdef SIG_MAX
13165 #    define NSIG (SIG_MAX+1)
13166 #  endif
13167 #endif
13168
13169 #ifndef NSIG
13170 #  ifdef MAXSIG
13171 #    define NSIG (MAXSIG+1)
13172 #  endif
13173 #endif
13174
13175 #ifndef NSIG
13176 #  ifdef MAX_SIG
13177 #    define NSIG (MAX_SIG+1)
13178 #  endif
13179 #endif
13180
13181 #ifndef NSIG
13182 #  ifdef SIGARRAYSIZE
13183 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13184 #  endif
13185 #endif
13186
13187 #ifndef NSIG
13188 #  ifdef _sys_nsig
13189 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13190 #  endif
13191 #endif
13192
13193 /* Default to some arbitrary number that's big enough to get most
13194    of the common signals.
13195 */
13196 #ifndef NSIG
13197 #    define NSIG 50
13198 #endif
13199
13200 printf("NSIG %d\n", NSIG);
13201
13202 #ifndef JUST_NSIG
13203
13204 EOCP
13205
13206 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13207 {
13208         printf "#ifdef SIG"; printf $1; printf "\n"
13209         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13210         printf $1; printf ");\n"
13211         printf "#endif\n"
13212 }
13213 END {
13214         printf "#endif /* JUST_NSIG */\n";
13215         printf "exit(0);\n}\n";
13216 }
13217 ' >>signal.c
13218 $cat >signal.awk <<'EOP'
13219 BEGIN { ndups = 0 }
13220 $1 ~ /^NSIG$/ { nsig = $2 }
13221 ($1 !~ /^NSIG$/) && (NF == 2) {
13222     if ($2 > maxsig) { maxsig = $2 }
13223     if (sig_name[$2]) {
13224         dup_name[ndups] = $1
13225         dup_num[ndups] = $2
13226         ndups++ 
13227     }
13228     else {
13229         sig_name[$2] = $1
13230         sig_num[$2] = $2
13231     }
13232 }
13233 END { 
13234     if (nsig == 0) {
13235         nsig = maxsig + 1
13236     }
13237     printf("NSIG %d\n", nsig);
13238     for (n = 1; n < nsig; n++) {
13239         if (sig_name[n]) {
13240             printf("%s %d\n", sig_name[n], sig_num[n])
13241         }
13242         else {
13243             printf("NUM%d %d\n", n, n) 
13244         }
13245     }
13246     for (n = 0; n < ndups; n++) {
13247         printf("%s %d\n", dup_name[n], dup_num[n])
13248     }
13249 }
13250 EOP
13251 $cat >signal_cmd <<EOS
13252 $startsh
13253 if $test -s signal.lst; then
13254     echo "Using your existing signal.lst file"
13255         exit 0
13256 fi
13257 xxx="$xxx"
13258 EOS
13259 $cat >>signal_cmd <<'EOS'
13260
13261 set signal
13262 if eval $compile_ok; then
13263         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13264 else
13265         echo "(I can't seem be able to compile the whole test program)" >&4
13266         echo "(I'll try it in little pieces.)" >&4
13267         set signal -DJUST_NSIG
13268         if eval $compile_ok; then
13269                 ./signal$_exe > signal.nsg
13270                 $cat signal.nsg
13271         else
13272                 echo "I can't seem to figure out how many signals you have." >&4
13273                 echo "Guessing 50." >&4
13274                 echo 'NSIG 50' > signal.nsg
13275         fi
13276         : Now look at all the signal names, one at a time.
13277         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13278                 $cat > signal.c <<EOCP
13279 #include <sys/types.h>
13280 #include <signal.h>
13281 #include <stdio.h>
13282 int main() {
13283 printf("$xx %d\n", SIG${xx});
13284 return 0;
13285 }
13286 EOCP
13287                 set signal
13288                 if eval $compile; then
13289                         echo "SIG${xx} found."
13290                         ./signal$_exe  >> signal.ls1
13291                 else
13292                         echo "SIG${xx} NOT found."
13293                 fi
13294         done
13295         if $test -s signal.ls1; then
13296                 $cat signal.nsg signal.ls1 |
13297                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13298         fi
13299
13300 fi
13301 if $test -s signal.lst; then
13302         :
13303 else
13304         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13305         echo 'kill -l' >signal
13306         set X `csh -f <signal`
13307         $rm -f signal
13308         shift
13309         case $# in
13310         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13311         esac
13312         echo $@ | $tr ' ' $trnl | \
13313             $awk '{ printf "%s %d\n", $1, ++s; }
13314                   END { printf "NSIG %d\n", ++s }' >signal.lst
13315 fi
13316 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13317 EOS
13318 chmod a+x signal_cmd
13319 $eunicefix signal_cmd
13320
13321 : generate list of signal names
13322 echo " "
13323 case "$sig_name_init" in
13324 '') doinit=yes ;;
13325 *)  case "$sig_num_init" in
13326     ''|*,*) doinit=yes ;;
13327     esac ;;
13328 esac
13329 case "$doinit" in
13330 yes)
13331         echo "Generating a list of signal names and numbers..." >&4
13332         . ./signal_cmd
13333         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13334         sig_name=`$awk 'BEGIN { printf "ZERO " }
13335                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13336         sig_num=`$awk  'BEGIN { printf "0 " }
13337                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13338         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
13339                              !/^NSIG/   { printf "\"%s\", ", $1 }
13340                              END        { printf "0\n" }' signal.lst`
13341         sig_num_init=`$awk  'BEGIN      { printf "0, " }
13342                              !/^NSIG/   { printf "%d, ", $2}
13343                              END        { printf "0\n"}' signal.lst`
13344         ;;
13345 esac
13346 echo "The following $sig_count signals are available:"
13347 echo " "
13348 echo $sig_name | $awk \
13349 'BEGIN { linelen = 0 }
13350 {
13351         for (i = 1; i <= NF; i++) {
13352                 name = "SIG" $i " "
13353                 linelen = linelen + length(name)
13354                 if (linelen > 70) {
13355                         printf "\n"
13356                         linelen = length(name)
13357                 }
13358                 printf "%s", name
13359         }
13360         printf "\n"
13361 }'
13362 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
13363
13364 : see what type is used for signed size_t
13365 set ssize_t ssizetype int stdio.h sys/types.h
13366 eval $typedef
13367 dflt="$ssizetype"
13368 $cat > ssize.c <<EOM
13369 #include <stdio.h>
13370 #include <sys/types.h>
13371 #define Size_t $sizetype
13372 #define SSize_t $dflt
13373 int main()
13374 {
13375         if (sizeof(Size_t) == sizeof(SSize_t))
13376                 printf("$dflt\n");
13377         else if (sizeof(Size_t) == sizeof(int))
13378                 printf("int\n");
13379         else 
13380                 printf("long\n");
13381         exit(0);
13382 }
13383 EOM
13384 echo " "
13385 set ssize
13386 if eval $compile_ok && ./ssize > /dev/null; then
13387         ssizetype=`./ssize`
13388         echo "I'll be using $ssizetype for functions returning a byte count." >&4
13389 else
13390         $cat >&4 <<EOM
13391 Help! I can't compile and run the ssize_t test program: please enlighten me!
13392 (This is probably a misconfiguration in your system or libraries, and
13393 you really ought to fix it.  Still, I'll try anyway.)
13394
13395 I need a type that is the same size as $sizetype, but is guaranteed to
13396 be signed.  Common values are ssize_t, int and long.
13397
13398 EOM
13399         rp="What signed type is the same size as $sizetype?"
13400         . ./myread
13401         ssizetype="$ans"
13402 fi
13403 $rm -f ssize ssize.*
13404
13405 : see what type of char stdio uses.
13406 echo " "
13407 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13408         echo "Your stdio uses unsigned chars." >&4
13409         stdchar="unsigned char"
13410 else
13411         echo "Your stdio uses signed chars." >&4
13412         stdchar="char"
13413 fi
13414
13415 : see if time exists
13416 echo " "
13417 if test "X$d_time" = X -o X"$timetype" = X; then
13418     if set time val -f d_time; eval $csym; $val; then
13419                 echo 'time() found.' >&4
13420                 val="$define"
13421                 rp="What is the type returned by time() on this system?"
13422                 set time_t timetype long stdio.h sys/types.h
13423                 eval $typedef_ask
13424     else
13425                 echo 'time() not found, hope that will do.' >&4
13426                 val="$undef"
13427                 timetype='int';
13428     fi
13429     set d_time
13430     eval $setvar
13431 fi
13432
13433 : see what type uids are declared as in the kernel
13434 echo " "
13435 echo "Looking for the type for user ids returned by getuid()."
13436 set uid_t uidtype xxx stdio.h sys/types.h
13437 eval $typedef
13438 case "$uidtype" in
13439 xxx)
13440         xxx=`./findhdr sys/user.h`
13441         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13442         case $1 in
13443         unsigned) dflt="$1 $2" ;;
13444         *) dflt="$1" ;;
13445         esac
13446         ;;
13447 *) dflt="$uidtype";;
13448 esac
13449 case "$uidtype" in
13450 uid_t)  echo "uid_t found." ;;
13451 *)      rp="What is the type for user ids returned by getuid()?"
13452         . ./myread
13453         uidtype="$ans"
13454         ;;
13455 esac
13456
13457 echo " "
13458 case "$uidtype" in
13459 *_t) zzz="$uidtype"     ;;
13460 *)   zzz="uid"          ;;
13461 esac
13462 echo "Checking the size of $zzz..." >&4 
13463 cat > try.c <<EOCP
13464 #include <sys/types.h>
13465 #include <stdio.h>
13466 int main() {
13467     printf("%d\n", (int)sizeof($uidtype));
13468     exit(0);
13469 }
13470 EOCP
13471 set try
13472 if eval $compile_ok; then
13473         yyy=`./try`
13474         case "$yyy" in
13475         '')     uidsize=4
13476                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
13477                 ;;
13478         *)      uidsize=$yyy
13479                 echo "Your $zzz size is $uidsize bytes."
13480                 ;;
13481         esac
13482 else
13483         uidsize=4
13484         echo "(I can't compile the test program--guessing $uidsize.)" >&4
13485 fi
13486
13487 echo " "
13488 case "$uidtype" in
13489 *_t) zzz="$uidtype"     ;;
13490 *)   zzz="uid"          ;;
13491 esac
13492 echo "Checking the sign of $zzz..." >&4
13493 cat > try.c <<EOCP
13494 #include <sys/types.h>
13495 #include <stdio.h>
13496 int main() {
13497         $uidtype foo = -1;
13498         if (foo < 0)
13499                 printf("-1\n");
13500         else
13501                 printf("1\n");
13502 }
13503 EOCP
13504 set try
13505 if eval $compile; then
13506         yyy=`./try`
13507         case "$yyy" in
13508         '')     uidsign=1
13509                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13510                 ;;
13511         *)      uidsign=$yyy
13512                 case "$uidsign" in
13513                  1) echo "Your $zzz is unsigned." ;;
13514                 -1) echo "Your $zzz is signed."   ;;
13515                 esac
13516                 ;;
13517         esac
13518 else
13519         uidsign=1
13520         echo "(I can't compile the test program--guessing unsigned.)" >&4
13521 fi
13522
13523
13524
13525 echo " "
13526 $echo "Checking the format string to be used for uids..." >&4
13527
13528 case "$uidsign" in
13529 -1)     if $test X"$uidsize" = X"$ivsize"; then
13530                 uidformat="$ivdformat"
13531         else
13532                 if $test X"$uidsize" = X"$longsize"; then
13533                         uidformat='"ld"'
13534                 else
13535                         if $test X"$uidsize" = X"$intsize"; then
13536                                 uidformat='"d"'
13537                         else
13538                                 if $test X"$uidsize" = X"$shortsize"; then
13539                                         uidformat='"hd"'
13540                                 fi
13541                         fi
13542                 fi
13543         fi
13544         ;;
13545 *)      if $test X"$uidsize" = X"$uvsize"; then
13546                 uidformat="$uvuformat"
13547         else
13548                 if $test X"$uidsize" = X"$longsize"; then
13549                         uidformat='"lu"'
13550                 else
13551                         if $test X"$uidsize" = X"$intsize"; then
13552                                 uidformat='"u"'
13553                         else
13554                                 if $test X"$uidsize" = X"$shortsize"; then
13555                                         uidformat='"hu"'
13556                                 fi
13557                         fi
13558                 fi
13559         fi
13560         ;;
13561 esac
13562
13563 : see if dbm.h is available
13564 : see if dbmclose exists
13565 set dbmclose d_dbmclose
13566 eval $inlibc
13567
13568 case "$d_dbmclose" in
13569 $define)
13570         set dbm.h i_dbm
13571         eval $inhdr
13572         case "$i_dbm" in
13573         $define)
13574                 val="$undef"
13575                 set i_rpcsvcdbm
13576                 eval $setvar
13577                 ;;
13578         *)      set rpcsvc/dbm.h i_rpcsvcdbm
13579                 eval $inhdr
13580                 ;;
13581         esac
13582         ;;
13583 *)      echo "We won't be including <dbm.h>"
13584         val="$undef"
13585         set i_dbm
13586         eval $setvar
13587         val="$undef"
13588         set i_rpcsvcdbm
13589         eval $setvar
13590         ;;
13591 esac
13592
13593 : see if this is a sys/file.h system
13594 val=''
13595 set sys/file.h val
13596 eval $inhdr
13597
13598 : do we need to include sys/file.h ?
13599 case "$val" in
13600 "$define")
13601         echo " "
13602         if $h_sysfile; then
13603                 val="$define"
13604                 echo "We'll be including <sys/file.h>." >&4
13605         else
13606                 val="$undef"
13607                 echo "We won't be including <sys/file.h>." >&4
13608         fi
13609         ;;
13610 *)
13611         h_sysfile=false
13612         ;;
13613 esac
13614 set i_sysfile
13615 eval $setvar
13616
13617 : see if fcntl.h is there
13618 val=''
13619 set fcntl.h val
13620 eval $inhdr
13621
13622 : see if we can include fcntl.h
13623 case "$val" in
13624 "$define")
13625         echo " "
13626         if $h_fcntl; then
13627                 val="$define"
13628                 echo "We'll be including <fcntl.h>." >&4
13629         else
13630                 val="$undef"
13631                 if $h_sysfile; then
13632         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
13633                 else
13634                         echo "We won't be including <fcntl.h>." >&4
13635                 fi
13636         fi
13637         ;;
13638 *)
13639         h_fcntl=false
13640         val="$undef"
13641         ;;
13642 esac
13643 set i_fcntl
13644 eval $setvar
13645
13646 : see if this is a iconv.h system
13647 set iconv.h i_iconv
13648 eval $inhdr
13649
13650 : see if locale.h is available
13651 set locale.h i_locale
13652 eval $inhdr
13653
13654 : see if mach cthreads are available
13655 if test "X$usethreads" = "X$define"; then
13656         set mach/cthreads.h i_machcthr
13657         eval $inhdr
13658 else
13659         i_machcthr="$undef"
13660 fi
13661
13662
13663
13664 : see if this is a math.h system
13665 set math.h i_math
13666 eval $inhdr
13667
13668 : see if this is a mntent.h system
13669 set mntent.h i_mntent
13670 eval $inhdr
13671
13672 : see if ndbm.h is available
13673 set ndbm.h t_ndbm
13674 eval $inhdr
13675 case "$t_ndbm" in
13676 $define)
13677         : see if dbm_open exists
13678         set dbm_open d_dbm_open
13679         eval $inlibc
13680         case "$d_dbm_open" in
13681         $undef)
13682                 t_ndbm="$undef"
13683                 echo "We won't be including <ndbm.h>"
13684                 ;;
13685         esac
13686         ;;
13687 esac
13688 val="$t_ndbm"
13689 set i_ndbm
13690 eval $setvar
13691
13692 : see if net/errno.h is available
13693 val=''
13694 set net/errno.h val
13695 eval $inhdr
13696
13697 : Unfortunately, it causes problems on some systems.  Arrgh.
13698 case "$val" in
13699 $define)
13700         cat > try.c <<'EOM'
13701 #include <stdio.h>
13702 #include <errno.h>
13703 #include <net/errno.h>
13704 int func()
13705 {
13706         return ENOTSOCK;
13707 }
13708 EOM
13709         if $cc $ccflags -c try.c >/dev/null 2>&1; then
13710                 echo "We'll be including <net/errno.h>." >&4
13711         else
13712                 echo "We won't be including <net/errno.h>." >&4
13713                 val="$undef"
13714         fi
13715         $rm -f try.* try
13716         ;;
13717 esac
13718 set i_neterrno
13719 eval $setvar
13720
13721 : see if netinet/tcp.h is available
13722 set netinet/tcp.h i_netinettcp
13723 eval $inhdr
13724
13725 : see if this is a poll.h system
13726 set poll.h i_poll
13727 eval $inhdr
13728
13729 echo " "
13730 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
13731 $cat <<'EOSH' > Cppsym.know
13732 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
13733 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
13734 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
13735 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
13736 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
13737 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
13738 bull c cadmus clipper CMU COFF COMPILER_VERSION
13739 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
13740 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
13741 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
13742 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
13743 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
13744 H3050R H3050RX hbullx20 hcx host_mips
13745 hp200 hp300 hp700 HP700 hp800 hp9000
13746 hp9000s200 hp9000s300 hp9000s400 hp9000s500
13747 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
13748 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
13749 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
13750 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
13751 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
13752 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
13753 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
13754 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
13755 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
13756 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
13757 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
13758 MATH_HAS_NO_SIDE_EFFECTS
13759 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
13760 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
13761 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
13762 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
13763 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
13764 NetBSD news1500 news1700 news1800 news1900 news3700
13765 news700 news800 news900 NeXT NLS ns16000 ns32000
13766 ns32016 ns32332 ns32k nsc32000
13767 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
13768 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
13769 pc532 pdp11 PGC PIC plexus PORTAR posix
13770 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
13771 POSIX_C_SOURCE POSIX_SOURCE POWER
13772 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
13773 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
13774 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
13775 sony sony_news sonyrisc sparc sparclite spectrum
13776 stardent stdc STDC_EXT stratos sun sun3 sun386
13777 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
13778 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
13779 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
13780 sysV68 sysV88 Tek4132 Tek4300 titan
13781 tower tower32 tower32_200 tower32_600 tower32_700
13782 tower32_800 tower32_850 tss
13783 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
13784 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
13785 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
13786 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
13787 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
13788 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
13789 z8000
13790 EOSH
13791 # Maybe put other stuff here too.
13792 cat <<EOSH >>Cppsym.know
13793 $osname
13794 EOSH
13795 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
13796 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
13797 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
13798 $rm -f Cppsym.a Cppsym.b
13799 cat <<EOSH > Cppsym
13800 $startsh
13801 if $test \$# -gt 0; then
13802     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
13803     if $test -s Cppsym.got; then
13804         $rm -f Cppsym.got
13805         exit 0
13806     fi
13807     $rm -f Cppsym.got
13808     exit 1
13809 else
13810     $tr " " "$trnl" | ./Cppsym.try
13811     exit 0
13812 fi
13813 EOSH
13814 chmod +x Cppsym
13815 $eunicefix Cppsym
13816 cat <<EOSH > Cppsym.try
13817 $startsh
13818 cat <<'EOCP' > try.c
13819 #include <stdio.h>
13820 int main() {
13821 EOCP
13822 $awk \\
13823 EOSH
13824 cat <<'EOSH' >> Cppsym.try
13825 'length($1) > 0 {
13826     printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", %s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
13827     printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", _%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
13828     printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", __%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
13829     printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", __%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
13830 }'       >> try.c
13831 echo '}' >> try.c
13832 EOSH
13833 cat <<EOSH >> Cppsym.try
13834 cc="$cc"
13835 optimize="$optimize"
13836 ccflags="$ccflags"
13837 ldflags="$ldflags"
13838 libs="$libs"
13839 exe_ext="$exe_ext"
13840 $cc $optimize $ccflags $ldflags -o try try.c $libs && ./try$exe_ext
13841 EOSH
13842 chmod +x Cppsym.try
13843 $eunicefix Cppsym.try
13844 ./Cppsym < Cppsym.know > Cppsym.true
13845 : now check the C compiler for additional symbols
13846 postprocess_cc_v=''
13847 case "$osname" in
13848 aix) postprocess_cc_v="|$tr , ' '" ;;
13849 esac
13850 $cat >ccsym <<EOS
13851 $startsh
13852 $cat >tmp.c <<EOF
13853 extern int foo;
13854 EOF
13855 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
13856 do
13857         case "\$i" in
13858         -D*) echo "\$i" | $sed 's/^-D//';;
13859         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
13860         esac
13861 done
13862 $rm -f try.c
13863 EOS
13864 postprocess_cc_v=''
13865 chmod +x ccsym
13866 $eunicefix ccsym
13867 ./ccsym > ccsym1.raw
13868 if $test -s ccsym1.raw; then
13869        $sort ccsym1.raw | $uniq >ccsym.raw
13870 else
13871        mv ccsym1.raw ccsym.raw
13872 fi
13873
13874 $awk '/\=/ { print $0; next }
13875         { print $0"=1" }' ccsym.raw >ccsym.list
13876 $awk '/\=/ { print $0; next }
13877         { print $0"=1" }' Cppsym.true >ccsym.true
13878 $comm -13 ccsym.true ccsym.list >ccsym.own
13879 $comm -12 ccsym.true ccsym.list >ccsym.com
13880 $comm -23 ccsym.true ccsym.list >ccsym.cpp
13881 also=''
13882 if $test -z ccsym.raw; then
13883         echo "Your C compiler doesn't seem to define any symbols!" >&4
13884         echo " "
13885         echo "However, your C preprocessor defines the following symbols:"
13886         $cat Cppsym.true
13887         ccsymbols=''
13888         cppsymbols=`$cat Cppsym.true`
13889         cppsymbols=`echo $cppsymbols`
13890         cppccsymbols="$cppsymbols"
13891 else
13892         if $test -s ccsym.com; then
13893                 echo "Your C compiler and pre-processor define these symbols:"
13894                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
13895                 also='also '
13896                 symbols='ones'
13897                 cppccsymbols=`$cat ccsym.com`
13898                 cppccsymbols=`echo $cppccsymbols`
13899                 $test "$silent" || sleep 1
13900         fi
13901         if $test -s ccsym.cpp; then
13902                 $test "$also" && echo " "
13903                 echo "Your C pre-processor ${also}defines the following symbols:"
13904                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
13905                 also='further '
13906                 cppsymbols=`$cat ccsym.cpp`
13907                 cppsymbols=`echo $cppsymbols`
13908                 $test "$silent" || sleep 1
13909         fi
13910         if $test -s ccsym.own; then
13911                 $test "$also" && echo " "
13912                 echo "Your C compiler ${also}defines the following cpp symbols:"
13913                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
13914                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
13915                 ccsymbols=`$cat ccsym.own`
13916                 ccsymbols=`echo $ccsymbols`
13917                 $test "$silent" || sleep 1
13918         fi
13919 fi
13920 $rm -f ccsym*
13921
13922 : see if this is a termio system
13923 val="$undef"
13924 val2="$undef"
13925 val3="$undef"
13926 if $test `./findhdr termios.h`; then
13927         set tcsetattr i_termios
13928         eval $inlibc
13929         val3="$i_termios"
13930 fi
13931 echo " "
13932 case "$val3" in
13933 "$define") echo "You have POSIX termios.h... good!" >&4;;
13934 *) if ./Cppsym pyr; then
13935                 case "`/bin/universe`" in
13936                 ucb) if $test `./findhdr sgtty.h`; then
13937                                 val2="$define"
13938                                 echo "<sgtty.h> found." >&4
13939                         else
13940                                 echo "System is pyramid with BSD universe."
13941                                 echo "<sgtty.h> not found--you could have problems." >&4
13942                         fi;;
13943                 *) if $test `./findhdr termio.h`; then
13944                                 val="$define"
13945                                 echo "<termio.h> found." >&4
13946                         else
13947                                 echo "System is pyramid with USG universe."
13948                                 echo "<termio.h> not found--you could have problems." >&4
13949                         fi;;
13950                 esac
13951         elif ./usg; then
13952                 if $test `./findhdr termio.h`; then
13953                         echo "<termio.h> found." >&4
13954                         val="$define"
13955                 elif $test `./findhdr sgtty.h`; then
13956                         echo "<sgtty.h> found." >&4
13957                         val2="$define"
13958                 else
13959 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
13960                 fi
13961         else
13962                 if $test `./findhdr sgtty.h`; then
13963                         echo "<sgtty.h> found." >&4
13964                         val2="$define"
13965                 elif $test `./findhdr termio.h`; then
13966                         echo "<termio.h> found." >&4
13967                         val="$define"
13968                 else
13969 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
13970                 fi
13971         fi;;
13972 esac
13973 set i_termio; eval $setvar
13974 val=$val2; set i_sgtty; eval $setvar
13975 val=$val3; set i_termios; eval $setvar
13976
13977 : see if this is a shadow.h system
13978 set shadow.h i_shadow
13979 eval $inhdr
13980
13981 : see if this is a socks.h system
13982 set socks.h i_socks
13983 eval $inhdr
13984
13985 : see if stdarg is available
13986 echo " "
13987 if $test `./findhdr stdarg.h`; then
13988         echo "<stdarg.h> found." >&4
13989         valstd="$define"
13990 else
13991         echo "<stdarg.h> NOT found." >&4
13992         valstd="$undef"
13993 fi
13994
13995 : see if varags is available
13996 echo " "
13997 if $test `./findhdr varargs.h`; then
13998         echo "<varargs.h> found." >&4
13999 else
14000         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14001 fi
14002
14003 : set up the varargs testing programs
14004 $cat > varargs.c <<EOP
14005 #ifdef I_STDARG
14006 #include <stdarg.h>
14007 #endif
14008 #ifdef I_VARARGS
14009 #include <varargs.h>
14010 #endif
14011
14012 #ifdef I_STDARG
14013 int f(char *p, ...)
14014 #else
14015 int f(va_alist)
14016 va_dcl
14017 #endif
14018 {
14019         va_list ap;
14020 #ifndef I_STDARG
14021         char *p;
14022 #endif
14023 #ifdef I_STDARG
14024         va_start(ap,p);
14025 #else
14026         va_start(ap);
14027         p = va_arg(ap, char *);
14028 #endif
14029         va_end(ap);
14030 }
14031 EOP
14032 $cat > varargs <<EOP
14033 $startsh
14034 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14035         echo "true"
14036 else
14037         echo "false"
14038 fi
14039 $rm -f varargs$_o
14040 EOP
14041 chmod +x varargs
14042
14043 : now check which varargs header should be included
14044 echo " "
14045 i_varhdr=''
14046 case "$valstd" in
14047 "$define")
14048         if `./varargs I_STDARG`; then
14049                 val='stdarg.h'
14050         elif `./varargs I_VARARGS`; then
14051                 val='varargs.h'
14052         fi
14053         ;;
14054 *)
14055         if `./varargs I_VARARGS`; then
14056                 val='varargs.h'
14057         fi
14058         ;;
14059 esac
14060 case "$val" in
14061 '')
14062 echo "I could not find the definition for va_dcl... You have problems..." >&4
14063         val="$undef"; set i_stdarg; eval $setvar
14064         val="$undef"; set i_varargs; eval $setvar
14065         ;;
14066 *) 
14067         set i_varhdr
14068         eval $setvar
14069         case "$i_varhdr" in
14070         stdarg.h)
14071                 val="$define"; set i_stdarg; eval $setvar
14072                 val="$undef"; set i_varargs; eval $setvar
14073                 ;;
14074         varargs.h)
14075                 val="$undef"; set i_stdarg; eval $setvar
14076                 val="$define"; set i_varargs; eval $setvar
14077                 ;;
14078         esac
14079         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14080 esac
14081 $rm -f varargs*
14082
14083 : see if stddef is available
14084 set stddef.h i_stddef
14085 eval $inhdr
14086
14087 : see if sys/access.h is available
14088 set sys/access.h i_sysaccess
14089 eval $inhdr
14090
14091 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14092 set sys/filio.h i_sysfilio
14093 eval $inhdr
14094 echo " "
14095 if $test `./findhdr sys/ioctl.h`; then
14096         val="$define"
14097         echo '<sys/ioctl.h> found.' >&4
14098 else
14099         val="$undef"
14100         if $test $i_sysfilio = "$define"; then
14101             echo '<sys/ioctl.h> NOT found.' >&4
14102         else
14103                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14104                 $test $i_termio = "$define" && xxx="termio.h"
14105                 $test $i_termios = "$define" && xxx="termios.h"
14106 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14107         fi
14108 fi
14109 set i_sysioctl
14110 eval $setvar
14111
14112
14113 : see if this is a syslog.h system
14114 set syslog.h i_syslog
14115 eval $inhdr
14116
14117
14118 : see if this is a sys/mode.h system
14119 set sys/mode.h i_sysmode
14120 eval $inhdr
14121
14122 : see if sys/resource.h has to be included
14123 set sys/resource.h i_sysresrc
14124 eval $inhdr
14125
14126 : see if sys/security.h is available
14127 set sys/security.h i_syssecrt
14128 eval $inhdr
14129
14130 : see if this is a sys/statvfs.h system
14131 set sys/statvfs.h i_sysstatvfs
14132 eval $inhdr
14133
14134 : see if this is a sys/uio.h system
14135 set sys/uio.h i_sysuio
14136 eval $inhdr
14137
14138 : see if this is a sys/un.h system
14139 set sys/un.h i_sysun
14140 eval $inhdr
14141
14142
14143 : see if this is a sys/utsname.h system
14144 set sys/utsname.h i_sysutsname
14145 eval $inhdr
14146
14147 : see if this is a syswait system
14148 set sys/wait.h i_syswait
14149 eval $inhdr
14150
14151 : see if this is a ustat.h system
14152 set ustat.h i_ustat
14153 eval $inhdr
14154
14155 : see if this is an utime system
14156 set utime.h i_utime
14157 eval $inhdr
14158
14159 : see if this is a values.h system
14160 set values.h i_values
14161 eval $inhdr
14162
14163 : see if this is a vfork system
14164 case "$d_vfork" in
14165 "$define")
14166         set vfork.h i_vfork
14167         eval $inhdr
14168         ;;
14169 *)
14170         i_vfork="$undef"
14171         ;;
14172 esac
14173
14174 : see if gdbm.h is available
14175 set gdbm.h t_gdbm
14176 eval $inhdr
14177 case "$t_gdbm" in
14178 $define)
14179         : see if gdbm_open exists
14180         set gdbm_open d_gdbm_open
14181         eval $inlibc
14182         case "$d_gdbm_open" in
14183         $undef)
14184                 t_gdbm="$undef"
14185                 echo "We won't be including <gdbm.h>"
14186                 ;;
14187         esac
14188         ;;
14189 esac
14190 val="$t_gdbm"
14191 set i_gdbm
14192 eval $setvar
14193
14194 echo " "
14195 echo "Looking for extensions..." >&4
14196 : If we are using the old config.sh, known_extensions may contain
14197 : old or inaccurate or duplicate values.
14198 known_extensions=''
14199 nonxs_extensions=''
14200 : We do not use find because it might not be available.
14201 : We do not just use MANIFEST because the user may have dropped
14202 : some additional extensions into the source tree and expect them
14203 : to be built.
14204
14205 : Function to recursively find available extensions, ignoring DynaLoader
14206 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14207 find_extensions='
14208     for xxx in *; do
14209        case "$xxx" in
14210            DynaLoader|dynaload) ;;
14211            *)
14212            if $test -f $xxx/$xxx.xs; then
14213                known_extensions="$known_extensions $1$xxx";
14214            elif $test -f $xxx/Makefile.PL; then
14215                nonxs_extensions="$nonxs_extensions $1$xxx";
14216            else
14217                if $test -d $xxx -a $# -lt 10; then
14218                    set $1$xxx/ $*;
14219                    cd $xxx;
14220                    eval $find_extensions;
14221                    cd ..;
14222                    shift;
14223                fi;
14224            fi
14225            ;;
14226        esac;
14227     done'
14228 tdir=`pwd`
14229 cd $rsrc/ext
14230 set X
14231 shift
14232 eval $find_extensions
14233 set X $nonxs_extensions
14234 shift
14235 nonxs_extensions="$*"
14236 set X $known_extensions
14237 shift
14238 known_extensions="$*"
14239 cd $tdir
14240
14241 : Now see which are supported on this system.
14242 avail_ext=''
14243 for xxx in $known_extensions ; do
14244         case "$xxx" in
14245         DB_File|db_file)
14246                 case "$i_db" in
14247                 $define) avail_ext="$avail_ext $xxx" ;;
14248                 esac
14249                 ;;
14250         GDBM_File|gdbm_fil)
14251                 case "$i_gdbm" in 
14252                 $define) avail_ext="$avail_ext $xxx" ;;
14253                 esac
14254                 ;;
14255         NDBM_File|ndbm_fil)
14256                 case "$i_ndbm" in
14257                 $define)
14258                     case "$osname-$use64bits" in
14259                     hpux-define)
14260                         case "$libs" in
14261                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14262                         esac
14263                         ;;
14264                     *) avail_ext="$avail_ext $xxx" ;;
14265                     esac
14266                     ;;
14267                 esac
14268                 ;;
14269         ODBM_File|odbm_fil) 
14270                 case "${i_dbm}${i_rpcsvcdbm}" in
14271                 *"${define}"*)
14272                     case "$osname-$use64bits" in
14273                     hpux-define)
14274                         case "$libs" in
14275                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14276                         esac
14277                         ;;
14278                     *) avail_ext="$avail_ext $xxx" ;;
14279                     esac
14280                     ;;
14281                 esac
14282                 ;;
14283         POSIX|posix)
14284                 case "$useposix" in
14285                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14286                 esac
14287                 ;;
14288         Opcode|opcode)
14289                 case "$useopcode" in
14290                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14291                 esac
14292                 ;;
14293         Socket|socket)
14294                 case "$d_socket" in 
14295                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14296                 esac
14297                 ;;
14298         Thread|thread)
14299                 case "$usethreads" in 
14300                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14301                 esac
14302                 ;;
14303         IPC/SysV|ipc/sysv)
14304                 : XXX Do we need a useipcsysv variable here
14305                 case "${d_msg}${d_sem}${d_shm}" in 
14306                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14307                 esac
14308                 ;;
14309         *)      avail_ext="$avail_ext $xxx"
14310                 ;;
14311         esac
14312 done
14313
14314 set X $avail_ext
14315 shift
14316 avail_ext="$*"
14317
14318 : Now see which nonxs extensions are supported on this system.
14319 : For now assume all are.
14320 nonxs_ext=''
14321 for xxx in $nonxs_extensions ; do
14322         case "$xxx" in
14323         *)      nonxs_ext="$nonxs_ext $xxx"
14324                 ;;
14325         esac
14326 done
14327
14328 set X $nonxs_ext
14329 shift
14330 nonxs_ext="$*"
14331
14332 case $usedl in
14333 $define)
14334         $cat <<EOM
14335 A number of extensions are supplied with $package.  You may choose to
14336 compile these extensions for dynamic loading (the default), compile
14337 them into the $package executable (static loading), or not include
14338 them at all.  Answer "none" to include no extensions.
14339 Note that DynaLoader is always built and need not be mentioned here.
14340
14341 EOM
14342         case "$dynamic_ext" in
14343         '') dflt="$avail_ext" ;;
14344         *)      dflt="$dynamic_ext"
14345                 # Perhaps we are reusing an old out-of-date config.sh.
14346                 case "$hint" in
14347                 previous)
14348                         if test X"$dynamic_ext" != X"$avail_ext"; then
14349                                 $cat <<EOM
14350 NOTICE:  Your previous config.sh list may be incorrect. 
14351 The extensions now available to you are 
14352         ${avail_ext}
14353 but the default list from your previous config.sh is
14354         ${dynamic_ext} 
14355
14356 EOM
14357                         fi
14358                         ;;
14359                 esac
14360                 ;;
14361         esac
14362         case "$dflt" in
14363         '')     dflt=none;;
14364         esac
14365         rp="What extensions do you wish to load dynamically?"
14366         . ./myread
14367         case "$ans" in
14368         none) dynamic_ext=' ' ;;
14369         *) dynamic_ext="$ans" ;;
14370         esac
14371
14372         case "$static_ext" in
14373         '')
14374                 : Exclude those already listed in dynamic linking
14375                 dflt=''
14376                 for xxx in $avail_ext; do
14377                         case " $dynamic_ext " in
14378                         *" $xxx "*) ;;
14379                         *) dflt="$dflt $xxx" ;;
14380                         esac
14381                 done
14382                 set X $dflt
14383                 shift
14384                 dflt="$*"
14385                 ;;
14386         *)  dflt="$static_ext" 
14387                 ;;
14388         esac
14389
14390         case "$dflt" in
14391         '')     dflt=none;;
14392         esac
14393         rp="What extensions do you wish to load statically?"
14394         . ./myread
14395         case "$ans" in
14396         none) static_ext=' ' ;;
14397         *) static_ext="$ans" ;;
14398         esac
14399         ;;
14400 *)
14401         $cat <<EOM
14402 A number of extensions are supplied with $package.  Answer "none" 
14403 to include no extensions. 
14404 Note that DynaLoader is always built and need not be mentioned here.
14405
14406 EOM
14407         case "$static_ext" in
14408         '') dflt="$avail_ext" ;;
14409         *)      dflt="$static_ext"
14410                 # Perhaps we are reusing an old out-of-date config.sh.
14411                 case "$hint" in
14412                 previous)
14413                         if test X"$static_ext" != X"$avail_ext"; then
14414                                 $cat <<EOM
14415 NOTICE:  Your previous config.sh list may be incorrect. 
14416 The extensions now available to you are 
14417         ${avail_ext}
14418 but the default list from your previous config.sh is
14419         ${static_ext} 
14420
14421 EOM
14422                         fi
14423                         ;;
14424                 esac
14425                 ;;
14426         esac
14427         : Exclude those that are not xs extensions
14428         case "$dflt" in
14429         '')     dflt=none;;
14430         esac
14431         rp="What extensions do you wish to include?"
14432         . ./myread
14433         case "$ans" in
14434         none) static_ext=' ' ;;
14435         *) static_ext="$ans" ;;
14436         esac
14437         ;;
14438 esac
14439
14440 set X $dynamic_ext $static_ext $nonxs_ext
14441 shift
14442 extensions="$*"
14443
14444 : Remove build directory name from cppstdin so it can be used from
14445 : either the present location or the final installed location.
14446 echo " "
14447 : Get out of the UU directory to get correct path name.
14448 cd ..
14449 case "$cppstdin" in
14450 `pwd`/cppstdin)
14451         echo "Stripping down cppstdin path name"
14452         cppstdin=cppstdin
14453         ;;
14454 esac
14455 cd UU
14456
14457 : end of configuration questions
14458 echo " "
14459 echo "End of configuration questions."
14460 echo " "
14461
14462 : back to where it started
14463 if test -d ../UU; then
14464         cd ..
14465 fi
14466
14467 : configuration may be patched via a 'config.over' file
14468 if $test -f config.over; then
14469         echo " "
14470         dflt=y
14471         rp='I see a config.over file.  Do you wish to load it?'
14472         . UU/myread
14473         case "$ans" in
14474         n*) echo "OK, I'll ignore it.";;
14475         *)      . ./config.over
14476                 echo "Configuration override changes have been loaded."
14477                 ;;
14478         esac
14479 fi
14480
14481 : in case they want portability, strip down executable paths
14482 case "$d_portable" in
14483 "$define")
14484         echo " "
14485         echo "Stripping down executable paths..." >&4
14486         for file in $loclist $trylist; do
14487                 eval temp=\$$file
14488                 eval $file=`basename $temp`
14489         done
14490         ;;
14491 esac
14492
14493 : create config.sh file
14494 echo " "
14495 echo "Creating config.sh..." >&4
14496 $spitshell <<EOT >config.sh
14497 $startsh
14498 #
14499 # This file was produced by running the Configure script. It holds all the
14500 # definitions figured out by Configure. Should you modify one of these values,
14501 # do not forget to propagate your changes by running "Configure -der". You may
14502 # instead choose to run each of the .SH files by yourself, or "Configure -S".
14503 #
14504
14505 # Package name      : $package
14506 # Source directory  : $src
14507 # Configuration time: $cf_time
14508 # Configured by     : $cf_by
14509 # Target system     : $myuname
14510
14511 Author='$Author'
14512 Date='$Date'
14513 Header='$Header'
14514 Id='$Id'
14515 Locker='$Locker'
14516 Log='$Log'
14517 Mcc='$Mcc'
14518 RCSfile='$RCSfile'
14519 Revision='$Revision'
14520 Source='$Source'
14521 State='$State'
14522 _a='$_a'
14523 _exe='$_exe'
14524 _o='$_o'
14525 afs='$afs'
14526 alignbytes='$alignbytes'
14527 ansi2knr='$ansi2knr'
14528 aphostname='$aphostname'
14529 api_revision='$api_revision'
14530 api_subversion='$api_subversion'
14531 api_version='$api_version'
14532 api_versionstring='$api_versionstring'
14533 ar='$ar'
14534 archlib='$archlib'
14535 archlibexp='$archlibexp'
14536 archname64='$archname64'
14537 archname='$archname'
14538 archobjs='$archobjs'
14539 awk='$awk'
14540 baserev='$baserev'
14541 bash='$bash'
14542 bin='$bin'
14543 bincompat5005='$bincompat5005'
14544 binexp='$binexp'
14545 bison='$bison'
14546 byacc='$byacc'
14547 byteorder='$byteorder'
14548 c='$c'
14549 castflags='$castflags'
14550 cat='$cat'
14551 cc='$cc'
14552 cccdlflags='$cccdlflags'
14553 ccdlflags='$ccdlflags'
14554 ccflags='$ccflags'
14555 ccsymbols='$ccsymbols'
14556 cf_by='$cf_by'
14557 cf_email='$cf_email'
14558 cf_time='$cf_time'
14559 charsize='$charsize'
14560 chgrp='$chgrp'
14561 chmod='$chmod'
14562 chown='$chown'
14563 clocktype='$clocktype'
14564 comm='$comm'
14565 compress='$compress'
14566 contains='$contains'
14567 cp='$cp'
14568 cpio='$cpio'
14569 cpp='$cpp'
14570 cpp_stuff='$cpp_stuff'
14571 cppccsymbols='$cppccsymbols'
14572 cppflags='$cppflags'
14573 cpplast='$cpplast'
14574 cppminus='$cppminus'
14575 cpprun='$cpprun'
14576 cppstdin='$cppstdin'
14577 cppsymbols='$cppsymbols'
14578 crosscompile='$crosscompile'
14579 cryptlib='$cryptlib'
14580 csh='$csh'
14581 d_Gconvert='$d_Gconvert'
14582 d_PRIEldbl='$d_PRIEldbl'
14583 d_PRIFldbl='$d_PRIFldbl'
14584 d_PRIGldbl='$d_PRIGldbl'
14585 d_PRIX64='$d_PRIX64'
14586 d_PRId64='$d_PRId64'
14587 d_PRIeldbl='$d_PRIeldbl'
14588 d_PRIfldbl='$d_PRIfldbl'
14589 d_PRIgldbl='$d_PRIgldbl'
14590 d_PRIi64='$d_PRIi64'
14591 d_PRIo64='$d_PRIo64'
14592 d_PRIu64='$d_PRIu64'
14593 d_PRIx64='$d_PRIx64'
14594 d_access='$d_access'
14595 d_accessx='$d_accessx'
14596 d_alarm='$d_alarm'
14597 d_archlib='$d_archlib'
14598 d_atolf='$d_atolf'
14599 d_atoll='$d_atoll'
14600 d_attribut='$d_attribut'
14601 d_bcmp='$d_bcmp'
14602 d_bcopy='$d_bcopy'
14603 d_bincompat5005='$d_bincompat5005'
14604 d_bsd='$d_bsd'
14605 d_bsdgetpgrp='$d_bsdgetpgrp'
14606 d_bsdsetpgrp='$d_bsdsetpgrp'
14607 d_bzero='$d_bzero'
14608 d_casti32='$d_casti32'
14609 d_castneg='$d_castneg'
14610 d_charvspr='$d_charvspr'
14611 d_chown='$d_chown'
14612 d_chroot='$d_chroot'
14613 d_chsize='$d_chsize'
14614 d_closedir='$d_closedir'
14615 d_const='$d_const'
14616 d_crypt='$d_crypt'
14617 d_csh='$d_csh'
14618 d_cuserid='$d_cuserid'
14619 d_dbl_dig='$d_dbl_dig'
14620 d_difftime='$d_difftime'
14621 d_dirnamlen='$d_dirnamlen'
14622 d_dlerror='$d_dlerror'
14623 d_dlopen='$d_dlopen'
14624 d_dlsymun='$d_dlsymun'
14625 d_dosuid='$d_dosuid'
14626 d_drand48proto='$d_drand48proto'
14627 d_dup2='$d_dup2'
14628 d_eaccess='$d_eaccess'
14629 d_endgrent='$d_endgrent'
14630 d_endhent='$d_endhent'
14631 d_endnent='$d_endnent'
14632 d_endpent='$d_endpent'
14633 d_endpwent='$d_endpwent'
14634 d_endsent='$d_endsent'
14635 d_endspent='$d_endspent'
14636 d_eofnblk='$d_eofnblk'
14637 d_eunice='$d_eunice'
14638 d_fchmod='$d_fchmod'
14639 d_fchown='$d_fchown'
14640 d_fcntl='$d_fcntl'
14641 d_fd_macros='$d_fd_macros'
14642 d_fd_set='$d_fd_set'
14643 d_fds_bits='$d_fds_bits'
14644 d_fgetpos='$d_fgetpos'
14645 d_flexfnam='$d_flexfnam'
14646 d_flock='$d_flock'
14647 d_fork='$d_fork'
14648 d_fpathconf='$d_fpathconf'
14649 d_fpos64_t='$d_fpos64_t'
14650 d_fs_data_s='$d_fs_data_s'
14651 d_fseeko='$d_fseeko'
14652 d_fsetpos='$d_fsetpos'
14653 d_fstatfs='$d_fstatfs'
14654 d_fstatvfs='$d_fstatvfs'
14655 d_ftello='$d_ftello'
14656 d_ftime='$d_ftime'
14657 d_getcwd='$d_getcwd'
14658 d_getgrent='$d_getgrent'
14659 d_getgrps='$d_getgrps'
14660 d_gethbyaddr='$d_gethbyaddr'
14661 d_gethbyname='$d_gethbyname'
14662 d_gethent='$d_gethent'
14663 d_gethname='$d_gethname'
14664 d_gethostprotos='$d_gethostprotos'
14665 d_getlogin='$d_getlogin'
14666 d_getmnt='$d_getmnt'
14667 d_getmntent='$d_getmntent'
14668 d_getnbyaddr='$d_getnbyaddr'
14669 d_getnbyname='$d_getnbyname'
14670 d_getnent='$d_getnent'
14671 d_getnetprotos='$d_getnetprotos'
14672 d_getpbyname='$d_getpbyname'
14673 d_getpbynumber='$d_getpbynumber'
14674 d_getpent='$d_getpent'
14675 d_getpgid='$d_getpgid'
14676 d_getpgrp2='$d_getpgrp2'
14677 d_getpgrp='$d_getpgrp'
14678 d_getppid='$d_getppid'
14679 d_getprior='$d_getprior'
14680 d_getprotoprotos='$d_getprotoprotos'
14681 d_getpwent='$d_getpwent'
14682 d_getsbyname='$d_getsbyname'
14683 d_getsbyport='$d_getsbyport'
14684 d_getsent='$d_getsent'
14685 d_getservprotos='$d_getservprotos'
14686 d_getspent='$d_getspent'
14687 d_getspnam='$d_getspnam'
14688 d_gettimeod='$d_gettimeod'
14689 d_gnulibc='$d_gnulibc'
14690 d_grpasswd='$d_grpasswd'
14691 d_hasmntopt='$d_hasmntopt'
14692 d_htonl='$d_htonl'
14693 d_iconv='$d_iconv'
14694 d_index='$d_index'
14695 d_inetaton='$d_inetaton'
14696 d_int64t='$d_int64t'
14697 d_isascii='$d_isascii'
14698 d_killpg='$d_killpg'
14699 d_lchown='$d_lchown'
14700 d_ldbl_dig='$d_ldbl_dig'
14701 d_link='$d_link'
14702 d_locconv='$d_locconv'
14703 d_lockf='$d_lockf'
14704 d_longdbl='$d_longdbl'
14705 d_longlong='$d_longlong'
14706 d_lstat='$d_lstat'
14707 d_mblen='$d_mblen'
14708 d_mbstowcs='$d_mbstowcs'
14709 d_mbtowc='$d_mbtowc'
14710 d_memchr='$d_memchr'
14711 d_memcmp='$d_memcmp'
14712 d_memcpy='$d_memcpy'
14713 d_memmove='$d_memmove'
14714 d_memset='$d_memset'
14715 d_mkdir='$d_mkdir'
14716 d_mkdtemp='$d_mkdtemp'
14717 d_mkfifo='$d_mkfifo'
14718 d_mkstemp='$d_mkstemp'
14719 d_mkstemps='$d_mkstemps'
14720 d_mktime='$d_mktime'
14721 d_mmap='$d_mmap'
14722 d_mprotect='$d_mprotect'
14723 d_msg='$d_msg'
14724 d_msg_ctrunc='$d_msg_ctrunc'
14725 d_msg_dontroute='$d_msg_dontroute'
14726 d_msg_oob='$d_msg_oob'
14727 d_msg_peek='$d_msg_peek'
14728 d_msg_proxy='$d_msg_proxy'
14729 d_msgctl='$d_msgctl'
14730 d_msgget='$d_msgget'
14731 d_msgrcv='$d_msgrcv'
14732 d_msgsnd='$d_msgsnd'
14733 d_msync='$d_msync'
14734 d_munmap='$d_munmap'
14735 d_mymalloc='$d_mymalloc'
14736 d_nice='$d_nice'
14737 d_nv_preserves_uv='$d_nv_preserves_uv'
14738 d_off64_t='$d_off64_t'
14739 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
14740 d_oldpthreads='$d_oldpthreads'
14741 d_oldsock='$d_oldsock'
14742 d_open3='$d_open3'
14743 d_pathconf='$d_pathconf'
14744 d_pause='$d_pause'
14745 d_phostname='$d_phostname'
14746 d_pipe='$d_pipe'
14747 d_poll='$d_poll'
14748 d_portable='$d_portable'
14749 d_pthread_yield='$d_pthread_yield'
14750 d_pwage='$d_pwage'
14751 d_pwchange='$d_pwchange'
14752 d_pwclass='$d_pwclass'
14753 d_pwcomment='$d_pwcomment'
14754 d_pwexpire='$d_pwexpire'
14755 d_pwgecos='$d_pwgecos'
14756 d_pwpasswd='$d_pwpasswd'
14757 d_pwquota='$d_pwquota'
14758 d_quad='$d_quad'
14759 d_readdir='$d_readdir'
14760 d_readlink='$d_readlink'
14761 d_rename='$d_rename'
14762 d_rewinddir='$d_rewinddir'
14763 d_rmdir='$d_rmdir'
14764 d_safebcpy='$d_safebcpy'
14765 d_safemcpy='$d_safemcpy'
14766 d_sanemcmp='$d_sanemcmp'
14767 d_sched_yield='$d_sched_yield'
14768 d_scm_rights='$d_scm_rights'
14769 d_seekdir='$d_seekdir'
14770 d_select='$d_select'
14771 d_sem='$d_sem'
14772 d_semctl='$d_semctl'
14773 d_semctl_semid_ds='$d_semctl_semid_ds'
14774 d_semctl_semun='$d_semctl_semun'
14775 d_semget='$d_semget'
14776 d_semop='$d_semop'
14777 d_setegid='$d_setegid'
14778 d_seteuid='$d_seteuid'
14779 d_setgrent='$d_setgrent'
14780 d_setgrps='$d_setgrps'
14781 d_sethent='$d_sethent'
14782 d_setlinebuf='$d_setlinebuf'
14783 d_setlocale='$d_setlocale'
14784 d_setnent='$d_setnent'
14785 d_setpent='$d_setpent'
14786 d_setpgid='$d_setpgid'
14787 d_setpgrp2='$d_setpgrp2'
14788 d_setpgrp='$d_setpgrp'
14789 d_setprior='$d_setprior'
14790 d_setpwent='$d_setpwent'
14791 d_setregid='$d_setregid'
14792 d_setresgid='$d_setresgid'
14793 d_setresuid='$d_setresuid'
14794 d_setreuid='$d_setreuid'
14795 d_setrgid='$d_setrgid'
14796 d_setruid='$d_setruid'
14797 d_setsent='$d_setsent'
14798 d_setsid='$d_setsid'
14799 d_setspent='$d_setspent'
14800 d_setvbuf='$d_setvbuf'
14801 d_sfio='$d_sfio'
14802 d_shm='$d_shm'
14803 d_shmat='$d_shmat'
14804 d_shmatprototype='$d_shmatprototype'
14805 d_shmctl='$d_shmctl'
14806 d_shmdt='$d_shmdt'
14807 d_shmget='$d_shmget'
14808 d_sigaction='$d_sigaction'
14809 d_sigsetjmp='$d_sigsetjmp'
14810 d_socket='$d_socket'
14811 d_sockpair='$d_sockpair'
14812 d_sqrtl='$d_sqrtl'
14813 d_statblks='$d_statblks'
14814 d_statfs_f_flags='$d_statfs_f_flags'
14815 d_statfs_s='$d_statfs_s'
14816 d_statvfs='$d_statvfs'
14817 d_stdio_cnt_lval='$d_stdio_cnt_lval'
14818 d_stdio_ptr_lval='$d_stdio_ptr_lval'
14819 d_stdio_stream_array='$d_stdio_stream_array'
14820 d_stdiobase='$d_stdiobase'
14821 d_stdstdio='$d_stdstdio'
14822 d_strchr='$d_strchr'
14823 d_strcoll='$d_strcoll'
14824 d_strctcpy='$d_strctcpy'
14825 d_strerrm='$d_strerrm'
14826 d_strerror='$d_strerror'
14827 d_strtod='$d_strtod'
14828 d_strtol='$d_strtol'
14829 d_strtold='$d_strtold'
14830 d_strtoll='$d_strtoll'
14831 d_strtoul='$d_strtoul'
14832 d_strtoull='$d_strtoull'
14833 d_strtouq='$d_strtouq'
14834 d_strxfrm='$d_strxfrm'
14835 d_suidsafe='$d_suidsafe'
14836 d_symlink='$d_symlink'
14837 d_syscall='$d_syscall'
14838 d_sysconf='$d_sysconf'
14839 d_sysernlst='$d_sysernlst'
14840 d_syserrlst='$d_syserrlst'
14841 d_system='$d_system'
14842 d_tcgetpgrp='$d_tcgetpgrp'
14843 d_tcsetpgrp='$d_tcsetpgrp'
14844 d_telldir='$d_telldir'
14845 d_telldirproto='$d_telldirproto'
14846 d_time='$d_time'
14847 d_times='$d_times'
14848 d_truncate='$d_truncate'
14849 d_tzname='$d_tzname'
14850 d_umask='$d_umask'
14851 d_uname='$d_uname'
14852 d_union_semun='$d_union_semun'
14853 d_ustat='$d_ustat'
14854 d_vendorbin='$d_vendorbin'
14855 d_vendorlib='$d_vendorlib'
14856 d_vfork='$d_vfork'
14857 d_void_closedir='$d_void_closedir'
14858 d_voidsig='$d_voidsig'
14859 d_voidtty='$d_voidtty'
14860 d_volatile='$d_volatile'
14861 d_vprintf='$d_vprintf'
14862 d_wait4='$d_wait4'
14863 d_waitpid='$d_waitpid'
14864 d_wcstombs='$d_wcstombs'
14865 d_wctomb='$d_wctomb'
14866 d_xenix='$d_xenix'
14867 date='$date'
14868 db_hashtype='$db_hashtype'
14869 db_prefixtype='$db_prefixtype'
14870 defvoidused='$defvoidused'
14871 direntrytype='$direntrytype'
14872 dlext='$dlext'
14873 dlsrc='$dlsrc'
14874 doublesize='$doublesize'
14875 drand01='$drand01'
14876 dynamic_ext='$dynamic_ext'
14877 eagain='$eagain'
14878 ebcdic='$ebcdic'
14879 echo='$echo'
14880 egrep='$egrep'
14881 emacs='$emacs'
14882 eunicefix='$eunicefix'
14883 exe_ext='$exe_ext'
14884 expr='$expr'
14885 extensions='$extensions'
14886 fflushNULL='$fflushNULL'
14887 fflushall='$fflushall'
14888 find='$find'
14889 firstmakefile='$firstmakefile'
14890 flex='$flex'
14891 fpossize='$fpossize'
14892 fpostype='$fpostype'
14893 freetype='$freetype'
14894 full_ar='$full_ar'
14895 full_csh='$full_csh'
14896 full_sed='$full_sed'
14897 gccversion='$gccversion'
14898 gidformat='$gidformat'
14899 gidsign='$gidsign'
14900 gidsize='$gidsize'
14901 gidtype='$gidtype'
14902 glibpth='$glibpth'
14903 grep='$grep'
14904 groupcat='$groupcat'
14905 groupstype='$groupstype'
14906 gzip='$gzip'
14907 h_fcntl='$h_fcntl'
14908 h_sysfile='$h_sysfile'
14909 hint='$hint'
14910 hostcat='$hostcat'
14911 huge='$huge'
14912 i16size='$i16size'
14913 i16type='$i16type'
14914 i32size='$i32size'
14915 i32type='$i32type'
14916 i64size='$i64size'
14917 i64type='$i64type'
14918 i8size='$i8size'
14919 i8type='$i8type'
14920 i_arpainet='$i_arpainet'
14921 i_bsdioctl='$i_bsdioctl'
14922 i_db='$i_db'
14923 i_dbm='$i_dbm'
14924 i_dirent='$i_dirent'
14925 i_dld='$i_dld'
14926 i_dlfcn='$i_dlfcn'
14927 i_fcntl='$i_fcntl'
14928 i_float='$i_float'
14929 i_gdbm='$i_gdbm'
14930 i_grp='$i_grp'
14931 i_iconv='$i_iconv'
14932 i_inttypes='$i_inttypes'
14933 i_limits='$i_limits'
14934 i_locale='$i_locale'
14935 i_machcthr='$i_machcthr'
14936 i_malloc='$i_malloc'
14937 i_math='$i_math'
14938 i_memory='$i_memory'
14939 i_mntent='$i_mntent'
14940 i_ndbm='$i_ndbm'
14941 i_netdb='$i_netdb'
14942 i_neterrno='$i_neterrno'
14943 i_netinettcp='$i_netinettcp'
14944 i_niin='$i_niin'
14945 i_poll='$i_poll'
14946 i_pthread='$i_pthread'
14947 i_pwd='$i_pwd'
14948 i_rpcsvcdbm='$i_rpcsvcdbm'
14949 i_sfio='$i_sfio'
14950 i_sgtty='$i_sgtty'
14951 i_shadow='$i_shadow'
14952 i_socks='$i_socks'
14953 i_stdarg='$i_stdarg'
14954 i_stddef='$i_stddef'
14955 i_stdlib='$i_stdlib'
14956 i_string='$i_string'
14957 i_sysaccess='$i_sysaccess'
14958 i_sysdir='$i_sysdir'
14959 i_sysfile='$i_sysfile'
14960 i_sysfilio='$i_sysfilio'
14961 i_sysin='$i_sysin'
14962 i_sysioctl='$i_sysioctl'
14963 i_syslog='$i_syslog'
14964 i_sysmman='$i_sysmman'
14965 i_sysmode='$i_sysmode'
14966 i_sysmount='$i_sysmount'
14967 i_sysndir='$i_sysndir'
14968 i_sysparam='$i_sysparam'
14969 i_sysresrc='$i_sysresrc'
14970 i_syssecrt='$i_syssecrt'
14971 i_sysselct='$i_sysselct'
14972 i_syssockio='$i_syssockio'
14973 i_sysstat='$i_sysstat'
14974 i_sysstatfs='$i_sysstatfs'
14975 i_sysstatvfs='$i_sysstatvfs'
14976 i_systime='$i_systime'
14977 i_systimek='$i_systimek'
14978 i_systimes='$i_systimes'
14979 i_systypes='$i_systypes'
14980 i_sysuio='$i_sysuio'
14981 i_sysun='$i_sysun'
14982 i_sysutsname='$i_sysutsname'
14983 i_sysvfs='$i_sysvfs'
14984 i_syswait='$i_syswait'
14985 i_termio='$i_termio'
14986 i_termios='$i_termios'
14987 i_time='$i_time'
14988 i_unistd='$i_unistd'
14989 i_ustat='$i_ustat'
14990 i_utime='$i_utime'
14991 i_values='$i_values'
14992 i_varargs='$i_varargs'
14993 i_varhdr='$i_varhdr'
14994 i_vfork='$i_vfork'
14995 ignore_versioned_solibs='$ignore_versioned_solibs'
14996 inc_version_list='$inc_version_list'
14997 inc_version_list_init='$inc_version_list_init'
14998 incpath='$incpath'
14999 inews='$inews'
15000 installarchlib='$installarchlib'
15001 installbin='$installbin'
15002 installman1dir='$installman1dir'
15003 installman3dir='$installman3dir'
15004 installprefix='$installprefix'
15005 installprefixexp='$installprefixexp'
15006 installprivlib='$installprivlib'
15007 installscript='$installscript'
15008 installsitearch='$installsitearch'
15009 installsitebin='$installsitebin'
15010 installsitelib='$installsitelib'
15011 installstyle='$installstyle'
15012 installusrbinperl='$installusrbinperl'
15013 installvendorbin='$installvendorbin'
15014 installvendorlib='$installvendorlib'
15015 intsize='$intsize'
15016 ivdformat='$ivdformat'
15017 ivsize='$ivsize'
15018 ivtype='$ivtype'
15019 known_extensions='$known_extensions'
15020 ksh='$ksh'
15021 large='$large'
15022 ld='$ld'
15023 lddlflags='$lddlflags'
15024 ldflags='$ldflags'
15025 ldlibpthname='$ldlibpthname'
15026 less='$less'
15027 lib_ext='$lib_ext'
15028 libc='$libc'
15029 libperl='$libperl'
15030 libpth='$libpth'
15031 libs='$libs'
15032 libsdirs='$libsdirs'
15033 libsfiles='$libsfiles'
15034 libsfound='$libsfound'
15035 libswanted='$libswanted'
15036 line='$line'
15037 lint='$lint'
15038 lkflags='$lkflags'
15039 ln='$ln'
15040 lns='$lns'
15041 locincpth='$locincpth'
15042 loclibpth='$loclibpth'
15043 longdblsize='$longdblsize'
15044 longlongsize='$longlongsize'
15045 longsize='$longsize'
15046 lp='$lp'
15047 lpr='$lpr'
15048 ls='$ls'
15049 lseeksize='$lseeksize'
15050 lseektype='$lseektype'
15051 mail='$mail'
15052 mailx='$mailx'
15053 make='$make'
15054 make_set_make='$make_set_make'
15055 mallocobj='$mallocobj'
15056 mallocsrc='$mallocsrc'
15057 malloctype='$malloctype'
15058 man1dir='$man1dir'
15059 man1direxp='$man1direxp'
15060 man1ext='$man1ext'
15061 man3dir='$man3dir'
15062 man3direxp='$man3direxp'
15063 man3ext='$man3ext'
15064 medium='$medium'
15065 mips_type='$mips_type'
15066 mkdir='$mkdir'
15067 mmaptype='$mmaptype'
15068 models='$models'
15069 modetype='$modetype'
15070 more='$more'
15071 multiarch='$multiarch'
15072 mv='$mv'
15073 myarchname='$myarchname'
15074 mydomain='$mydomain'
15075 myhostname='$myhostname'
15076 myuname='$myuname'
15077 n='$n'
15078 netdb_hlen_type='$netdb_hlen_type'
15079 netdb_host_type='$netdb_host_type'
15080 netdb_name_type='$netdb_name_type'
15081 netdb_net_type='$netdb_net_type'
15082 nm='$nm'
15083 nm_opt='$nm_opt'
15084 nm_so_opt='$nm_so_opt'
15085 nonxs_ext='$nonxs_ext'
15086 nroff='$nroff'
15087 nvsize='$nvsize'
15088 nvtype='$nvtype'
15089 o_nonblock='$o_nonblock'
15090 obj_ext='$obj_ext'
15091 old_pthread_create_joinable='$old_pthread_create_joinable'
15092 optimize='$optimize'
15093 orderlib='$orderlib'
15094 osname='$osname'
15095 osvers='$osvers'
15096 package='$package'
15097 pager='$pager'
15098 passcat='$passcat'
15099 patchlevel='$patchlevel'
15100 path_sep='$path_sep'
15101 perl='$perl'
15102 perladmin='$perladmin'
15103 perlpath='$perlpath'
15104 pg='$pg'
15105 phostname='$phostname'
15106 pidtype='$pidtype'
15107 plibpth='$plibpth'
15108 pm_apiversion='$pm_apiversion'
15109 pmake='$pmake'
15110 pr='$pr'
15111 prefix='$prefix'
15112 prefixexp='$prefixexp'
15113 privlib='$privlib'
15114 privlibexp='$privlibexp'
15115 prototype='$prototype'
15116 ptrsize='$ptrsize'
15117 quadkind='$quadkind'
15118 quadtype='$quadtype'
15119 randbits='$randbits'
15120 randfunc='$randfunc'
15121 randseedtype='$randseedtype'
15122 ranlib='$ranlib'
15123 rd_nodata='$rd_nodata'
15124 rm='$rm'
15125 rmail='$rmail'
15126 runnm='$runnm'
15127 sPRIEldbl='$sPRIEldbl'
15128 sPRIFldbl='$sPRIFldbl'
15129 sPRIGldbl='$sPRIGldbl'
15130 sPRIX64='$sPRIX64'
15131 sPRId64='$sPRId64'
15132 sPRIeldbl='$sPRIeldbl'
15133 sPRIfldbl='$sPRIfldbl'
15134 sPRIgldbl='$sPRIgldbl'
15135 sPRIi64='$sPRIi64'
15136 sPRIo64='$sPRIo64'
15137 sPRIu64='$sPRIu64'
15138 sPRIx64='$sPRIx64'
15139 sched_yield='$sched_yield'
15140 scriptdir='$scriptdir'
15141 scriptdirexp='$scriptdirexp'
15142 sed='$sed'
15143 seedfunc='$seedfunc'
15144 selectminbits='$selectminbits'
15145 selecttype='$selecttype'
15146 sendmail='$sendmail'
15147 sh='$sh'
15148 shar='$shar'
15149 sharpbang='$sharpbang'
15150 shmattype='$shmattype'
15151 shortsize='$shortsize'
15152 shrpenv='$shrpenv'
15153 shsharp='$shsharp'
15154 sig_count='$sig_count'
15155 sig_name='$sig_name'
15156 sig_name_init='$sig_name_init'
15157 sig_num='$sig_num'
15158 sig_num_init='$sig_num_init'
15159 signal_t='$signal_t'
15160 sitearch='$sitearch'
15161 sitearchexp='$sitearchexp'
15162 sitebin='$sitebin'
15163 sitebinexp='$sitebinexp'
15164 sitelib='$sitelib'
15165 sitelibexp='$sitelibexp'
15166 siteprefix='$siteprefix'
15167 siteprefixexp='$siteprefixexp'
15168 sizetype='$sizetype'
15169 sleep='$sleep'
15170 smail='$smail'
15171 small='$small'
15172 so='$so'
15173 sockethdr='$sockethdr'
15174 socketlib='$socketlib'
15175 sort='$sort'
15176 spackage='$spackage'
15177 spitshell='$spitshell'
15178 split='$split'
15179 src='$src'
15180 ssizetype='$ssizetype'
15181 startperl='$startperl'
15182 startsh='$startsh'
15183 static_ext='$static_ext'
15184 stdchar='$stdchar'
15185 stdio_base='$stdio_base'
15186 stdio_bufsiz='$stdio_bufsiz'
15187 stdio_cnt='$stdio_cnt'
15188 stdio_filbuf='$stdio_filbuf'
15189 stdio_ptr='$stdio_ptr'
15190 stdio_stream_array='$stdio_stream_array'
15191 strings='$strings'
15192 submit='$submit'
15193 subversion='$subversion'
15194 sysman='$sysman'
15195 tail='$tail'
15196 tar='$tar'
15197 tbl='$tbl'
15198 tee='$tee'
15199 test='$test'
15200 timeincl='$timeincl'
15201 timetype='$timetype'
15202 touch='$touch'
15203 tr='$tr'
15204 trnl='$trnl'
15205 troff='$troff'
15206 u16size='$u16size'
15207 u16type='$u16type'
15208 u32size='$u32size'
15209 u32type='$u32type'
15210 u64size='$u64size'
15211 u64type='$u64type'
15212 u8size='$u8size'
15213 u8type='$u8type'
15214 uidformat='$uidformat'
15215 uidsign='$uidsign'
15216 uidsize='$uidsize'
15217 uidtype='$uidtype'
15218 uname='$uname'
15219 uniq='$uniq'
15220 uquadtype='$uquadtype'
15221 use5005threads='$use5005threads'
15222 use64bits='$use64bits'
15223 usedl='$usedl'
15224 useithreads='$useithreads'
15225 uselargefiles='$uselargefiles'
15226 uselongdouble='$uselongdouble'
15227 usemorebits='$usemorebits'
15228 usemultiplicity='$usemultiplicity'
15229 usemymalloc='$usemymalloc'
15230 usenm='$usenm'
15231 useopcode='$useopcode'
15232 useperlio='$useperlio'
15233 useposix='$useposix'
15234 usesfio='$usesfio'
15235 useshrplib='$useshrplib'
15236 usesocks='$usesocks'
15237 usethreads='$usethreads'
15238 usevendorprefix='$usevendorprefix'
15239 usevfork='$usevfork'
15240 usrinc='$usrinc'
15241 uuname='$uuname'
15242 uvoformat='$uvoformat'
15243 uvsize='$uvsize'
15244 uvtype='$uvtype'
15245 uvuformat='$uvuformat'
15246 uvxformat='$uvxformat'
15247 vendorbin='$vendorbin'
15248 vendorbinexp='$vendorbinexp'
15249 vendorlib='$vendorlib'
15250 vendorlibexp='$vendorlibexp'
15251 vendorprefix='$vendorprefix'
15252 vendorprefixexp='$vendorprefixexp'
15253 version='$version'
15254 vi='$vi'
15255 voidflags='$voidflags'
15256 xlibpth='$xlibpth'
15257 xs_apiversion='$xs_apiversion'
15258 zcat='$zcat'
15259 zip='$zip'
15260 EOT
15261
15262 : Add in command line options if available
15263 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15264
15265 : add special variables
15266 $test -f $src/patchlevel.h && \
15267 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15268 echo "CONFIGDOTSH=true" >>config.sh
15269
15270 : propagate old symbols
15271 if $test -f UU/config.sh; then
15272         <UU/config.sh sort | uniq >UU/oldconfig.sh
15273         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15274         sort | uniq -u >UU/oldsyms
15275         set X `cat UU/oldsyms`
15276         shift
15277         case $# in
15278         0) ;;
15279         *)
15280                 cat <<EOM
15281 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15282 EOM
15283                 echo "# Variables propagated from previous config.sh file." >>config.sh
15284                 for sym in `cat UU/oldsyms`; do
15285                         echo "    Propagating $hint variable "'$'"$sym..."
15286                         eval 'tmp="$'"${sym}"'"'
15287                         echo "$tmp" | \
15288                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15289                 done
15290                 ;;
15291         esac
15292 fi
15293
15294 : Finish up by extracting the .SH files
15295 case "$alldone" in
15296 exit)
15297         $rm -rf UU
15298         echo "Done."
15299         exit 0
15300         ;;
15301 cont)
15302         ;;
15303 '')
15304         dflt=''
15305         nostick=true
15306         $cat <<EOM
15307
15308 If you'd like to make any changes to the config.sh file before I begin
15309 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15310
15311 EOM
15312         rp="Press return or use a shell escape to edit config.sh:"
15313         . UU/myread
15314         nostick=''
15315         case "$ans" in
15316         '') ;;
15317         *) : in case they cannot read
15318                 sh 1>&4 -c "$ans";;
15319         esac
15320         ;;
15321 esac
15322
15323 : if this fails, just run all the .SH files by hand
15324 . ./config.sh
15325
15326 echo " "
15327 exec 1>&4
15328 . ./UU/extract
15329
15330 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15331         dflt=y
15332         case "$silent" in
15333         true) ;;
15334         *)
15335                 $cat <<EOM
15336
15337 Now you need to generate make dependencies by running "$make depend".
15338 You might prefer to run it in background: "$make depend > makedepend.out &"
15339 It can take a while, so you might not want to run it right now.
15340
15341 EOM
15342                 ;;
15343         esac
15344         rp="Run $make depend now?"
15345         . UU/myread
15346         case "$ans" in
15347         y*)
15348                 $make depend && echo "Now you must run a $make."
15349                 ;;
15350         *)
15351                 echo "You must run '$make depend' then '$make'."
15352                 ;;
15353         esac
15354 elif test -f [Mm]akefile; then
15355         echo " "
15356         echo "Now you must run a $make."
15357 else
15358         echo "Done."
15359 fi
15360
15361 if $test -f Policy.sh; then
15362     $cat <<EOM
15363
15364 If you compile $package on a different machine or from a different object
15365 directory, copy the Policy.sh file from this object directory to the
15366 new one before you run Configure -- this will help you with most of
15367 the policy defaults.
15368
15369 EOM
15370 fi
15371 if $test -f config.msg; then
15372     echo "Hmm.  I also noted the following information while running:"
15373     echo " "
15374     $cat config.msg >&4
15375     $rm -f config.msg
15376 fi
15377 $rm -f kit*isdone ark*isdone
15378 $rm -rf UU
15379
15380 : End of Configure
15381