Configure nits spotted by Spider Boardman.
[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 16:38:07 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 libsfound=''
3702 libsfiles=''
3703 libsdirs=''
3704 for thislib in $libswanted; do
3705         for thisdir in $libpth; do
3706             xxx=''
3707             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3708                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3709                 $test -f "$xxx" && eval $libscheck
3710                 $test -f "$xxx" && libstyle=shared
3711             fi
3712             if test ! -f "$xxx"; then
3713                 xxx=$thisdir/lib$thislib.$so
3714                 $test -f "$xxx" && eval $libscheck
3715                 $test -f "$xxx" && libstyle=shared
3716             fi  
3717             if test ! -f "$xxx"; then
3718                 xxx=$thisdir/lib$thislib$_a
3719                 $test -f "$xxx" && eval $libscheck
3720                 $test -f "$xxx" && libstyle=static
3721             fi
3722             if test ! -f "$xxx"; then
3723                 xxx=$thisdir/$thislib$_a
3724                 $test -f "$xxx" && eval $libscheck
3725                 $test -f "$xxx" && libstyle=static
3726             fi
3727             if test ! -f "$xxx"; then
3728                 xxx=$thisdir/lib${thislib}_s$_a
3729                 $test -f "$xxx" && eval $libscheck
3730                 $test -f "$xxx" && libstyle=static
3731             fi
3732             if test ! -f "$xxx"; then
3733                 xxx=$thisdir/Slib$thislib$_a
3734                 $test -f "$xxx" && eval $libscheck
3735                 $test -f "$xxx" && libstyle=static
3736             fi
3737             if $test -f "$xxx"; then
3738                 case "$libstyle" in
3739                 shared) echo "Found -l$thislib (shared)." ;;
3740                 static) echo "Found -l$thislib." ;;
3741                 *)      echo "Found -l$thislib ($libstyle)." ;;
3742                 esac
3743                 case " $dflt " in
3744                 *"-l$thislib "*);;
3745                 *) dflt="$dflt -l$thislib"
3746                    libsfound="$libsfound $xxx"
3747                    yyy=`basename $xxx`
3748                    libsfiles="$libsfiles $yyy"
3749                    yyy=`echo $xxx|sed "s@/$yyy\\$@@"`
3750                    case " $libsdirs " in
3751                    *" $yyy "*) ;;
3752                    *) libsdirs="$libsdirs $yyy" ;;
3753                    esac
3754                    ;;
3755                 esac
3756                 break
3757             fi  
3758         done
3759         if $test ! -f "$xxx"; then
3760             echo "No -l$thislib."
3761         fi
3762 done
3763 set X $dflt
3764 shift
3765 dflt="$*"
3766 case "$libs" in
3767 '') dflt="$dflt";;
3768 *) dflt="$libs";;
3769 esac
3770 case "$dflt" in
3771 ' '|'') dflt='none';;
3772 esac
3773
3774 $cat <<EOM
3775
3776 In order to compile $package on your machine, a number of libraries
3777 are usually needed.  Include any other special libraries here as well.
3778 Say "none" for none.  The default list is almost always right.
3779 EOM
3780
3781 echo " "
3782 rp="What libraries to use?"
3783 . ./myread
3784 case "$ans" in
3785 none) libs=' ';;
3786 *) libs="$ans";;
3787 esac
3788
3789 : determine optimization, if desired, or use for debug flag also
3790 case "$optimize" in
3791 ' '|$undef) dflt='none';;
3792 '') dflt='-O';;
3793 *) dflt="$optimize";;
3794 esac
3795 $cat <<EOH
3796
3797 By default, $package compiles with the -O flag to use the optimizer.
3798 Alternately, you might want to use the symbolic debugger, which uses
3799 the -g flag (on traditional Unix systems).  Either flag can be
3800 specified here.  To use neither flag, specify the word "none".
3801
3802 EOH
3803 rp="What optimizer/debugger flag should be used?"
3804 . ./myread
3805 optimize="$ans"
3806 case "$optimize" in
3807 'none') optimize=" ";;
3808 esac
3809
3810 dflt=''
3811 : We will not override a previous value, but we might want to
3812 : augment a hint file
3813 case "$hint" in
3814 default|recommended)
3815         case "$gccversion" in
3816         1*) dflt='-fpcc-struct-return' ;;
3817         esac
3818         case "$optimize" in
3819         *-g*) dflt="$dflt -DDEBUGGING";;
3820         esac
3821         case "$gccversion" in
3822         2*) if test -d /etc/conf/kconfig.d &&
3823                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3824                 then
3825                         dflt="$dflt -posix"
3826                 fi
3827                 ;;
3828         esac
3829         case "$gccversion" in
3830         1*) ;;
3831         2.[0-8]*) ;;
3832         ?*)     echo " "
3833                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3834                 echo 'int main(void) { return 0; }' > gcctest.c
3835                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3836                         echo "Yes, it does." 2>&1
3837                         case "$ccflags" in
3838                         *strict-aliasing*) 
3839                                 echo "Leaving current flags $ccflags alone." 2>&1
3840                                 ;;
3841                         *) dflt="$dflt -fno-strict-aliasing" ;;
3842                         esac
3843                 else
3844                         echo "Nope, it doesn't, but that's ok." 2>&1
3845                 fi
3846                 ;;
3847         esac
3848         ;;
3849 esac
3850
3851 case "$mips_type" in
3852 *BSD*|'') inclwanted="$locincpth $usrinc";;
3853 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3854 esac
3855 for thisincl in $inclwanted; do
3856         if $test -d $thisincl; then
3857                 if $test x$thisincl != x$usrinc; then
3858                         case "$dflt" in
3859                         *$thisincl*);;
3860                         *) dflt="$dflt -I$thisincl";;
3861                         esac
3862                 fi
3863         fi
3864 done
3865
3866 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3867         xxx=true;
3868 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3869         xxx=true;
3870 else
3871         xxx=false;
3872 fi;
3873 if $xxx; then
3874         case "$dflt" in
3875         *$2*);;
3876         *) dflt="$dflt -D$2";;
3877         esac;
3878 fi'
3879
3880 set signal.h LANGUAGE_C; eval $inctest
3881
3882 case "$usesocks" in
3883 $define)
3884         ccflags="$ccflags -DSOCKS"
3885         ;;
3886 esac
3887
3888 case "$hint" in
3889 default|recommended) dflt="$ccflags $dflt" ;;
3890 *) dflt="$ccflags";;
3891 esac
3892
3893 case "$dflt" in
3894 ''|' ') dflt=none;;
3895 esac
3896 $cat <<EOH
3897
3898 Your C compiler may want other flags.  For this question you should include
3899 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3900 but you should NOT include libraries or ld flags like -lwhatever.  If you
3901 want $package to honor its debug switch, you should include -DDEBUGGING here.
3902 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3903
3904 To use no flags, specify the word "none".
3905
3906 EOH
3907 set X $dflt
3908 shift
3909 dflt=${1+"$@"}
3910 rp="Any additional cc flags?"
3911 . ./myread
3912 case "$ans" in
3913 none) ccflags='';;
3914 *) ccflags="$ans";;
3915 esac
3916
3917 : the following weeds options from ccflags that are of no interest to cpp
3918 cppflags="$ccflags"
3919 case "$gccversion" in
3920 1*) cppflags="$cppflags -D__GNUC__"
3921 esac
3922 case "$mips_type" in
3923 '');;
3924 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3925 esac
3926 case "$cppflags" in
3927 '');;
3928 *)
3929         echo " "
3930         echo "Let me guess what the preprocessor flags are..." >&4
3931         set X $cppflags
3932         shift
3933         cppflags=''
3934         $cat >cpp.c <<'EOM'
3935 #define BLURFL foo
3936
3937 BLURFL xx LFRULB
3938 EOM
3939         previous=''
3940         for flag in $*
3941         do
3942                 case "$flag" in
3943                 -*) ftry="$flag";;
3944                 *) ftry="$previous $flag";;
3945                 esac
3946                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3947                         >cpp1.out 2>/dev/null && \
3948                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3949                         >cpp2.out 2>/dev/null && \
3950                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3951                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3952                 then
3953                         cppflags="$cppflags $ftry"
3954                         previous=''
3955                 else
3956                         previous="$flag"
3957                 fi
3958         done
3959         set X $cppflags
3960         shift
3961         cppflags=${1+"$@"}
3962         case "$cppflags" in
3963         *-*)  echo "They appear to be: $cppflags";;
3964         esac
3965         $rm -f cpp.c cpp?.out
3966         ;;
3967 esac
3968
3969 : flags used in final linking phase
3970 case "$ldflags" in
3971 '') if ./venix; then
3972                 dflt='-i -z'
3973         else
3974                 dflt=''
3975         fi
3976         case "$ccflags" in
3977         *-posix*) dflt="$dflt -posix" ;;
3978         esac
3979         ;;
3980 *) dflt="$ldflags";;
3981 esac
3982
3983 : Try to guess additional flags to pick up local libraries.
3984 for thislibdir in $libpth; do
3985         case " $loclibpth " in
3986         *" $thislibdir "*)
3987                 case "$dflt " in 
3988                 *"-L$thislibdir "*) ;;
3989                 *)  dflt="$dflt -L$thislibdir" ;;
3990                 esac
3991                 ;;
3992         esac
3993 done
3994
3995 case "$dflt" in
3996 '') dflt='none' ;;
3997 esac
3998
3999 $cat <<EOH
4000
4001 Your C linker may need flags.  For this question you should
4002 include -L/whatever and any other flags used by the C linker, but you
4003 should NOT include libraries like -lwhatever.
4004
4005 Make sure you include the appropriate -L/path flags if your C linker
4006 does not normally search all of the directories you specified above,
4007 namely
4008         $libpth
4009 To use no flags, specify the word "none".
4010
4011 EOH
4012
4013 rp="Any additional ld flags (NOT including libraries)?"
4014 . ./myread
4015 case "$ans" in
4016 none) ldflags='';;
4017 *) ldflags="$ans";;
4018 esac
4019 rmlist="$rmlist pdp11"
4020
4021 : coherency check
4022 echo " "
4023 echo "Checking your choice of C compiler and flags for coherency..." >&4
4024 $cat > try.c <<'EOF'
4025 #include <stdio.h>
4026 int main() { printf("Ok\n"); exit(0); }
4027 EOF
4028 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4029 shift
4030 $cat >try.msg <<'EOM'
4031 I've tried to compile and run the following simple program:
4032
4033 EOM
4034 $cat try.c >> try.msg
4035
4036 $cat >> try.msg <<EOM
4037
4038 I used the command:
4039
4040         $*
4041         ./try
4042
4043 and I got the following output:
4044
4045 EOM
4046 dflt=y
4047 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4048         if sh -c './try' >>try.msg 2>&1; then
4049                 xxx=`./try`
4050                 case "$xxx" in
4051                 "Ok") dflt=n ;;
4052                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4053                         case " $libs " in
4054                         *" -lsfio "*)
4055                                 cat >> try.msg <<'EOQS'
4056 If $libs contains -lsfio, and sfio is mis-configured, then it
4057 sometimes (apparently) runs and exits with a 0 status, but with no
4058 output!  It may have to do with sfio's use of _exit vs. exit.
4059
4060 EOQS
4061                                 rp="You have a big problem.  Shall I abort Configure"
4062                                 dflt=y
4063                                 ;;
4064                         esac
4065                         ;;
4066                 esac
4067         else
4068                 echo "The program compiled OK, but exited with status $?." >>try.msg
4069                 rp="You have a problem.  Shall I abort Configure"
4070                 dflt=y
4071         fi
4072 else
4073         echo "I can't compile the test program." >>try.msg
4074         rp="You have a BIG problem.  Shall I abort Configure"
4075         dflt=y
4076 fi
4077 case "$dflt" in
4078 y)
4079         $cat try.msg >&4
4080         case "$knowitall" in
4081         '')
4082                 echo "(The supplied flags or libraries might be incorrect.)"
4083                 ;;
4084         *) dflt=n;;
4085         esac
4086         echo " "
4087         . ./myread
4088         case "$ans" in
4089         n*|N*) ;;
4090         *)      echo "Ok.  Stopping Configure." >&4
4091                 exit 1
4092                 ;;
4093         esac
4094         ;;
4095 n) echo "OK, that should do.";;
4096 esac
4097 $rm -f try try.* core
4098
4099 : define an is-a-typedef? function
4100 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4101 case "$inclist" in
4102 "") inclist="sys/types.h";;
4103 esac;
4104 eval "varval=\$$var";
4105 case "$varval" in
4106 "")
4107         $rm -f temp.c;
4108         for inc in $inclist; do
4109                 echo "#include <$inc>" >>temp.c;
4110         done;
4111         echo "#ifdef $type" >> temp.c;
4112         echo "printf(\"We have $type\");" >> temp.c;
4113         echo "#endif" >> temp.c;
4114         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4115         if $contains $type temp.E >/dev/null 2>&1; then
4116                 eval "$var=\$type";
4117         else
4118                 eval "$var=\$def";
4119         fi;
4120         $rm -f temp.?;;
4121 *) eval "$var=\$varval";;
4122 esac'
4123
4124 : define an is-a-typedef? function that prompts if the type is not available.
4125 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4126 case "$inclist" in
4127 "") inclist="sys/types.h";;
4128 esac;
4129 eval "varval=\$$var";
4130 case "$varval" in
4131 "")
4132         $rm -f temp.c;
4133         for inc in $inclist; do
4134                 echo "#include <$inc>" >>temp.c;
4135         done;
4136         echo "#ifdef $type" >> temp.c;
4137         echo "printf(\"We have $type\");" >> temp.c;
4138         echo "#endif" >> temp.c;
4139         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4140         echo " " ;
4141         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4142         if $contains $type temp.E >/dev/null 2>&1; then
4143                 echo "$type found." >&4;
4144                 eval "$var=\$type";
4145         else
4146                 echo "$type NOT found." >&4;
4147                 dflt="$def";
4148                 . ./myread ;
4149                 eval "$var=\$ans";
4150         fi;
4151         $rm -f temp.?;;
4152 *) eval "$var=\$varval";;
4153 esac'
4154
4155 : define a shorthand compile call
4156 compile='
4157 mc_file=$1;
4158 shift;
4159 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4160 : define a shorthand compile call for compilations that should be ok.
4161 compile_ok='
4162 mc_file=$1;
4163 shift;
4164 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4165
4166 : check for lengths of integral types
4167 echo " "
4168 case "$intsize" in
4169 '')
4170         echo "Checking to see how big your integers are..." >&4
4171         $cat >intsize.c <<'EOCP'
4172 #include <stdio.h>
4173 int main()
4174 {
4175         printf("intsize=%d;\n", (int)sizeof(int));
4176         printf("longsize=%d;\n", (int)sizeof(long));
4177         printf("shortsize=%d;\n", (int)sizeof(short));
4178         exit(0);
4179 }
4180 EOCP
4181         set intsize
4182         if eval $compile_ok && ./intsize > /dev/null; then
4183                 eval `./intsize`
4184                 echo "Your integers are $intsize bytes long."
4185                 echo "Your long integers are $longsize bytes long."
4186                 echo "Your short integers are $shortsize bytes long."
4187         else
4188                 $cat >&4 <<EOM
4189 !
4190 Help! I can't compile and run the intsize test program: please enlighten me!
4191 (This is probably a misconfiguration in your system or libraries, and
4192 you really ought to fix it.  Still, I'll try anyway.)
4193 !
4194 EOM
4195                 dflt=4
4196                 rp="What is the size of an integer (in bytes)?"
4197                 . ./myread
4198                 intsize="$ans"
4199                 dflt=$intsize
4200                 rp="What is the size of a long integer (in bytes)?"
4201                 . ./myread
4202                 longsize="$ans"
4203                 dflt=2
4204                 rp="What is the size of a short integer (in bytes)?"
4205                 . ./myread
4206                 shortsize="$ans"
4207         fi
4208         ;;
4209 esac
4210 $rm -f intsize intsize.*
4211
4212 : see what type lseek is declared as in the kernel
4213 rp="What is the type used for lseek's offset on this system?"
4214 set off_t lseektype long stdio.h sys/types.h
4215 eval $typedef_ask
4216
4217 echo " "
4218 $echo $n "Checking to see how big your file offsets are...$c" >&4
4219 $cat >try.c <<EOCP
4220 #include <sys/types.h>
4221 #include <stdio.h>
4222 int main()
4223 {
4224     printf("%d\n", (int)sizeof($lseektype));
4225     return(0); 
4226 }
4227 EOCP
4228 set try
4229 if eval $compile_ok; then
4230         lseeksize=`./try`
4231         $echo " $lseeksize bytes." >&4
4232 else
4233         dflt=$longsize
4234         echo " "
4235         echo "(I can't seem to compile the test program.  Guessing...)"
4236         rp="What is the size of your file offsets (in bytes)?"
4237         . ./myread
4238         lseeksize="$ans"
4239 fi
4240 $rm -f try.c try
4241
4242 : see what type file positions are declared as in the library
4243 rp="What is the type for file position used by fsetpos()?"
4244 set fpos_t fpostype long stdio.h sys/types.h
4245 eval $typedef_ask
4246
4247 echo " "
4248 case "$fpostype" in
4249 *_t) zzz="$fpostype"    ;;
4250 *)   zzz="fpos_t"       ;;
4251 esac
4252 $echo $n "Checking the size of $zzz...$c" >&4 
4253 cat > try.c <<EOCP
4254 #include <sys/types.h>
4255 #include <stdio.h>
4256 int main() {
4257     printf("%d\n", (int)sizeof($fpostype));
4258     exit(0);
4259 }
4260 EOCP
4261 set try
4262 if eval $compile_ok; then
4263         yyy=`./try`
4264         case "$yyy" in
4265         '')     fpossize=4
4266                 echo " " >&4
4267                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4268                 ;;
4269         *)      fpossize=$yyy
4270                 echo " $fpossize bytes." >&4
4271                 ;;
4272         esac
4273 else
4274         dflt="$longsize"
4275         echo " " >&4
4276         echo "(I can't compile the test program.  Guessing...)" >&4
4277         rp="What is the size of your file positions (in bytes)?"
4278         . ./myread
4279         fpossize="$ans"
4280 fi
4281
4282
4283
4284 case "$lseeksize:$fpossize" in
4285 8:8) cat <<EOM
4286
4287 You can have files larger than 2 gigabytes.
4288 EOM
4289    val="$define" ;;
4290 *)    case "$uselargefiles" in
4291    "$undef"|false|[nN]*) dflt='n' ;;
4292    *)   dflt='y' ;;
4293    esac
4294    cat <<EOM
4295
4296 Perl can be built to understand large files (files larger than 2 gigabytes)
4297 on some systems.  To do so, Configure can be run with -Duselargefiles.
4298
4299 If this doesn't make any sense to you, just accept the default '$dflt'.
4300 EOM
4301    rp='Try to understand large files, if available?'
4302    . ./myread
4303    case "$ans" in
4304    y|Y)         val="$define" ;;
4305    *)           val="$undef"  ;;
4306    esac
4307    ;;
4308 esac
4309 set uselargefiles
4310 eval $setvar
4311 case "$uselargefiles" in
4312 "$define")
4313 : Look for a hint-file generated 'call-back-unit'.  If the
4314 : user has specified that a large files perl is to be built,
4315 : we may need to set or change some other defaults.
4316         if $test -f uselfs.cbu; then
4317                 echo "Your platform has some specific hints for large file builds, using them..."
4318                 . ./uselfs.cbu
4319                 echo " "
4320                 $echo $n "Rechecking to see how big your file offsets are...$c" >&4
4321                 $cat >try.c <<EOCP
4322 #include <sys/types.h>
4323 #include <stdio.h>
4324 int main()
4325 {
4326     printf("%d\n", (int)sizeof($lseektype));
4327     return(0); 
4328 }
4329 EOCP
4330                 set try
4331                 if eval $compile_ok; then
4332                         lseeksize=`./try`
4333                         $echo " $lseeksize bytes." >&4
4334                 else
4335                         dflt="$lseeksize"
4336                         echo " "
4337                         echo "(I can't seem to compile the test program.  Guessing...)"
4338                         rp="What is the size of your file offsets (in bytes)?"
4339                         . ./myread
4340                         lseeksize="$ans"
4341                 fi
4342                 case "$fpostype" in
4343                 *_t) zzz="$fpostype"    ;;
4344                 *)   zzz="fpos_t"       ;;
4345                 esac
4346                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4347                 $cat > try.c <<EOCP
4348 #include <sys/types.h>
4349 #include <stdio.h>
4350 int main() {
4351     printf("%d\n", (int)sizeof($fpostype));
4352     exit(0);
4353 }
4354 EOCP
4355                 set try
4356                 if eval $compile_ok; then
4357                         yyy=`./try`
4358                         dflt="$lseeksize"
4359                         case "$yyy" in
4360                         '')     echo " "
4361                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4362                                 ;;
4363                         *)      fpossize=$yyy
4364                                 echo " $fpossize bytes."
4365                                 ;;
4366                         esac
4367                 else
4368                         dflt="$fpossize"
4369                         echo " "
4370                         echo "(I can't compile the test program.  Guessing...)" >&4
4371                         rp="What is the size of your file positions (in bytes)?"
4372                         . ./myread
4373                         fpossize="$ans"
4374                 fi
4375                 $rm -f try.c try
4376         fi
4377         ;;
4378 esac
4379
4380
4381 case "$usemorebits" in
4382 "$define"|true|[yY]*)
4383         use64bits="$define"
4384         uselongdouble="$define"
4385         usemorebits="$define"
4386         ;;
4387 *)      usemorebits="$undef"
4388         ;;
4389 esac
4390
4391
4392 case "$intsize:$longsize" in
4393 8:*|*:8) cat <<EOM
4394
4395 You have natively 64-bit integers.
4396 EOM
4397    val="$define"
4398    ;;
4399 *) case "$ccflags" in
4400    *-DUSE_64_BITS*|*-DUSE_LONG_LONG*) use64bits="$define";;
4401    *) case "$uselonglong" in
4402       $define|true|[yY]*) use64bits="$define";;
4403       esac
4404       ;;
4405    esac
4406    case "$use64bits" in
4407    $define|true|[yY]*) dflt='y';;
4408    *) dflt='n';;
4409    esac
4410 cat <<EOM
4411
4412 Perl can be built to take advantage of 64-bit integer types
4413 on some systems.  To do so, Configure can be run with -Duse64bits.
4414
4415 If this doesn't make any sense to you, just accept the default '$dflt'.
4416 EOM
4417    rp='Try to use 64-bit integers, if available?'
4418    . ./myread
4419    case "$ans" in
4420    [yY]*) val="$define" ;;
4421    *)     val="$undef"  ;;
4422    esac
4423    ;;
4424 esac
4425 set use64bits
4426 eval $setvar
4427
4428 case "$archname64" in
4429 '') archname64='' ;;    # not a typo
4430 esac
4431
4432 case "$use64bits" in
4433 "$define"|true|[yY]*)
4434 : Look for a hint-file generated 'call-back-unit'.  If the
4435 : user has specified that a 64-bit perl is to be built,
4436 : we may need to set or change some other defaults.
4437         if $test -f use64bits.cbu; then
4438                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4439                 . ./use64bits.cbu
4440         else
4441                 $cat <<EOM
4442 (Your platform doesn't have any specific hints for 64-bit builds.)
4443 EOM
4444                 case "$intsize:$longsize" in
4445 8:*|*:8) cat <<EOM
4446 (This is probably okay, as your system is a natively 64-bit system.)
4447 EOM
4448                   ;;
4449                 esac
4450                 case "$gccversion" in
4451                 '')     ;;
4452                 *)      case "$ccflags" in
4453                         *-DUSE_64_BITS*) ;;
4454                         *) $cat <<EOM
4455 But since you seem to be using gcc, I will now add -DUSE_64_BITS
4456 to the compilation flags to get long longs.
4457 EOM
4458                            ccflags="$ccflags -DUSE_64_BITS"
4459                            ;;
4460                         esac
4461                         ;;
4462                 esac
4463         fi
4464         ;;
4465 esac
4466
4467 : determine the architecture name
4468 echo " "
4469 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4470         tarch=`arch`"-$osname"
4471 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4472         if uname -m > tmparch 2>&1 ; then
4473                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4474                         -e 's/$/'"-$osname/" tmparch`
4475         else
4476                 tarch="$osname"
4477         fi
4478         $rm -f tmparch
4479 else
4480         tarch="$osname"
4481 fi
4482 case "$myarchname" in
4483 ''|"$tarch") ;;
4484 *)
4485         echo "(Your architecture name used to be $myarchname.)"
4486         archname=''
4487         ;;
4488 esac
4489 myarchname="$tarch"
4490 case "$archname" in
4491 '') dflt="$tarch";;
4492 *) dflt="$archname";;
4493 esac
4494 rp='What is your architecture name'
4495 . ./myread
4496 archname="$ans"
4497 case "$usethreads" in
4498 $define)
4499         echo "Threads selected." >&4
4500         case "$archname" in
4501         *-thread*) echo "...and architecture name already has -thread." >&4
4502                 ;;
4503         *)      archname="$archname-thread"
4504                 echo "...setting architecture name to $archname." >&4
4505                 ;;
4506         esac
4507         ;;
4508 esac
4509 case "$usemultiplicity" in
4510 $define)
4511         echo "Multiplicity selected." >&4
4512         case "$archname" in
4513         *-multi*) echo "...and architecture name already has -multi." >&4
4514                 ;;
4515         *)      archname="$archname-multi"
4516                 echo "...setting architecture name to $archname." >&4
4517                 ;;
4518         esac
4519         ;;
4520 esac
4521 case "$use64bits" in
4522 $define)
4523         case "$archname64" in
4524         '')
4525                 ;;
4526         *)
4527                 case "$archname" in
4528                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4529                         ;;
4530                 *)      archname="$archname-$archname64"
4531                         echo "...setting architecture name to $archname." >&4
4532                         ;;
4533                 esac
4534                 ;;
4535         esac
4536 esac
4537
4538 : determine root of directory hierarchy where package will be installed.
4539 case "$prefix" in
4540 '')
4541         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4542         ;;
4543 *)
4544         dflt="$prefix"
4545         ;;
4546 esac
4547 $cat <<EOM
4548
4549 By default, $package will be installed in $dflt/bin, manual pages
4550 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4551 installation directories. Typically this is something like /usr/local.
4552 If you wish to have binaries under /usr/bin but other parts of the
4553 installation under /usr/local, that's ok: you will be prompted
4554 separately for each of the installation directories, the prefix being
4555 only used to set the defaults.
4556
4557 EOM
4558 fn=d~
4559 rp='Installation prefix to use?'
4560 . ./getfile
4561 oldprefix=''
4562 case "$prefix" in
4563 '') ;;
4564 *)
4565         case "$ans" in
4566         "$prefix") ;;
4567         *) oldprefix="$prefix";;
4568         esac
4569         ;;
4570 esac
4571 prefix="$ans"
4572 prefixexp="$ansexp"
4573
4574 : is AFS running?
4575 echo " "
4576 case "$afs" in
4577 $define|true)   afs=true ;;
4578 $undef|false)   afs=false ;;
4579 *)      if test -d /afs; then
4580                 afs=true
4581         else
4582                 afs=false
4583         fi
4584         ;;
4585 esac
4586 if $afs; then
4587         echo "AFS may be running... I'll be extra cautious then..." >&4
4588 else
4589         echo "AFS does not seem to be running..." >&4
4590 fi
4591
4592 : determine installation prefix for where package is to be installed.
4593 if $afs; then 
4594 $cat <<EOM
4595
4596 Since you are running AFS, I need to distinguish the directory in which
4597 files will reside from the directory in which they are installed (and from
4598 which they are presumably copied to the former directory by occult means).
4599
4600 EOM
4601         case "$installprefix" in
4602         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4603         *) dflt="$installprefix";;
4604         esac
4605 else
4606 $cat <<EOM
4607
4608 In some special cases, particularly when building $package for distribution,
4609 it is convenient to distinguish between the directory in which files should 
4610 be installed from the directory ($prefix) in which they 
4611 will eventually reside.  For most users, these two directories are the same.
4612
4613 EOM
4614         case "$installprefix" in
4615         '') dflt=$prefix ;;
4616         *) dflt=$installprefix;;
4617         esac
4618 fi
4619 fn=d~
4620 rp='What installation prefix should I use for installing files?'
4621 . ./getfile
4622 installprefix="$ans"
4623 installprefixexp="$ansexp"
4624
4625 : set the prefixit variable, to compute a suitable default value
4626 prefixit='case "$3" in
4627 ""|none)
4628         case "$oldprefix" in
4629         "") eval "$1=\"\$$2\"";;
4630         *)
4631                 case "$3" in
4632                 "") eval "$1=";;
4633                 none)
4634                         eval "tp=\"\$$2\"";
4635                         case "$tp" in
4636                         ""|" ") eval "$1=\"\$$2\"";;
4637                         *) eval "$1=";;
4638                         esac;;
4639                 esac;;
4640         esac;;
4641 *)
4642         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4643         case "$tp" in
4644         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4645         /*-$oldprefix/*|\~*-$oldprefix/*)
4646                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4647         *) eval "$1=\"\$$2\"";;
4648         esac;;
4649 esac'
4650
4651 : set the base revision
4652 baserev=5.0
4653
4654
4655 : get the patchlevel
4656 echo " "
4657 echo "Getting the current patchlevel..." >&4
4658 if $test -r $rsrc/patchlevel.h;then
4659         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4660         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4661         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4662         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4663         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4664 else
4665         patchlevel=0
4666         subversion=0
4667         api_revision=0
4668         api_version=0
4669         api_subversion=0
4670 fi
4671 $echo $n "(You have $package" $c
4672 case "$package" in
4673 "*$baserev")    ;;
4674 *)              $echo $n " $baserev" $c ;;
4675 esac
4676 $echo $n " patchlevel $patchlevel" $c
4677 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4678 echo ".)"
4679 case "$osname" in
4680 dos|vms)
4681         : XXX Should be a Configure test for double-dots in filenames.
4682         version=`echo $baserev $patchlevel $subversion | \
4683                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4684         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4685                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4686         ;;
4687 *)
4688         version=`echo $baserev $patchlevel $subversion | \
4689                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4690         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4691                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4692         ;;
4693 esac
4694 : Special case the 5.005_xx maintenance series, which used 5.005
4695 : without any subversion label as a subdirectory in $sitelib
4696 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4697         api_versionstring='5.005'
4698 fi
4699
4700 : determine installation style
4701 : For now, try to deduce it from prefix unless it is already set.
4702 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4703 case "$installstyle" in
4704 '')     case "$prefix" in
4705                 *perl*) dflt='lib';;
4706                 *) dflt='lib/perl5' ;;
4707         esac
4708         ;;
4709 *)      dflt='lib/perl5' ;;
4710 esac
4711 : Probably not worth prompting for this since we prompt for all
4712 : the directories individually, and the prompt would be too long and
4713 : confusing anyway.
4714 installstyle=$dflt
4715
4716 : determine where private library files go
4717 : Usual default is /usr/local/lib/perl5/$version.
4718 : Also allow things like /opt/perl/lib/$version, since 
4719 : /opt/perl/lib/perl5... would be redundant.
4720 : The default "style" setting is made in installstyle.U
4721 case "$installstyle" in
4722 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4723 *)       set dflt privlib lib/$version ;;
4724 esac
4725 eval $prefixit
4726 $cat <<EOM
4727
4728 There are some auxiliary files for $package that need to be put into a
4729 private library directory that is accessible by everyone.
4730
4731 EOM
4732 fn=d~+
4733 rp='Pathname where the private library files will reside?'
4734 . ./getfile
4735 privlib="$ans"
4736 privlibexp="$ansexp"
4737 : Change installation prefix, if necessary.
4738 if $test X"$prefix" != X"$installprefix"; then
4739         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4740 else
4741         installprivlib="$privlibexp"
4742 fi
4743
4744 : set the prefixup variable, to restore leading tilda escape
4745 prefixup='case "$prefixexp" in
4746 "$prefix") ;;
4747 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4748 esac'
4749
4750 : determine where public architecture dependent libraries go
4751 set archlib archlib
4752 eval $prefixit
4753 : privlib default is /usr/local/lib/$package/$version
4754 : archlib default is /usr/local/lib/$package/$version/$archname
4755 : privlib may have an optional trailing /share.
4756 tdflt=`echo $privlib | $sed 's,/share$,,'`
4757 tdflt=$tdflt/$archname
4758 case "$archlib" in
4759 '')     dflt=$tdflt
4760         ;;
4761 *)      dflt="$archlib"
4762     ;;
4763 esac
4764 $cat <<EOM
4765
4766 $spackage contains architecture-dependent library files.  If you are
4767 sharing libraries in a heterogeneous environment, you might store
4768 these files in a separate location.  Otherwise, you can just include
4769 them with the rest of the public library files.
4770
4771 EOM
4772 fn=d+~
4773 rp='Where do you want to put the public architecture-dependent libraries?'
4774 . ./getfile
4775 archlib="$ans"
4776 archlibexp="$ansexp"
4777 if $test X"$archlib" = X"$privlib"; then
4778         d_archlib="$undef"
4779 else
4780         d_archlib="$define"
4781 fi
4782 : Change installation prefix, if necessary.
4783 if $test X"$prefix" != X"$installprefix"; then
4784         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4785 else
4786         installarchlib="$archlibexp"
4787 fi
4788
4789
4790 : Binary compatibility with 5.005 is not possible for builds
4791 : with advanced features
4792 case "$usethreads$usemultiplicity" in
4793 *define*)
4794         bincompat5005="$undef"
4795         d_bincompat5005="$undef"
4796         ;;
4797 *)      $cat <<EOM
4798
4799 Perl 5.006 can be compiled for binary compatibility with 5.005.
4800 If you decide to do so, you will be able to continue using most
4801 of the extensions that were compiled for Perl 5.005.
4802
4803 EOM
4804         case "$bincompat5005$d_bincompat5005" in
4805         *"$undef"*) dflt=n ;;
4806         *) dflt=y ;;
4807         esac
4808         rp='Binary compatibility with Perl 5.005?'
4809         . ./myread
4810         case "$ans" in
4811         y*) val="$define" ;;
4812         *)  val="$undef" ;;
4813         esac
4814         set d_bincompat5005
4815         eval $setvar
4816         case "$d_bincompat5005" in
4817         "$define")
4818                 bincompat5005="$define"
4819                 ;;
4820         *)      bincompat5005="$undef"
4821                 d_bincompat5005="$undef"
4822                 ;;
4823         esac
4824         ;;
4825 esac
4826
4827
4828 : see if setuid scripts can be secure
4829 $cat <<EOM
4830
4831 Some kernels have a bug that prevents setuid #! scripts from being
4832 secure.  Some sites have disabled setuid #! scripts because of this.
4833
4834 First let's decide if your kernel supports secure setuid #! scripts.
4835 (If setuid #! scripts would be secure but have been disabled anyway,
4836 don't say that they are secure if asked.)
4837
4838 EOM
4839
4840 val="$undef"
4841 if $test -d /dev/fd; then
4842         echo "#!$ls" >reflect
4843         chmod +x,u+s reflect
4844         ./reflect >flect 2>&1
4845         if $contains "/dev/fd" flect >/dev/null; then
4846                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4847                 val="$define"
4848         else
4849                 $cat <<EOM
4850 If you are not sure if they are secure, I can check but I'll need a
4851 username and password different from the one you are using right now.
4852 If you don't have such a username or don't want me to test, simply
4853 enter 'none'.
4854
4855 EOM
4856                 rp='Other username to test security of setuid scripts with?'
4857                 dflt='none'
4858                 . ./myread
4859                 case "$ans" in
4860                 n|none)
4861                         case "$d_suidsafe" in
4862                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
4863                                 dflt=n;;
4864                         "$undef")
4865                                 echo "Well, the $hint value is *not* secure." >&4
4866                                 dflt=n;;
4867                         *)      echo "Well, the $hint value *is* secure." >&4
4868                                 dflt=y;;
4869                         esac
4870                         ;;
4871                 *)
4872                         $rm -f reflect flect
4873                         echo "#!$ls" >reflect
4874                         chmod +x,u+s reflect
4875                         echo >flect
4876                         chmod a+w flect
4877                         echo '"su" will (probably) prompt you for '"$ans's password."
4878                         su $ans -c './reflect >flect'
4879                         if $contains "/dev/fd" flect >/dev/null; then
4880                                 echo "Okay, it looks like setuid scripts are secure." >&4
4881                                 dflt=y
4882                         else
4883                                 echo "I don't think setuid scripts are secure." >&4
4884                                 dflt=n
4885                         fi
4886                         ;;
4887                 esac
4888                 rp='Does your kernel have *secure* setuid scripts?'
4889                 . ./myread
4890                 case "$ans" in
4891                 [yY]*)  val="$define";;
4892                 *)      val="$undef";;
4893                 esac
4894         fi
4895 else
4896         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
4897         echo "(That's for file descriptors, not floppy disks.)"
4898         val="$undef"
4899 fi
4900 set d_suidsafe
4901 eval $setvar
4902
4903 $rm -f reflect flect
4904
4905 : now see if they want to do setuid emulation
4906 echo " "
4907 val="$undef"
4908 case "$d_suidsafe" in
4909 "$define")
4910         val="$undef"
4911         echo "No need to emulate SUID scripts since they are secure here." >& 4
4912         ;;
4913 *)
4914         $cat <<EOM
4915 Some systems have disabled setuid scripts, especially systems where
4916 setuid scripts cannot be secure.  On systems where setuid scripts have
4917 been disabled, the setuid/setgid bits on scripts are currently
4918 useless.  It is possible for $package to detect those bits and emulate
4919 setuid/setgid in a secure fashion.  This emulation will only work if
4920 setuid scripts have been disabled in your kernel.
4921
4922 EOM
4923         case "$d_dosuid" in
4924         "$define") dflt=y ;;
4925         *) dflt=n ;;
4926         esac
4927         rp="Do you want to do setuid/setgid emulation?"
4928         . ./myread
4929         case "$ans" in
4930         [yY]*)  val="$define";;
4931         *)      val="$undef";;
4932         esac
4933         ;;
4934 esac
4935 set d_dosuid
4936 eval $setvar
4937
4938 : determine filename position in cpp output
4939 echo " "
4940 echo "Computing filename position in cpp output for #include directives..." >&4
4941 echo '#include <stdio.h>' > foo.c
4942 $cat >fieldn <<EOF
4943 $startsh
4944 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4945 $grep '^[       ]*#.*stdio\.h' | \
4946 while read cline; do
4947         pos=1
4948         set \$cline
4949         while $test \$# -gt 0; do
4950                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4951                         echo "\$pos"
4952                         exit 0
4953                 fi
4954                 shift
4955                 pos=\`expr \$pos + 1\`
4956         done
4957 done
4958 EOF
4959 chmod +x fieldn
4960 fieldn=`./fieldn`
4961 $rm -f foo.c fieldn
4962 case $fieldn in
4963 '') pos='???';;
4964 1) pos=first;;
4965 2) pos=second;;
4966 3) pos=third;;
4967 *) pos="${fieldn}th";;
4968 esac
4969 echo "Your cpp writes the filename in the $pos field of the line."
4970
4971 : locate header file
4972 $cat >findhdr <<EOF
4973 $startsh
4974 wanted=\$1
4975 name=''
4976 for usrincdir in $usrinc
4977 do
4978         if test -f \$usrincdir/\$wanted; then
4979                 echo "\$usrincdir/\$wanted"
4980                 exit 0
4981         fi
4982 done
4983 awkprg='{ print \$$fieldn }'
4984 echo "#include <\$wanted>" > foo\$\$.c
4985 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4986 $grep "^[       ]*#.*\$wanted" | \
4987 while read cline; do
4988         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4989         case "\$name" in
4990         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4991         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4992         *) exit 2;;
4993         esac;
4994 done;
4995 #
4996 # status = 0: grep returned 0 lines, case statement not executed
4997 # status = 1: headerfile found
4998 # status = 2: while loop executed, no headerfile found
4999 #
5000 status=\$?
5001 $rm -f foo\$\$.c;
5002 if test \$status -eq 1; then
5003         exit 0;
5004 fi
5005 exit 1
5006 EOF
5007 chmod +x findhdr
5008
5009 : define an alternate in-header-list? function
5010 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5011 cont=true; xxf="echo \"<\$1> found.\" >&4";
5012 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5013 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5014 esac;
5015 case $# in 4) instead=instead;; *) instead="at last";; esac;
5016 while $test "$cont"; do
5017         xxx=`./findhdr $1`
5018         var=$2; eval "was=\$$2";
5019         if $test "$xxx" && $test -r "$xxx";
5020         then eval $xxf;
5021         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5022                 cont="";
5023         else eval $xxnf;
5024         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5025         set $yyy; shift; shift; yyy=$@;
5026         case $# in 0) cont="";;
5027         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5028                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5029         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5030                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5031         esac;
5032 done;
5033 while $test "$yyy";
5034 do set $yyy; var=$2; eval "was=\$$2";
5035         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5036         set $yyy; shift; shift; yyy=$@;
5037 done'
5038
5039 : see if this is a malloc.h system
5040 set malloc.h i_malloc
5041 eval $inhdr
5042
5043 : see if stdlib is available
5044 set stdlib.h i_stdlib
5045 eval $inhdr
5046
5047 : determine which malloc to compile in
5048 echo " "
5049 case "$usemymalloc" in
5050 ''|[yY]*|true|$define)  dflt='y' ;;
5051 *)      dflt='n' ;;
5052 esac
5053 rp="Do you wish to attempt to use the malloc that comes with $package?"
5054 . ./myread
5055 usemymalloc="$ans"
5056 case "$ans" in
5057 y*|true)
5058         usemymalloc='y'
5059         mallocsrc='malloc.c'
5060         mallocobj="malloc$_o"
5061         d_mymalloc="$define"
5062         case "$libs" in
5063         *-lmalloc*)
5064                 : Remove malloc from list of libraries to use
5065                 echo "Removing unneeded -lmalloc from library list" >&4
5066                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5067                 shift
5068                 libs="$*"
5069                 echo "libs = $libs" >&4
5070                 ;;
5071         esac
5072         ;;
5073 *)
5074         usemymalloc='n'
5075         mallocsrc=''
5076         mallocobj=''
5077         d_mymalloc="$undef"
5078         ;;
5079 esac
5080
5081 : compute the return types of malloc and free
5082 echo " "
5083 $cat >malloc.c <<END
5084 #$i_malloc I_MALLOC
5085 #$i_stdlib I_STDLIB
5086 #include <stdio.h>
5087 #include <sys/types.h>
5088 #ifdef I_MALLOC
5089 #include <malloc.h>
5090 #endif
5091 #ifdef I_STDLIB
5092 #include <stdlib.h>
5093 #endif
5094 #ifdef TRY_MALLOC
5095 void *malloc();
5096 #endif
5097 #ifdef TRY_FREE
5098 void free();
5099 #endif
5100 END
5101 case "$malloctype" in
5102 '')
5103         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5104                 malloctype='void *'
5105         else
5106                 malloctype='char *'
5107         fi
5108         ;;
5109 esac
5110 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5111
5112 case "$freetype" in
5113 '')
5114         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5115                 freetype='void'
5116         else
5117                 freetype='int'
5118         fi
5119         ;;
5120 esac
5121 echo "Your system uses $freetype free(), it would seem." >&4
5122 $rm -f malloc.[co]
5123 $cat <<EOM
5124
5125 The installation process will also create a directory for
5126 vendor-supplied add-ons.  Vendors who supply perl with their system
5127 may find it convenient to place all vendor-supplied files in this
5128 directory rather than in the main distribution directory.  This will
5129 ease upgrades between binary-compatible maintenance versions of perl.
5130
5131 Of course you may also use these directories in whatever way you see
5132 fit.  For example, you might use them to access modules shared over a
5133 company-wide network.
5134
5135 The default answer should be fine for most people.
5136 This causes further questions about vendor add-ons to be skipped
5137 and no vendor-specific directories will be configured for perl.
5138
5139 EOM
5140 rp='Do you want to configure vendor-specific add-on directories?'
5141 case "$usevendorprefix" in
5142 define|true|[yY]*) dflt=y ;;
5143 *) dflt=n ;;
5144 esac
5145 . ./myread
5146 case "$ans" in
5147 [yY]*)  fn=d~+
5148         rp='Installation prefix to use for vendor-supplied add-ons?'
5149         case "$vendorprefix" in
5150         '') dflt='' ;;
5151         *)  dflt=$vendorprefix ;;
5152         esac
5153         . ./getfile
5154         oldvendorprefix=''
5155         case "$vendorprefix" in
5156         '') ;;
5157         *)      case "$ans" in
5158                 "$prefix") ;;
5159                 *) oldvendorprefix="$prefix";;
5160                 esac
5161                 ;;
5162         esac
5163         usevendorprefix="$define"
5164         vendorprefix="$ans"
5165         vendorprefixexp="$ansexp"
5166         ;;
5167 *)      usevendorprefix="$undef"
5168         vendorprefix=''
5169         vendorprefixexp=''
5170         ;;
5171 esac
5172
5173 case "$vendorprefix" in
5174 '')     d_vendorlib="$undef"
5175         vendorlib=''
5176         vendorlibexp=''
5177         ;;
5178 *)      d_vendorlib="$define"
5179         : determine where vendor-supplied modules go.
5180         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5181         prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5182         case "$installstyle" in
5183         *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5184         *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5185         esac
5186         fn=d~+
5187         rp='Pathname for the vendor-supplied library files?'
5188         . ./getfile
5189         vendorlib="$ans"
5190         vendorlibexp="$ansexp"
5191         : Change installation prefix, if necessary.
5192         if $test X"$prefix" != X"$installprefix"; then
5193                 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5194         else
5195                 installvendorlib="$vendorlibexp"
5196         fi
5197         ;;
5198 esac
5199
5200 : Cruising for prototypes
5201 echo " "
5202 echo "Checking out function prototypes..." >&4
5203 $cat >prototype.c <<'EOCP'
5204 int main(int argc, char *argv[]) {
5205         exit(0);}
5206 EOCP
5207 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5208         echo "Your C compiler appears to support function prototypes."
5209         val="$define"
5210 else
5211         echo "Your C compiler doesn't seem to understand function prototypes."
5212         val="$undef"
5213 fi
5214 set prototype
5215 eval $setvar
5216 $rm -f prototype*
5217
5218 case "$prototype" in
5219 "$define") ;;
5220 *)      ansi2knr='ansi2knr'
5221         echo " "
5222         cat <<EOM >&4
5223
5224 $me:  FATAL ERROR:
5225 This version of $package can only be compiled by a compiler that 
5226 understands function prototypes.  Unfortunately, your C compiler 
5227         $cc $ccflags
5228 doesn't seem to understand them.  Sorry about that.
5229
5230 If GNU cc is available for your system, perhaps you could try that instead.  
5231
5232 Eventually, we hope to support building Perl with pre-ANSI compilers.
5233 If you would like to help in that effort, please contact <perlbug@perl.org>.
5234
5235 Aborting Configure now.
5236 EOM
5237         exit 2
5238         ;;
5239 esac
5240
5241 : determine where public executables go
5242 echo " "
5243 set dflt bin bin
5244 eval $prefixit
5245 fn=d~
5246 rp='Pathname where the public executables will reside?'
5247 . ./getfile
5248 if $test "X$ansexp" != "X$binexp"; then
5249         installbin=''
5250 fi
5251 bin="$ans"
5252 binexp="$ansexp"
5253 : Change installation prefix, if necessary.
5254 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5255 if $test X"$prefix" != X"$installprefix"; then
5256         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5257 else
5258         installbin="$binexp"
5259 fi
5260
5261 $cat <<EOM
5262
5263 After $package is installed, you may wish to install various
5264 add-on modules and utilities.  Typically, these add-ons will
5265 be installed under $prefix with the rest
5266 of this package.  However, you may wish to install such add-ons
5267 elsewhere under a different prefix.
5268
5269 If you do not wish to put everything under a single prefix, that's
5270 ok.  You will be prompted for the individual locations; this siteprefix
5271 is only used to suggest the defaults.
5272
5273 The default should be fine for most people.
5274
5275 EOM
5276 fn=d~+
5277 rp='Installation prefix to use for add-on modules and utilities?'
5278 : XXX Here might be another good place for an installstyle setting.
5279 case "$siteprefix" in
5280 '') dflt=$prefix ;;
5281 *)  dflt=$siteprefix ;;
5282 esac
5283 . ./getfile
5284 oldsiteprefix=''
5285 case "$siteprefix" in
5286 '') ;;
5287 *)
5288         case "$ans" in
5289         "$prefix") ;;
5290         *) oldsiteprefix="$prefix";;
5291         esac
5292         ;;
5293 esac
5294 siteprefix="$ans"
5295 siteprefixexp="$ansexp"
5296
5297 : determine where site specific libraries go.
5298 : Usual default is /usr/local/lib/perl5/site_perl/$version
5299 : The default "style" setting is made in installstyle.U
5300 : XXX No longer works with Prefixit stuff.
5301 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5302 case "$installstyle" in
5303 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5304 *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5305 esac
5306 $cat <<EOM
5307
5308 The installation process will create a directory for
5309 site-specific extensions and modules.  Most users find it convenient
5310 to place all site-specific files in this directory rather than in the
5311 main distribution directory.
5312
5313 EOM
5314 fn=d~+
5315 rp='Pathname for the site-specific library files?'
5316 . ./getfile
5317 sitelib="$ans"
5318 sitelibexp="$ansexp"
5319 : Change installation prefix, if necessary.
5320 if $test X"$prefix" != X"$installprefix"; then
5321         installsitelib=`echo $sitelibexp | sed "s#^$prefix#$installprefix#"`
5322 else
5323         installsitelib="$sitelibexp"
5324 fi
5325
5326 : Determine list of previous versions to include in @INC
5327 $cat > getverlist <<EOPL
5328 #!$perl -w
5329 use File::Basename;
5330 \$api_versionstring = "$api_versionstring";
5331 \$version = "$version";
5332 \$sitelib = "$sitelib";
5333 \$archname = "$archname";
5334 EOPL
5335         $cat >> getverlist <<'EOPL'
5336 # Can't have leading @ because metaconfig interprets it as a command!
5337 ;@inc_version_list=();
5338 $stem=dirname($sitelib);
5339 # Redo to do opendir/readdir? 
5340 if (-d $stem) {
5341     chdir($stem);
5342     ;@candidates = glob("5.*");
5343 }
5344 else {
5345     ;@candidates = ();
5346 }
5347
5348 # XXX ToDo:  These comparisons must be reworked when two-digit
5349 # subversions come along, so that 5.7.10 compares as greater than
5350 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
5351 # widespread that we can use the built-in version vectors rather
5352 # than reinventing them here.  For 5.6.0, however, we must
5353 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
5354 foreach $d (@candidates) {
5355     if ($d lt $version) {
5356         if ($d ge $api_versionstring) {
5357             unshift(@inc_version_list, "$d/$archname", $d);
5358         }
5359         elsif ($d ge "5.005") {
5360             unshift(@inc_version_list, $d);
5361         }
5362     }
5363     else {
5364         # Skip newer version.  I.e. don't look in
5365         # 5.7.0 if we're installing 5.6.1.
5366     }
5367 }
5368
5369 if (@inc_version_list) {
5370     print join(' ', @inc_version_list);
5371 }
5372 else {
5373     # Blank space to preserve value for next Configure run.
5374     print " ";
5375 }
5376 EOPL
5377 chmod +x getverlist
5378 case "$inc_version_list" in
5379 '')     if test -x $perl; then
5380                 dflt=`$perl getverlist`
5381         else
5382                 dflt='none'
5383         fi
5384         ;;
5385 $undef) dflt='none' ;;
5386 *)  dflt="$inc_version_list" ;;
5387 esac
5388 $cat <<'EOM'
5389
5390 In order to ease the process of upgrading, this version of perl 
5391 can be configured to use modules built and installed with earlier 
5392 versions of perl that were installed under $prefix.  Specify here
5393 the list of earlier versions that this version of perl should check.
5394 If Configure detected no earlier versions of perl installed under
5395 $prefix, then the list will be empty.  Answer 'none' to tell perl
5396 to not search earlier versions.
5397
5398 The default should almost always be sensible, so if you're not sure,
5399 just accept the default.
5400 EOM
5401
5402 rp='List of earlier versions to include in @INC?'
5403 . ./myread
5404 case "$ans" in
5405 [Nn]one) inc_version_list=' ' ;;
5406 *) inc_version_list="$ans" ;;
5407 esac
5408 case "$inc_version_list" in
5409 ''|' ') 
5410         inc_version_list_init='0';;
5411 *)      inc_version_list_init=`echo $inc_version_list |
5412                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5413         ;;
5414 esac
5415 $rm -f getverlist
5416
5417 : determine whether to install perl also as /usr/bin/perl
5418
5419 echo " "
5420 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5421         $cat <<EOM
5422 Many scripts expect to perl to be installed as /usr/bin/perl.
5423 I can install the perl you are about to compile also as /usr/bin/perl
5424 (in addition to $installbin/perl).
5425 EOM
5426         case "$installusrbinperl" in
5427         "$undef"|[nN]*) dflt='n';;
5428         *)              dflt='y';;
5429         esac
5430         rp="Do you want to install perl as /usr/bin/perl?"
5431         . ./myread
5432         case "$ans" in
5433         [yY]*)  val="$define";;
5434         *)      val="$undef" ;;
5435         esac
5436 else
5437         val="$undef"
5438 fi
5439 set installusrbinperl
5440 eval $setvar
5441
5442 echo " "
5443 echo "Checking for GNU C Library..." >&4
5444 cat >gnulibc.c <<EOM
5445 #include <stdio.h>
5446 int main()
5447 {
5448 #ifdef __GLIBC__
5449     exit(0);
5450 #else
5451     exit(1);
5452 #endif
5453 }
5454 EOM
5455 set gnulibc
5456 if eval $compile_ok && ./gnulibc; then
5457         val="$define"
5458         echo "You are using the GNU C Library"
5459 else
5460         val="$undef"
5461         echo "You are not using the GNU C Library"
5462 fi
5463 $rm -f gnulibc*
5464 set d_gnulibc
5465 eval $setvar
5466
5467 : see if nm is to be used to determine whether a symbol is defined or not
5468 case "$usenm" in
5469 '')
5470         dflt=''
5471         case "$d_gnulibc" in
5472         "$define")
5473                 echo " "
5474                 echo "nm probably won't work on the GNU C Library." >&4
5475                 dflt=n
5476                 ;;
5477         esac
5478         case "$dflt" in
5479         '') 
5480                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5481                         echo " "
5482                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5483                         echo "'nm' won't be sufficient on this sytem." >&4
5484                         dflt=n
5485                 fi
5486                 ;;
5487         esac
5488         case "$dflt" in
5489         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5490                 if $test $dflt -gt 20; then
5491                         dflt=y
5492                 else
5493                         dflt=n
5494                 fi
5495                 ;;
5496         esac
5497         ;;
5498 *)
5499         case "$usenm" in
5500         true|$define) dflt=y;;
5501         *) dflt=n;;
5502         esac
5503         ;;
5504 esac
5505 $cat <<EOM
5506
5507 I can use $nm to extract the symbols from your C libraries. This
5508 is a time consuming task which may generate huge output on the disk (up
5509 to 3 megabytes) but that should make the symbols extraction faster. The
5510 alternative is to skip the 'nm' extraction part and to compile a small
5511 test program instead to determine whether each symbol is present. If
5512 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5513 this may be the best solution.
5514
5515 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5516
5517 EOM
5518 rp="Shall I use $nm to extract C symbols from the libraries?"
5519 . ./myread
5520 case "$ans" in
5521 [Nn]*) usenm=false;;
5522 *) usenm=true;;
5523 esac
5524
5525 runnm=$usenm
5526 case "$reuseval" in
5527 true) runnm=false;;
5528 esac
5529
5530 : nm options which may be necessary
5531 case "$nm_opt" in
5532 '') if $test -f /mach_boot; then
5533                 nm_opt=''       # Mach
5534         elif $test -d /usr/ccs/lib; then
5535                 nm_opt='-p'     # Solaris (and SunOS?)
5536         elif $test -f /dgux; then
5537                 nm_opt='-p'     # DG-UX
5538         elif $test -f /lib64/rld; then
5539                 nm_opt='-p'     # 64-bit Irix
5540         else
5541                 nm_opt=''
5542         fi;;
5543 esac
5544
5545 : nm options which may be necessary for shared libraries but illegal
5546 : for archive libraries.  Thank you, Linux.
5547 case "$nm_so_opt" in
5548 '')     case "$myuname" in
5549         *linux*)
5550                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5551                         nm_so_opt='--dynamic'
5552                 fi
5553                 ;;
5554         esac
5555         ;;
5556 esac
5557
5558 case "$runnm" in
5559 true)
5560 : get list of predefined functions in a handy place
5561 echo " "
5562 case "$libc" in
5563 '') libc=unknown
5564         case "$libs" in
5565         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5566         esac
5567         ;;
5568 esac
5569 libnames='';
5570 case "$libs" in
5571 '') ;;
5572 *)  for thislib in $libs; do
5573         case "$thislib" in
5574         -lc|-lc_s)
5575                 : Handle C library specially below.
5576                 ;;
5577         -l*)
5578                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5579                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5580                         :
5581                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5582                         :
5583                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5584                         :
5585                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5586                         :
5587                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5588                         :
5589                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5590                         :
5591                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5592                         :
5593                 else
5594                         try=''
5595                 fi
5596                 libnames="$libnames $try"
5597                 ;;
5598         *) libnames="$libnames $thislib" ;;
5599         esac
5600         done
5601         ;;
5602 esac
5603 xxx=normal
5604 case "$libc" in
5605 unknown)
5606         set /lib/libc.$so
5607         for xxx in $libpth; do
5608                 $test -r $1 || set $xxx/libc.$so
5609                 : The messy sed command sorts on library version numbers.
5610                 $test -r $1 || \
5611                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5612                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5613                                 h
5614                                 s/[0-9][0-9]*/0000&/g
5615                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5616                                 G
5617                                 s/\n/ /' | \
5618                          sort | $sed -e 's/^.* //'`
5619                 eval set \$$#
5620         done
5621         $test -r $1 || set /usr/ccs/lib/libc.$so
5622         $test -r $1 || set /lib/libsys_s$_a
5623         ;;
5624 *)
5625         set blurfl
5626         ;;
5627 esac
5628 if $test -r "$1"; then
5629         echo "Your (shared) C library seems to be in $1."
5630         libc="$1"
5631 elif $test -r /lib/libc && $test -r /lib/clib; then
5632         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5633         xxx=apollo
5634         libc='/lib/clib /lib/libc'
5635         if $test -r /lib/syslib; then
5636                 echo "(Your math library is in /lib/syslib.)"
5637                 libc="$libc /lib/syslib"
5638         fi
5639 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5640         echo "Your C library seems to be in $libc, as you said before."
5641 elif $test -r $incpath/usr/lib/libc$_a; then
5642         libc=$incpath/usr/lib/libc$_a;
5643         echo "Your C library seems to be in $libc.  That's fine."
5644 elif $test -r /lib/libc$_a; then
5645         libc=/lib/libc$_a;
5646         echo "Your C library seems to be in $libc.  You're normal."
5647 else
5648         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5649                 :
5650         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5651                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5652         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5653                 :
5654         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5655                 :
5656         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5657                 :
5658         else
5659                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5660         fi
5661         if $test -r "$tans"; then
5662                 echo "Your C library seems to be in $tans, of all places."
5663                 libc=$tans
5664         else
5665                 libc='blurfl'
5666         fi
5667 fi
5668 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5669         dflt="$libc"
5670         cat <<EOM
5671
5672 If the guess above is wrong (which it might be if you're using a strange
5673 compiler, or your machine supports multiple models), you can override it here.
5674
5675 EOM
5676 else
5677         dflt=''
5678         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5679         cat >&4 <<EOM
5680 I can't seem to find your C library.  I've looked in the following places:
5681
5682 EOM
5683         $sed 's/^/      /' libpath
5684         cat <<EOM
5685
5686 None of these seems to contain your C library. I need to get its name...
5687
5688 EOM
5689 fi
5690 fn=f
5691 rp='Where is your C library?'
5692 . ./getfile
5693 libc="$ans"
5694
5695 echo " "
5696 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5697 set X `cat libnames`
5698 shift
5699 xxx=files
5700 case $# in 1) xxx=file; esac
5701 echo "Extracting names from the following $xxx for later perusal:" >&4
5702 echo " "
5703 $sed 's/^/      /' libnames >&4
5704 echo " "
5705 $echo $n "This may take a while...$c" >&4
5706
5707 for file in $*; do
5708         case $file in
5709         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5710         *) $nm $nm_opt $file 2>/dev/null;;
5711         esac
5712 done >libc.tmp
5713
5714 $echo $n ".$c"
5715 $grep fprintf libc.tmp > libc.ptf
5716 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5717 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5718 xxx='[ADTSIW]'
5719 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5720         eval $xscan;\
5721         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5722                 eval $xrun
5723 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5724         eval $xscan;\
5725         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5726                 eval $xrun
5727 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5728         eval $xscan;\
5729         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5730                 eval $xrun
5731 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5732         eval $xscan;\
5733         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5734                 eval $xrun
5735 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5736         eval $xscan;\
5737         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5738                 eval $xrun
5739 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5740         eval $xscan;\
5741         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5742                 eval $xrun
5743 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5744                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5745         eval $xscan;\
5746         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5747                 eval $xrun
5748 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5749         eval $xscan;\
5750         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5751                 eval $xrun
5752 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5753         eval $xscan;\
5754         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5755                 eval $xrun
5756 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5757         eval $xscan;\
5758         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5759                 eval $xrun
5760 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5761         eval $xscan;\
5762         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5763                 eval $xrun
5764 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5765         eval $xscan;\
5766         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5767                 eval $xrun
5768 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5769         eval $xscan;\
5770         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5771                 eval $xrun
5772 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5773         eval $xscan;\
5774         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5775                 eval $xrun
5776 else
5777         $nm -p $* 2>/dev/null >libc.tmp
5778         $grep fprintf libc.tmp > libc.ptf
5779         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5780                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5781         then
5782                 nm_opt='-p'
5783                 eval $xrun
5784         else
5785                 echo " "
5786                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5787                 com=''
5788                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5789                         for thisname in $libnames $libc; do
5790                                 $ar t $thisname >>libc.tmp
5791                         done
5792                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5793                         echo "Ok." >&4
5794                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5795                         # Repeat libc to extract forwarders to DLL entries too
5796                         for thisname in $libnames $libc; do
5797                                 $ar tv $thisname >>libc.tmp
5798                                 # Revision 50 of EMX has bug in $ar.
5799                                 # it will not extract forwarders to DLL entries
5800                                 # Use emximp which will extract exactly them.
5801                                 emximp -o tmp.imp $thisname \
5802                                     2>/dev/null && \
5803                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5804                                     < tmp.imp >>libc.tmp
5805                                 $rm tmp.imp
5806                         done
5807                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5808                         echo "Ok." >&4
5809                 else
5810                         echo "$ar didn't seem to work right." >&4
5811                         echo "Maybe this is a Cray...trying bld instead..." >&4
5812                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5813                         then
5814                                 for thisname in $libnames; do
5815                                         bld t $libnames | \
5816                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5817                                         $ar t $thisname >>libc.tmp
5818                                 done
5819                                 echo "Ok." >&4
5820                         else
5821                                 echo "That didn't work either.  Giving up." >&4
5822                                 exit 1
5823                         fi
5824                 fi
5825         fi
5826 fi
5827 nm_extract="$com"
5828 if $test -f /lib/syscalls.exp; then
5829         echo " "
5830         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5831         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5832 fi
5833 ;;
5834 esac
5835 $rm -f libnames libpath
5836
5837 : see if dld is available
5838 set dld.h i_dld
5839 eval $inhdr
5840
5841 : is a C symbol defined?
5842 csym='tlook=$1;
5843 case "$3" in
5844 -v) tf=libc.tmp; tc=""; tdc="";;
5845 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5846 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5847 esac;
5848 tx=yes;
5849 case "$reuseval-$4" in
5850 true-) ;;
5851 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5852 esac;
5853 case "$tx" in
5854 yes)
5855         case "$runnm" in
5856         true)
5857                 if $contains $tlook $tf >/dev/null 2>&1;
5858                 then tval=true;
5859                 else tval=false;
5860                 fi;;
5861         *)
5862                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5863                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5864                 then tval=true;
5865                 else tval=false;
5866                 fi;
5867                 $rm -f t t.c;;
5868         esac;;
5869 *)
5870         case "$tval" in
5871         $define) tval=true;;
5872         *) tval=false;;
5873         esac;;
5874 esac;
5875 eval "$2=$tval"'
5876
5877 : define an is-in-libc? function
5878 inlibc='echo " "; td=$define; tu=$undef;
5879 sym=$1; var=$2; eval "was=\$$2";
5880 tx=yes;
5881 case "$reuseval$was" in
5882 true) ;;
5883 true*) tx=no;;
5884 esac;
5885 case "$tx" in
5886 yes)
5887         set $sym tres -f;
5888         eval $csym;
5889         case "$tres" in
5890         true)
5891                 echo "$sym() found." >&4;
5892                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5893         *)
5894                 echo "$sym() NOT found." >&4;
5895                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5896         esac;;
5897 *)
5898         case "$was" in
5899         $define) echo "$sym() found." >&4;;
5900         *) echo "$sym() NOT found." >&4;;
5901         esac;;
5902 esac'
5903
5904 : see if dlopen exists
5905 xxx_runnm="$runnm"
5906 runnm=false
5907 set dlopen d_dlopen
5908 eval $inlibc
5909 runnm="$xxx_runnm"
5910
5911 : determine which dynamic loading, if any, to compile in
5912 echo " "
5913 dldir="ext/DynaLoader"
5914 case "$usedl" in
5915 $define|y|true)
5916         dflt='y'
5917         usedl="$define"
5918         ;;
5919 $undef|n|false)
5920         dflt='n'
5921         usedl="$undef"
5922         ;;
5923 *) 
5924         dflt='n'
5925         case "$d_dlopen" in
5926             $define) dflt='y' ;;
5927         esac
5928         case "$i_dld" in
5929             $define) dflt='y' ;;
5930         esac
5931         : Does a dl_xxx.xs file exist for this operating system
5932         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5933         ;;
5934 esac
5935 rp="Do you wish to use dynamic loading?"
5936 . ./myread
5937 usedl="$ans"
5938 case "$ans" in
5939 y*) usedl="$define"
5940         case "$dlsrc" in
5941         '')
5942                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5943                         dflt="$dldir/dl_${osname}.xs"
5944                 elif $test "$d_dlopen" = "$define" ; then
5945                         dflt="$dldir/dl_dlopen.xs"
5946                 elif $test "$i_dld" = "$define" ; then
5947                         dflt="$dldir/dl_dld.xs"
5948                 else
5949                         dflt=''
5950                 fi
5951                 ;;
5952         *)      dflt="$dldir/$dlsrc"
5953                 ;;
5954         esac
5955     echo "The following dynamic loading files are available:"
5956         : Can not go over to $dldir because getfile has path hard-coded in.
5957         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5958         rp="Source file to use for dynamic loading"
5959         fn="fne"
5960         gfpth="$src"
5961         . ./getfile
5962         usedl="$define"
5963         : emulate basename
5964         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5965
5966         $cat << EOM
5967
5968 Some systems may require passing special flags to $cc -c to
5969 compile modules that will be used to create a shared library.
5970 To use no flags, say "none".
5971
5972 EOM
5973     case "$cccdlflags" in
5974     '') case "$gccversion" in
5975                 '') case "$osname" in
5976                         hpux)   dflt='+z' ;;
5977                         next)   dflt='none' ;;
5978                         irix*)  dflt='-KPIC' ;;
5979                         svr4*|esix*|solaris) dflt='-KPIC' ;;
5980                         sunos)  dflt='-pic' ;;
5981                         *)      dflt='none' ;;
5982                     esac
5983                         ;;
5984                 *)  case "$osname" in
5985                         svr4*|esix*|solaris) dflt='-fPIC' ;;
5986                         *)      dflt='-fpic' ;;
5987                     esac ;;
5988             esac ;;
5989         ' ') dflt='none' ;;
5990     *)  dflt="$cccdlflags" ;;
5991     esac
5992     rp="Any special flags to pass to $cc -c to compile shared library modules?"
5993     . ./myread
5994     case "$ans" in
5995     none) cccdlflags=' ' ;;
5996     *) cccdlflags="$ans" ;;
5997     esac
5998
5999     cat << EOM
6000
6001 Some systems use ld to create libraries that can be dynamically loaded,
6002 while other systems (such as those using ELF) use $cc.
6003
6004 EOM
6005         case "$ld" in
6006         '')     $cat >try.c <<'EOM'
6007 /* Test for whether ELF binaries are produced */
6008 #include <fcntl.h>
6009 #include <stdlib.h>
6010 int main() {
6011         char b[4];
6012         int i = open("a.out",O_RDONLY);
6013         if(i == -1) 
6014                 exit(1); /* fail */
6015         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6016                 exit(0); /* succeed (yes, it's ELF) */
6017         else
6018                 exit(1); /* fail */
6019 }
6020 EOM
6021                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6022                         cat <<EOM
6023 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6024 EOM
6025                         dflt="$cc"
6026                 else
6027                         echo "I'll use ld to build dynamic libraries."
6028                         dflt='ld'
6029                 fi
6030                 rm -f try.c a.out
6031                 ;;
6032         *)      dflt="$ld"
6033                 ;;
6034         esac
6035
6036     rp="What command should be used to create dynamic libraries?"
6037     . ./myread
6038         ld="$ans"
6039
6040     cat << EOM
6041
6042 Some systems may require passing special flags to $ld to create a
6043 library that can be dynamically loaded.  If your ld flags include
6044 -L/other/path options to locate libraries outside your loader's normal
6045 search path, you may need to specify those -L options here as well.  To
6046 use no flags, say "none".
6047
6048 EOM
6049     case "$lddlflags" in
6050     '') case "$osname" in
6051                         beos) dflt='-nostart' ;;
6052                         hpux)  dflt='-b +vnocompatwarnings' ;;
6053                         linux|irix*)    dflt='-shared' ;;
6054                         next)  dflt='none' ;;
6055                         solaris) dflt='-G' ;;
6056                         sunos) dflt='-assert nodefinitions' ;;
6057                         svr4*|esix*) dflt="-G $ldflags" ;;
6058                 *)     dflt='none' ;;
6059                         esac
6060                         ;;
6061     *) dflt="$lddlflags" ;;
6062     esac
6063
6064         : Try to guess additional flags to pick up local libraries.
6065         : Be careful not to append to a plain 'none'
6066         case "$dflt" in
6067         none) dflt='' ;;
6068         esac
6069         for thisflag in $ldflags; do
6070                 case "$thisflag" in
6071                 -L*)
6072                         case " $dflt " in
6073                         *" $thisflag "*) ;;
6074                         *) dflt="$dflt $thisflag" ;;
6075                         esac
6076                         ;;
6077                 esac
6078         done
6079
6080         case "$dflt" in
6081         ''|' ') dflt='none' ;;
6082         esac
6083
6084     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6085     . ./myread
6086     case "$ans" in
6087     none) lddlflags=' ' ;;
6088     *) lddlflags="$ans" ;;
6089     esac
6090
6091         cat <<EOM
6092
6093 Some systems may require passing special flags to $cc to indicate that
6094 the resulting executable will use dynamic linking.  To use no flags,
6095 say "none".
6096
6097 EOM
6098     case "$ccdlflags" in
6099     '') case "$osname" in
6100                 hpux)   dflt='-Wl,-E' ;;
6101                 linux)  dflt='-rdynamic' ;;
6102                 next)   dflt='none' ;;
6103                 sunos)  dflt='none' ;;
6104                 *)      dflt='none' ;;
6105             esac ;;
6106     ' ')  dflt='none' ;;
6107     *)  dflt="$ccdlflags" ;;
6108     esac
6109     rp="Any special flags to pass to $cc to use dynamic linking?"
6110     . ./myread
6111     case "$ans" in
6112     none) ccdlflags=' ' ;;
6113     *) ccdlflags="$ans" ;;
6114     esac
6115     ;;
6116 *)  usedl="$undef"
6117         ld='ld'
6118     dlsrc='dl_none.xs'
6119     lddlflags=''
6120     ccdlflags=''
6121     ;;
6122 esac
6123
6124 also=''
6125 case "$usedl" in
6126 $undef)
6127         # No dynamic loading being used, so don't bother even to prompt.
6128         useshrplib='false'
6129         ;;
6130 *)      case "$useshrplib" in
6131         '')     case "$osname" in
6132                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6133                         dflt=y
6134                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6135                         ;;
6136                 next*)
6137                         case "$osvers" in
6138                         4*)     dflt=y
6139                                 also='Building a shared libperl is needed for MAB support.'
6140                                 ;;
6141                         *)      dflt=n
6142                                 ;;
6143                         esac
6144                         ;;
6145                 *)      dflt=n
6146                         ;;
6147                 esac
6148                 ;;
6149         $define|true|[Yy]*)
6150                 dflt=y
6151                 ;;
6152         *)      dflt=n
6153                 ;;
6154         esac
6155         $cat << EOM
6156
6157 The perl executable is normally obtained by linking perlmain.c with
6158 libperl${_a}, any static extensions (usually just DynaLoader), and
6159 any other libraries needed on this system (such as -lm, etc.).  Since
6160 your system supports dynamic loading, it is probably possible to build
6161 a shared libperl.$so.  If you will have more than one executable linked
6162 to libperl.$so, this will significantly reduce the size of each
6163 executable, but it may have a noticeable affect on performance.  The
6164 default is probably sensible for your system.
6165 $also
6166
6167 EOM
6168         rp="Build a shared libperl.$so (y/n)"
6169         . ./myread
6170         case "$ans" in
6171         true|$define|[Yy]*)
6172                 useshrplib='true'  ;;
6173         *)      useshrplib='false' ;;
6174         esac
6175         ;;
6176 esac
6177
6178 case "$useshrplib" in
6179 true)
6180         case "$libperl" in
6181         '')
6182                 # Figure out a good name for libperl.so.  Since it gets stored in
6183                 # a version-specific architecture-dependent library, the version
6184                 # number isn't really that important, except for making cc/ld happy.
6185                 #
6186                 # A name such as libperl.so.3.1
6187                 majmin="libperl.$so.$patchlevel.$subversion"
6188                 # A name such as libperl.so.301
6189                 majonly=`echo $patchlevel $subversion |
6190                         $awk '{printf "%d%02d", $1, $2}'`
6191                 majonly=libperl.$so.$majonly
6192                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6193                 # rely on figuring it out from the naming of libc.
6194                 case "${osname}${osvers}" in
6195                 next4*)
6196                         dflt=libperl.5.$so
6197                         # XXX How handle the --version stuff for MAB?
6198                         ;;
6199                 linux*)  # ld won't link with a bare -lperl otherwise.
6200                         dflt=libperl.$so
6201                         ;;
6202                 cygwin*) # include version
6203                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6204                         ;;
6205                 *)      # Try to guess based on whether libc has major.minor.
6206                         case "$libc" in
6207                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6208                         *libc.$so.[0-9]*) dflt=$majonly ;;
6209                         *)      dflt=libperl.$so ;;
6210                         esac
6211                         ;;
6212                 esac
6213                 ;;
6214         *)      dflt=$libperl
6215                 ;;
6216         esac
6217         cat << EOM
6218
6219 I need to select a good name for the shared libperl.  If your system uses
6220 library names with major and minor numbers, then you might want something
6221 like $majmin.  Alternatively, if your system uses a single version
6222 number for shared libraries, then you might want to use $majonly.
6223 Or, your system might be quite happy with a simple libperl.$so.
6224
6225 Since the shared libperl will get installed into a version-specific
6226 architecture-dependent directory, the version number of the shared perl
6227 library probably isn't important, so the default should be o.k.
6228
6229 EOM
6230         rp='What name do you want to give to the shared libperl?'
6231         . ./myread
6232         libperl=$ans
6233         echo "Ok, I'll use $libperl"
6234         ;;
6235 *)
6236         libperl="libperl${_a}"
6237         ;;
6238 esac
6239
6240 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6241 case "$shrpdir" in
6242 '') ;;
6243 *)      $cat >&4 <<EOM
6244 WARNING:  Use of the shrpdir variable for the installation location of
6245 the shared $libperl is not supported.  It was never documented and
6246 will not work in this version.  Let me (perlbug@perl.com)
6247 know of any problems this may cause.
6248
6249 EOM
6250         case "$shrpdir" in
6251         "$archlibexp/CORE")
6252                 $cat >&4 <<EOM
6253 But your current setting of $shrpdir is
6254 the default anyway, so it's harmless.
6255 EOM
6256                 ;;
6257         *)
6258                 $cat >&4 <<EOM
6259 Further, your current attempted setting of $shrpdir
6260 conflicts with the value of $archlibexp/CORE
6261 that installperl will use.
6262 EOM
6263                 ;;
6264         esac
6265         ;;
6266 esac
6267
6268 # How will the perl executable find the installed shared $libperl?
6269 # Add $xxx to ccdlflags.
6270 # If we can't figure out a command-line option, use $shrpenv to
6271 # set env LD_RUN_PATH.  The main perl makefile uses this.
6272 shrpdir=$archlibexp/CORE
6273 xxx=''
6274 tmp_shrpenv=''
6275 if "$useshrplib"; then
6276     case "$osname" in 
6277         aix)
6278                 # We'll set it in Makefile.SH...
6279                 ;;
6280         solaris|netbsd)
6281                 xxx="-R $shrpdir"
6282                 ;;
6283         freebsd)
6284                 xxx="-Wl,-R$shrpdir"
6285                 ;;
6286         linux|irix*|dec_osf)
6287                 xxx="-Wl,-rpath,$shrpdir"
6288                 ;;
6289         next)
6290                 # next doesn't like the default...
6291                 ;;
6292         beos)
6293                 # beos doesn't like the default, either.
6294                 ;;
6295         hpux*)
6296                 # hpux doesn't like the default, either.
6297                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6298                 ;;
6299         *)
6300                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6301                 ;;
6302         esac
6303         case "$xxx" in
6304         '') ;;
6305         *)      
6306                 # Only add $xxx if it isn't already in ccdlflags.
6307                 case " $ccdlflags " in
6308                 *" $xxx "*)     ;;
6309                 *)      ccdlflags="$ccdlflags $xxx"
6310                         cat <<EOM >&4
6311
6312 Adding $xxx to the flags
6313 passed to $ld so that the perl executable will find the 
6314 installed shared $libperl.
6315
6316 EOM
6317                         ;;
6318                 esac
6319                 ;;
6320         esac
6321 fi
6322 # Fix ccdlflags in AIX for building external extensions.
6323 # (For building Perl itself bare -bE:perl.exp is needed,
6324 #  Makefile.SH takes care of this.)
6325 case "$osname" in
6326 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6327 esac
6328 # Respect a hint or command-line value.
6329 case "$shrpenv" in
6330 '') shrpenv="$tmp_shrpenv" ;;
6331 esac
6332 case "$ldlibpthname" in
6333 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6334 none)   ldlibpthname='' ;;
6335 esac
6336
6337 : determine where manual pages go
6338 set man1dir man1dir none
6339 eval $prefixit
6340 $cat <<EOM
6341
6342 $spackage has manual pages available in source form.
6343 EOM
6344 case "$nroff" in
6345 nroff)
6346         echo "However, you don't have nroff, so they're probably useless to you."
6347         case "$man1dir" in
6348         '') man1dir="none";;
6349         esac;;
6350 esac
6351 echo "If you don't want the manual sources installed, answer 'none'."
6352 case "$man1dir" in
6353 ' ') dflt=none
6354         ;;
6355 '')
6356         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6357         lookpath="$lookpath $prefixexp/man/p_man/man1"
6358         lookpath="$lookpath $prefixexp/man/u_man/man1"
6359         lookpath="$lookpath $prefixexp/man/man.1"
6360         case "$sysman" in
6361         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6362         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6363         esac
6364         set dflt
6365         eval $prefixup
6366         ;;
6367 *)  dflt="$man1dir"
6368         ;;
6369 esac
6370 echo " "
6371 fn=dn+~
6372 rp="Where do the main $spackage manual pages (source) go?"
6373 . ./getfile
6374 if $test "X$man1direxp" != "X$ansexp"; then
6375         installman1dir=''
6376 fi
6377 man1dir="$ans"
6378 man1direxp="$ansexp"
6379 case "$man1dir" in
6380 '')     man1dir=' '
6381         installman1dir='';;
6382 esac
6383
6384 : Change installation prefix, if necessary.
6385 if $test X"$prefix" != X"$installprefix"; then
6386         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6387 else
6388         installman1dir="$man1direxp"
6389 fi
6390
6391 : What suffix to use on installed man pages
6392
6393 case "$man1dir" in
6394 ' ')
6395         man1ext='0'
6396         ;;
6397 *)
6398         rp="What suffix should be used for the main $spackage man pages?"
6399         case "$man1ext" in
6400         '')     case "$man1dir" in
6401                 *1)  dflt=1 ;;
6402                 *1p) dflt=1p ;;
6403                 *1pm) dflt=1pm ;;
6404                 *l) dflt=l;;
6405                 *n) dflt=n;;
6406                 *o) dflt=o;;
6407                 *p) dflt=p;;
6408                 *C) dflt=C;;
6409                 *L) dflt=L;;
6410                 *L1) dflt=L1;;
6411                 *) dflt=1;;
6412                 esac
6413                 ;;
6414         *)      dflt="$man1ext";;
6415         esac
6416         . ./myread
6417         man1ext="$ans"
6418         ;;
6419 esac
6420
6421 : see if we can have long filenames
6422 echo " "
6423 rmlist="$rmlist /tmp/cf$$"
6424 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
6425 first=123456789abcdef
6426 second=/tmp/cf$$/$first
6427 $rm -f $first $second
6428 if (echo hi >$first) 2>/dev/null; then
6429         if $test -f 123456789abcde; then
6430                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6431                 val="$undef"
6432         else
6433                 if (echo hi >$second) 2>/dev/null; then
6434                         if $test -f /tmp/cf$$/123456789abcde; then
6435                                 $cat <<'EOM'
6436 That's peculiar... You can have filenames longer than 14 characters, but only
6437 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
6438 I shall consider your system cannot support long filenames at all.
6439 EOM
6440                                 val="$undef"
6441                         else
6442                                 echo 'You can have filenames longer than 14 characters.' >&4
6443                                 val="$define"
6444                         fi
6445                 else
6446                         $cat <<'EOM'
6447 How confusing! Some of your filesystems are sane enough to allow filenames
6448 longer than 14 characters but some others like /tmp can't even think about them.
6449 So, for now on, I shall assume your kernel does not allow them at all.
6450 EOM
6451                         val="$undef"
6452                 fi
6453         fi
6454 else
6455         $cat <<'EOM'
6456 You can't have filenames longer than 14 chars.  You can't even think about them!
6457 EOM
6458         val="$undef"
6459 fi 
6460 set d_flexfnam
6461 eval $setvar
6462 $rm -rf /tmp/cf$$ 123456789abcde*
6463
6464 : determine where library module manual pages go
6465 set man3dir man3dir none
6466 eval $prefixit
6467 $cat <<EOM
6468
6469 $spackage has manual pages for many of the library modules.
6470 EOM
6471
6472 case "$nroff" in
6473 nroff)
6474         $cat <<'EOM'
6475 However, you don't have nroff, so they're probably useless to you.
6476 EOM
6477         case "$man3dir" in
6478         '') man3dir="none";;
6479         esac;;
6480 esac
6481
6482 case "$d_flexfnam" in
6483 undef)
6484         $cat <<'EOM'
6485 However, your system can't handle the long file names like File::Basename.3. 
6486 EOM
6487         case "$man3dir" in
6488         '') man3dir="none";;
6489         esac;;
6490 esac
6491
6492 echo "If you don't want the manual sources installed, answer 'none'."
6493 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6494 case "$man3dir" in
6495 '')     dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6496         if $test -d "$privlib/man/man3"; then
6497                 cat <<EOM >&4
6498
6499 WARNING:  Previous versions of perl installed man3 pages into
6500 $privlib/man/man3.  This version will suggest a 
6501 new default of $dflt.  
6502 EOM
6503                 tdflt=$dflt
6504                 dflt='n'
6505                 rp='Do you wish to preserve the old behavior?(y/n)'
6506                 . ./myread
6507                 case "$ans" in
6508                 y*) dflt="$privlib/man/man3" ;;
6509                 *)  dflt=$tdflt ;;
6510                 esac
6511     fi
6512         ;;
6513 ' ') dflt=none;;
6514 *)      dflt="$man3dir" ;;
6515 esac
6516 echo " "
6517 fn=dn+~
6518 rp="Where do the $package library man pages (source) go?"
6519 . ./getfile
6520 man3dir="$ans"
6521 man3direxp="$ansexp"
6522 case "$man1dir" in
6523 '')     man3dir=' '
6524         installman3dir='';;
6525 esac
6526
6527 : Change installation prefix, if necessary.
6528 if $test X"$prefix" != X"$installprefix"; then
6529         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6530 else
6531         installman3dir="$man3direxp"
6532 fi
6533
6534 : What suffix to use on installed man pages
6535 case "$man3dir" in
6536 ' ')
6537         man3ext='0'
6538         ;;
6539 *)
6540         rp="What suffix should be used for the $package library man pages?"
6541         case "$man3ext" in
6542         '')     case "$man3dir" in
6543                 *3)  dflt=3 ;;
6544                 *3p) dflt=3p ;;
6545                 *3pm) dflt=3pm ;;
6546                 *l) dflt=l;;
6547                 *n) dflt=n;;
6548                 *o) dflt=o;;
6549                 *p) dflt=p;;
6550                 *C) dflt=C;;
6551                 *L) dflt=L;;
6552                 *L3) dflt=L3;;
6553                 *) dflt=3;;
6554                 esac
6555                 ;;
6556         *)      dflt="$man3ext";;
6557         esac
6558         . ./myread
6559         man3ext="$ans"
6560         ;;
6561 esac
6562
6563 : see if we have to deal with yellow pages, now NIS.
6564 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6565         if $test -f /usr/etc/nibindd; then
6566                 echo " "
6567                 echo "I'm fairly confident you're on a NeXT."
6568                 echo " "
6569                 rp='Do you get the hosts file via NetInfo?'
6570                 dflt=y
6571                 case "$hostcat" in
6572                 nidump*) ;;
6573                 '') ;;
6574                 *) dflt=n;;
6575                 esac
6576                 . ./myread
6577                 case "$ans" in
6578                 y*) hostcat='nidump hosts .';;
6579                 *)      case "$hostcat" in
6580                         nidump*) hostcat='';;
6581                         esac
6582                         ;;
6583                 esac
6584         fi
6585         case "$hostcat" in
6586         nidump*) ;;
6587         *)
6588                 case "$hostcat" in
6589                 *ypcat*) dflt=y;;
6590                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6591                                 dflt=y
6592                         else
6593                                 dflt=n
6594                         fi;;
6595                 *) dflt=n;;
6596                 esac
6597                 echo " "
6598                 rp='Are you getting the hosts file via yellow pages?'
6599                 . ./myread
6600                 case "$ans" in
6601                 y*) hostcat='ypcat hosts';;
6602                 *) hostcat='cat /etc/hosts';;
6603                 esac
6604                 ;;
6605         esac
6606 fi
6607 case "$hostcat" in
6608 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6609 esac
6610 case "$groupcat" in
6611 '') test -f /etc/group && groupcat='cat /etc/group';;
6612 esac
6613 case "$passcat" in
6614 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6615 esac
6616
6617 : now get the host name
6618 echo " "
6619 echo "Figuring out host name..." >&4
6620 case "$myhostname" in
6621 '') cont=true
6622         echo 'Maybe "hostname" will work...'
6623         if tans=`sh -c hostname 2>&1` ; then
6624                 myhostname=$tans
6625                 phostname=hostname
6626                 cont=''
6627         fi
6628         ;;
6629 *) cont='';;
6630 esac
6631 if $test "$cont"; then
6632         if ./xenix; then
6633                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
6634                 if tans=`cat /etc/systemid 2>&1` ; then
6635                         myhostname=$tans
6636                         phostname='cat /etc/systemid'
6637                         echo "Whadyaknow.  Xenix always was a bit strange..."
6638                         cont=''
6639                 fi
6640         elif $test -r /etc/systemid; then
6641                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6642         fi
6643 fi
6644 if $test "$cont"; then
6645         echo 'No, maybe "uuname -l" will work...'
6646         if tans=`sh -c 'uuname -l' 2>&1` ; then
6647                 myhostname=$tans
6648                 phostname='uuname -l'
6649         else
6650                 echo 'Strange.  Maybe "uname -n" will work...'
6651                 if tans=`sh -c 'uname -n' 2>&1` ; then
6652                         myhostname=$tans
6653                         phostname='uname -n'
6654                 else
6655                         echo 'Oh well, maybe I can mine it out of whoami.h...'
6656                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6657                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6658                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6659                         else
6660                                 case "$myhostname" in
6661                                 '') echo "Does this machine have an identity crisis or something?"
6662                                         phostname='';;
6663                                 *)
6664                                         echo "Well, you said $myhostname before..."
6665                                         phostname='echo $myhostname';;
6666                                 esac
6667                         fi
6668                 fi
6669         fi
6670 fi
6671 : you do not want to know about this
6672 set $myhostname
6673 myhostname=$1
6674
6675 : verify guess
6676 if $test "$myhostname" ; then
6677         dflt=y
6678         rp='Your host name appears to be "'$myhostname'".'" Right?"
6679         . ./myread
6680         case "$ans" in
6681         y*) ;;
6682         *) myhostname='';;
6683         esac
6684 fi
6685
6686 : bad guess or no guess
6687 while $test "X$myhostname" = X ; do
6688         dflt=''
6689         rp="Please type the (one word) name of your host:"
6690         . ./myread
6691         myhostname="$ans"
6692 done
6693
6694 : translate upper to lower if necessary
6695 case "$myhostname" in
6696 *[A-Z]*)
6697         echo "(Normalizing case in your host name)"
6698         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6699         ;;
6700 esac
6701
6702 case "$myhostname" in
6703 *.*)
6704         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6705         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6706         echo "(Trimming domain name from host name--host name is now $myhostname)"
6707         ;;
6708 *) case "$mydomain" in
6709         '')
6710                 {
6711                         test "X$hostcat" = "Xypcat hosts" &&
6712                         ypmatch "$myhostname" hosts 2>/dev/null |\
6713                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
6714                         $test -s hosts
6715                 } || {
6716                         test "X$hostcat" != "X" &&
6717                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
6718                                         /[       ]$myhostname[  . ]/p" > hosts
6719                 }
6720                 tmp_re="[       . ]"
6721                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
6722                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
6723                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6724                         hosts | $sort | $uniq | \
6725                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6726                 case `$echo X$dflt` in
6727                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
6728                         dflt=.
6729                         ;;
6730                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6731                         ;;
6732                 esac
6733                 case "$dflt" in
6734                 .)
6735                         tans=`./loc resolv.conf X /etc /usr/etc`
6736                         if $test -f "$tans"; then
6737                                 echo "(Attempting domain name extraction from $tans)"
6738                                 dflt=.`$sed -n -e 's/   / /g' \
6739                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
6740                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6741                                 case "$dflt" in
6742                                 .) dflt=.`$sed -n -e 's/        / /g' \
6743                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
6744                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6745                                         ;;
6746                                 esac
6747                         fi
6748                         ;;
6749                 esac
6750                 case "$dflt" in
6751                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6752                         dflt=.`sh -c domainname 2>/dev/null`
6753                         case "$dflt" in
6754                         '') dflt='.';;
6755                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6756                         esac
6757                         ;;
6758                 esac
6759                 case "$dflt" in
6760                 .) echo "(Lost all hope -- silly guess then)"
6761                         dflt='.uucp'
6762                         ;;
6763                 esac
6764                 $rm -f hosts
6765                 ;;
6766         *) dflt="$mydomain";;
6767         esac;;
6768 esac
6769 echo " "
6770 rp="What is your domain name?"
6771 . ./myread
6772 tans="$ans"
6773 case "$ans" in
6774 '') ;;
6775 .*) ;;
6776 *) tans=".$tans";;
6777 esac
6778 mydomain="$tans"
6779
6780 : translate upper to lower if necessary
6781 case "$mydomain" in
6782 *[A-Z]*)
6783         echo "(Normalizing case in your domain name)"
6784         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6785         ;;
6786 esac
6787
6788 : a little sanity check here
6789 case "$phostname" in
6790 '') ;;
6791 *)
6792         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6793         $myhostname$mydomain|$myhostname) ;;
6794         *)
6795                 case "$phostname" in
6796                 sed*)
6797                         echo "(That doesn't agree with your whoami.h file, by the way.)"
6798                         ;;
6799                 *)
6800                         echo "(That doesn't agree with your $phostname command, by the way.)"
6801                         ;;
6802                 esac
6803         ;;
6804         esac
6805         ;;
6806 esac
6807
6808 $cat <<EOM
6809
6810 I need to get your e-mail address in Internet format if possible, i.e.
6811 something like user@host.domain. Please answer accurately since I have
6812 no easy means to double check it. The default value provided below
6813 is most probably close to reality but may not be valid from outside
6814 your organization...
6815
6816 EOM
6817 cont=x
6818 while test "$cont"; do
6819         case "$cf_email" in
6820         '') dflt="$cf_by@$myhostname$mydomain";;
6821         *) dflt="$cf_email";;
6822         esac
6823         rp='What is your e-mail address?'
6824         . ./myread
6825         cf_email="$ans"
6826         case "$cf_email" in
6827         *@*.*) cont='' ;;
6828         *)
6829                 rp='Address does not look like an Internet one.  Use it anyway?'
6830                 case "$fastread" in
6831                 yes) dflt=y ;;
6832                 *) dflt=n ;;
6833                 esac
6834                 . ./myread
6835                 case "$ans" in
6836                 y*) cont='' ;;
6837                 *) echo " " ;;
6838                 esac
6839                 ;;
6840         esac
6841 done
6842
6843 $cat <<EOM
6844
6845 If you or somebody else will be maintaining perl at your site, please
6846 fill in the correct e-mail address here so that they may be contacted
6847 if necessary. Currently, the "perlbug" program included with perl
6848 will send mail to this address in addition to perlbug@perl.com. You may
6849 enter "none" for no administrator.
6850
6851 EOM
6852 case "$perladmin" in
6853 '') dflt="$cf_email";;
6854 *) dflt="$perladmin";;
6855 esac
6856 rp='Perl administrator e-mail address'
6857 . ./myread
6858 perladmin="$ans"
6859
6860 : figure out how to guarantee perl startup
6861 case "$startperl" in
6862 '')
6863         case "$sharpbang" in
6864         *!)
6865                 $cat <<EOH
6866
6867 I can use the #! construct to start perl on your system. This will
6868 make startup of perl scripts faster, but may cause problems if you
6869 want to share those scripts and perl is not in a standard place
6870 ($binexp/perl) on all your platforms. The alternative is to force
6871 a shell by starting the script with a single ':' character.
6872
6873 EOH
6874                 dflt="$binexp/perl"
6875                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6876                 . ./myread
6877                 case "$ans" in
6878                 none)   startperl=": # use perl";;
6879                 *)      startperl="#!$ans"
6880                         if $test 30 -lt `echo "$ans" | wc -c`; then
6881                                 $cat >&4 <<EOM
6882
6883 WARNING:  Some systems limit the #! command to 32 characters.
6884 If you experience difficulty running Perl scripts with #!, try
6885 installing Perl in a directory with a shorter pathname.
6886
6887 EOM
6888                         fi ;;
6889                 esac
6890                 ;;
6891         *) startperl=": # use perl"
6892                 ;;
6893         esac
6894         ;;
6895 esac
6896 echo "I'll use $startperl to start perl scripts."
6897
6898 : figure best path for perl in scripts
6899 case "$perlpath" in
6900 '')
6901         perlpath="$binexp/perl"
6902         case "$startperl" in
6903         *!*) ;;
6904         *)
6905                 $cat <<EOH
6906
6907 I will use the "eval 'exec'" idiom to start Perl on your system.
6908 I can use the full path of your Perl binary for this purpose, but
6909 doing so may cause problems if you want to share those scripts and
6910 Perl is not always in a standard place ($binexp/perl).
6911
6912 EOH
6913                 dflt="$binexp/perl"
6914                 rp="What path shall I use in \"eval 'exec'\"?"
6915                 . ./myread
6916                 perlpath="$ans"
6917                 ;;
6918         esac
6919         ;;
6920 esac
6921 case "$startperl" in
6922 *!*)    ;;
6923 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6924 esac
6925
6926 : determine where public executable scripts go
6927 set scriptdir scriptdir
6928 eval $prefixit
6929 case "$scriptdir" in
6930 '')
6931         dflt="$bin"
6932         : guess some guesses
6933         $test -d /usr/share/scripts && dflt=/usr/share/scripts
6934         $test -d /usr/share/bin     && dflt=/usr/share/bin
6935         $test -d /usr/local/script  && dflt=/usr/local/script
6936         $test -d /usr/local/scripts && dflt=/usr/local/scripts
6937         $test -d $prefixexp/script  && dflt=$prefixexp/script
6938         set dflt
6939         eval $prefixup
6940         ;;
6941 *)  dflt="$scriptdir"
6942         ;;
6943 esac
6944 $cat <<EOM
6945  
6946 Some installations have a separate directory just for executable scripts so
6947 that they can mount it across multiple architectures but keep the scripts in
6948 one spot.  You might, for example, have a subdirectory of /usr/share for this.
6949 Or you might just lump your scripts in with all your other executables.
6950  
6951 EOM
6952 fn=d~
6953 rp='Where do you keep publicly executable scripts?'
6954 . ./getfile
6955 if $test "X$ansexp" != "X$scriptdirexp"; then
6956         installscript=''
6957 fi
6958 scriptdir="$ans"
6959 scriptdirexp="$ansexp"
6960 : Change installation prefix, if necessary.
6961 if $test X"$prefix" != X"$installprefix"; then
6962         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
6963 else
6964         installscript="$scriptdirexp"
6965 fi
6966
6967 : determine where site specific architecture-dependent libraries go.
6968 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6969 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6970 : sitelib may have an optional trailing /share.
6971 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6972 tdflt="$tdflt/$archname"
6973 set sitearch sitearch none
6974 eval $prefixit
6975 case "$sitearch" in
6976 '')     dflt="$tdflt" ;;
6977 *)      dflt="$sitearch" ;;
6978 esac
6979 $cat <<EOM
6980
6981 The installation process will also create a directory for
6982 architecture-dependent site-specific extensions and modules.
6983
6984 EOM
6985 fn=nd~+
6986 rp='Pathname for the site-specific architecture-dependent library files?'
6987 . ./getfile
6988 sitearch="$ans"
6989 sitearchexp="$ansexp"
6990 : Change installation prefix, if necessary.
6991 if $test X"$prefix" != X"$installprefix"; then
6992         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6993 else
6994         installsitearch="$sitearchexp"
6995 fi
6996
6997 : determine where add-on public executables go
6998 case "$sitebin" in
6999 '')     dflt=$siteprefix/bin ;;
7000 *)      dflt=$sitebin ;;
7001 esac
7002 fn=d~
7003 rp='Pathname where the add-on public executables should be installed?'
7004 . ./getfile
7005 sitebin="$ans"
7006 sitebinexp="$ansexp"
7007 : Change installation prefix, if necessary.
7008 if $test X"$prefix" != X"$installprefix"; then
7009         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7010 else
7011         installsitebin="$sitebinexp"
7012 fi
7013
7014 : see if sqrtl exists
7015 set sqrtl d_sqrtl
7016 eval $inlibc
7017
7018 case "$ccflags" in
7019 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7020 esac
7021
7022 case "$uselongdouble" in
7023 $define|true|[yY]*)     dflt='y';;
7024 *) dflt='n';;
7025 esac
7026 cat <<EOM
7027
7028 Perl can be built to take advantage of long doubles which
7029 (if available) may give more accuracy and range for floating point numbers.
7030
7031 If this doesn't make any sense to you, just accept the default '$dflt'.
7032 EOM
7033 rp='Try to use long doubles if available?'
7034 . ./myread
7035 case "$ans" in
7036 y|Y)    val="$define"   ;;
7037 *)      val="$undef"    ;;
7038 esac
7039 set uselongdouble
7040 eval $setvar
7041
7042 case "$uselongdouble" in
7043 true|[yY]*) uselongdouble="$define" ;;
7044 esac
7045
7046 case "$uselongdouble" in
7047 $define)
7048 : Look for a hint-file generated 'call-back-unit'.  If the
7049 : user has specified that long doubles should be used,
7050 : we may need to set or change some other defaults.
7051         if $test -f uselongdouble.cbu; then
7052                 echo "Your platform has some specific hints for long doubles, using them..."
7053                 . ./uselongdouble.cbu
7054         else
7055                 $cat <<EOM
7056 (Your platform doesn't have any specific hints for long doubles.)
7057 EOM
7058         fi
7059         ;;
7060 esac
7061
7062 case "$uselongdouble:$d_sqrtl" in
7063 $define:$undef)
7064                 $cat <<EOM >&4
7065
7066 You requested the use of long doubles but you do not seem to have
7067 the mathematic functions for long doubles.  I'm disabling the use
7068 of long doubles.
7069 EOM
7070         uselongdouble=$undef
7071         ;;
7072 esac
7073
7074 case "$useperlio" in
7075 $define|true|[yY]*)     dflt='y';;
7076 *) dflt='n';;
7077 esac
7078 cat <<EOM
7079
7080 Previous version of $package used the standard IO mechanisms as defined
7081 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7082 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7083 the default.  This abstraction layer can use AT&T's sfio (if you already
7084 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7085 problems with some extension modules.  Using PerlIO with stdio is safe,
7086 but it is slower than plain stdio and therefore is not the default.
7087
7088 If this doesn't make any sense to you, just accept the default '$dflt'.
7089 EOM
7090 rp='Use the experimental PerlIO abstraction layer?'
7091 . ./myread
7092 case "$ans" in
7093 y|Y) 
7094         val="$define"
7095         ;;     
7096 *)      
7097         echo "Ok, doing things the stdio way"
7098         val="$undef"
7099         ;;
7100 esac
7101 set useperlio
7102 eval $setvar 
7103
7104 case "$vendorprefix" in
7105 '')     d_vendorbin="$undef"
7106         vendorbin=''
7107         vendorbinexp=''
7108         ;;
7109 *)      d_vendorbin="$define"
7110         : determine where vendor-supplied executables go.
7111         dflt=$vendorprefix/bin
7112         fn=d~+
7113         rp='Pathname for the vendor-supplied executables directory?'
7114         . ./getfile
7115         vendorbin="$ans"
7116         vendorbinexp="$ansexp"
7117         : Change installation prefix, if necessary.
7118         if $test X"$prefix" != X"$installprefix"; then
7119                 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7120         else
7121                 installvendorbin="$vendorbinexp"
7122         fi
7123         ;;
7124 esac
7125
7126 : check for length of double
7127 echo " "
7128 case "$doublesize" in
7129 '')
7130         $echo $n "Checking to see how big your double precision numbers are...$c" >&4
7131         $cat >try.c <<'EOCP'
7132 #include <stdio.h>
7133 int main()
7134 {
7135     printf("%d\n", (int)sizeof(double));
7136     exit(0);
7137 }
7138 EOCP
7139         set try
7140         if eval $compile_ok; then
7141                 doublesize=`./try`
7142                 $echo " $doublesize bytes." >&4
7143         else
7144                 dflt='8'
7145                 echo "(I can't seem to compile the test program.  Guessing...)"
7146                 rp="What is the size of a double precision number (in bytes)?"
7147                 . ./myread
7148                 doublesize="$ans"
7149         fi
7150         ;;
7151 esac
7152 $rm -f try.c try
7153
7154 : check for long doubles
7155 echo " "
7156 $echo $n "Checking to see if your system supports long double..." $c >&4
7157 echo 'int main() { long double x = 7.0; }' > try.c
7158 set try
7159 if eval $compile; then
7160         val="$define"
7161         echo " Yes, it does." >&4
7162 else
7163         val="$undef"
7164         echo " No, it doesn't." >&4
7165 fi
7166 $rm try.*
7167 set d_longdbl
7168 eval $setvar
7169
7170 : check for length of long double
7171 case "${d_longdbl}${longdblsize}" in
7172 $define)
7173         echo " "
7174         $echo $n "Checking to see how big your long doubles are..." $c >&4
7175         $cat >try.c <<'EOCP'
7176 #include <stdio.h>
7177 int main()
7178 {
7179         printf("%d\n", sizeof(long double));
7180 }
7181 EOCP
7182         set try
7183         set try
7184         if eval $compile; then
7185                 longdblsize=`./try$exe_ext`
7186                 $echo " $longdblsize bytes." >&4
7187         else
7188                 dflt='8'
7189                 echo " "
7190                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7191                 rp="What is the size of a long double (in bytes)?"
7192                 . ./myread
7193                 longdblsize="$ans"
7194         fi
7195         if $test "X$doublesize" = "X$longdblsize"; then
7196                 echo "(That isn't any different from an ordinary double.)"
7197         fi      
7198         ;;
7199 esac
7200 $rm -f try.* try
7201
7202 : Check how to convert floats to strings.
7203 if test "X$d_Gconvert" = X; then
7204         echo " "
7205         echo "Checking for an efficient way to convert floats to strings."
7206         $cat >try.c <<EOP
7207 #ifdef TRY_gconvert
7208 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7209 char *myname = "gconvert";
7210 #endif
7211 #ifdef TRY_gcvt
7212 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7213 char *myname = "gcvt";
7214 #endif
7215 #ifdef TRY_qgcvt
7216 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7217 char *myname = "qgcvt";
7218 #define DOUBLETYPE long double
7219 #endif
7220 #ifdef TRY_sprintf
7221 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7222 char *myname = "sprintf";
7223 #endif
7224
7225 #ifndef DOUBLETYPE
7226 #define DOUBLETYPE double
7227 #endif
7228
7229 #include <stdio.h>
7230
7231 #define I_STDLIB $i_stdlib
7232 #ifdef I_STDLIB
7233 #include <stdlib.h>
7234 #endif
7235
7236 int
7237 checkit(expect, got)
7238 char *expect;
7239 char *got;
7240 {
7241     if (strcmp(expect, got)) {
7242                 printf("%s oddity:  Expected %s, got %s\n",
7243                         myname, expect, got);
7244                 exit(1);
7245         }
7246 }
7247
7248 int main()
7249
7250         char buf[64]; 
7251         buf[63] = '\0';
7252
7253         /* This must be 1st test on (which?) platform */
7254         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7255         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7256         checkit("0.1", buf);
7257
7258         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7259         checkit("1", buf);
7260
7261         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7262         checkit("0", buf);
7263
7264         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7265         checkit("-1", buf);
7266
7267         /* Some Linux gcvt's give 1.e+5 here. */
7268         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7269         checkit("100000", buf);
7270         
7271         /* Some Linux gcvt's give -1.e+5 here. */
7272         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7273         checkit("-100000", buf);
7274
7275         exit(0);
7276 }
7277 EOP
7278         case "$d_Gconvert" in
7279         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7280         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7281         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7282         *) xxx_list='gconvert gcvt sprintf' ;;
7283         esac
7284
7285         case "$d_longdbl$uselongdouble" in
7286         definedefine) xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7287         esac
7288
7289         for xxx_convert in $xxx_list; do
7290                 echo "Trying $xxx_convert..."
7291                 $rm -f try try$_o
7292                 set try -DTRY_$xxx_convert
7293                 if eval $compile; then
7294                         echo "$xxx_convert() found." >&4
7295                         if ./try; then
7296                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
7297                                 break;
7298                         else
7299                                 echo "...But $xxx_convert didn't work as I expected."
7300                         fi
7301                 else
7302                         echo "$xxx_convert NOT found." >&4
7303                 fi
7304         done
7305                 
7306         case "$xxx_convert" in
7307         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7308         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7309         qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7310         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7311         esac
7312 fi
7313
7314 echo " "
7315
7316 if $test X"$d_longdbl" = X"$define"; then
7317
7318 echo "Checking how to print long doubles..." >&4
7319
7320 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7321         $cat >try.c <<'EOCP'
7322 #include <sys/types.h>
7323 #include <stdio.h>
7324 int main() {
7325   double d = 123.456;
7326   printf("%.3f\n", d);
7327 }
7328 EOCP
7329         set try
7330         if eval $compile; then
7331                 yyy=`./try$exe_ext`
7332                 case "$yyy" in
7333                 123.456)
7334                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7335                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7336                         echo "We will use %f."
7337                         ;;
7338                 esac
7339         fi
7340 fi
7341
7342 if $test X"$sPRIfldbl" = X; then
7343         $cat >try.c <<'EOCP'
7344 #include <sys/types.h>
7345 #include <stdio.h>
7346 int main() {
7347   long double d = 123.456;
7348   printf("%.3llf\n", d);
7349 }
7350 EOCP
7351         set try
7352         if eval $compile; then
7353                 yyy=`./try$exe_ext`
7354                 case "$yyy" in
7355                 123.456)
7356                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7357                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7358                         echo "We will use %llf."
7359                         ;;
7360                 esac
7361         fi
7362 fi
7363
7364 if $test X"$sPRIfldbl" = X; then
7365         $cat >try.c <<'EOCP'
7366 #include <sys/types.h>
7367 #include <stdio.h>
7368 int main() {
7369   long double d = 123.456;
7370   printf("%.3Lf\n", d);
7371 }
7372 EOCP
7373         set try
7374         if eval $compile; then
7375                 yyy=`./try$exe_ext`
7376                 case "$yyy" in
7377                 123.456)
7378                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7379                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7380                         echo "We will use %Lf."
7381                         ;;
7382                 esac
7383         fi
7384 fi
7385
7386 if $test X"$sPRIfldbl" = X; then
7387         $cat >try.c <<'EOCP'
7388 #include <sys/types.h>
7389 #include <stdio.h>
7390 int main() {
7391   long double d = 123.456;
7392   printf("%.3lf\n", d);
7393 }
7394 EOCP
7395         set try
7396         if eval $compile; then
7397                 yyy=`./try$exe_ext`
7398                 case "$yyy" in
7399                 123.456)
7400                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7401                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7402                         echo "We will use %lf."
7403                         ;;
7404                 esac
7405         fi
7406 fi
7407
7408 if $test X"$sPRIfldbl" = X; then
7409         echo "Cannot figure out how to print long doubles." >&4
7410 fi
7411
7412 $rm -f try try.*
7413
7414 fi # d_longdbl
7415
7416 case "$sPRIfldbl" in
7417 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7418         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7419         ;;
7420 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7421         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7422         ;;
7423 esac
7424
7425 : Initialize h_fcntl
7426 h_fcntl=false
7427
7428 : Initialize h_sysfile
7429 h_sysfile=false
7430
7431 : access call always available on UNIX
7432 set access d_access
7433 eval $inlibc
7434
7435 : locate the flags for 'access()'
7436 case "$d_access" in
7437 "$define")
7438         echo " "
7439         $cat >access.c <<'EOCP'
7440 #include <sys/types.h>
7441 #ifdef I_FCNTL
7442 #include <fcntl.h>
7443 #endif
7444 #ifdef I_SYS_FILE
7445 #include <sys/file.h>
7446 #endif
7447 #ifdef I_UNISTD
7448 #include <unistd.h>
7449 #endif
7450 int main() {
7451         exit(R_OK);
7452 }
7453 EOCP
7454         : check sys/file.h first, no particular reason here
7455         if $test `./findhdr sys/file.h` && \
7456                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7457                 h_sysfile=true;
7458                 echo "<sys/file.h> defines the *_OK access constants." >&4
7459         elif $test `./findhdr fcntl.h` && \
7460                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7461                 h_fcntl=true;
7462                 echo "<fcntl.h> defines the *_OK access constants." >&4
7463         elif $test `./findhdr unistd.h` && \
7464                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7465                 echo "<unistd.h> defines the *_OK access constants." >&4
7466         else
7467                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7468         fi
7469         ;;
7470 esac
7471 $rm -f access*
7472
7473 : see if accessx exists
7474 set accessx d_accessx
7475 eval $inlibc
7476
7477 : see if alarm exists
7478 set alarm d_alarm
7479 eval $inlibc
7480
7481 : see if atolf exists
7482 set atolf d_atolf
7483 eval $inlibc
7484
7485 : see if atoll exists
7486 set atoll d_atoll
7487 eval $inlibc
7488
7489 : Look for GNU-cc style attribute checking
7490 echo " "
7491 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7492 $cat >attrib.c <<'EOCP'
7493 #include <stdio.h>
7494 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7495 EOCP
7496 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7497         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7498                 echo "Your C compiler doesn't fully support __attribute__."
7499                 val="$undef"
7500         else
7501                 echo "Your C compiler supports __attribute__."
7502                 val="$define"
7503         fi
7504 else
7505         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7506         val="$undef"
7507 fi
7508 set d_attribut
7509 eval $setvar
7510 $rm -f attrib*
7511
7512 : see if bcmp exists
7513 set bcmp d_bcmp
7514 eval $inlibc
7515
7516 : see if bcopy exists
7517 set bcopy d_bcopy
7518 eval $inlibc
7519
7520 : see if this is a unistd.h system
7521 set unistd.h i_unistd
7522 eval $inhdr
7523
7524 : see if getpgrp exists
7525 set getpgrp d_getpgrp
7526 eval $inlibc
7527
7528 case "$d_getpgrp" in
7529 "$define")
7530         echo " "
7531         echo "Checking to see which flavor of getpgrp is in use..."
7532         $cat >set.c <<EOP
7533 #$i_unistd I_UNISTD
7534 #include <sys/types.h>
7535 #ifdef I_UNISTD
7536 #  include <unistd.h>
7537 #endif
7538 int main()
7539 {
7540         if (getuid() == 0) {
7541                 printf("(I see you are running Configure as super-user...)\n");
7542                 setuid(1);
7543         }
7544 #ifdef TRY_BSD_PGRP
7545         if (getpgrp(1) == 0)
7546                 exit(0);
7547 #else
7548         if (getpgrp() > 0)
7549                 exit(0);
7550 #endif
7551         exit(1);
7552 }
7553 EOP
7554         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7555                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7556                 val="$define"
7557         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7558                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7559                 val="$undef"
7560         else
7561                 echo "I can't seem to compile and run the test program."
7562                 if ./usg; then
7563                         xxx="a USG one, i.e. you use getpgrp()."
7564                 else
7565                         # SVR4 systems can appear rather BSD-ish.
7566                         case "$i_unistd" in
7567                         $undef)
7568                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7569                                 val="$define"
7570                                 ;;
7571                         $define)
7572                                 xxx="probably a USG one, i.e. you use getpgrp()."
7573                                 val="$undef"
7574                                 ;;
7575                         esac
7576                 fi
7577                 echo "Assuming your getpgrp is $xxx" >&4
7578         fi
7579         ;;
7580 *) val="$undef";;
7581 esac
7582 set d_bsdgetpgrp
7583 eval $setvar
7584 $rm -f set set.c
7585
7586 : see if setpgrp exists
7587 set setpgrp d_setpgrp
7588 eval $inlibc
7589
7590 case "$d_setpgrp" in
7591 "$define")
7592         echo " "
7593         echo "Checking to see which flavor of setpgrp is in use..."
7594         $cat >set.c <<EOP
7595 #$i_unistd I_UNISTD
7596 #include <sys/types.h>
7597 #ifdef I_UNISTD
7598 #  include <unistd.h>
7599 #endif
7600 int main()
7601 {
7602         if (getuid() == 0) {
7603                 printf("(I see you are running Configure as super-user...)\n");
7604                 setuid(1);
7605         }
7606 #ifdef TRY_BSD_PGRP
7607         if (-1 == setpgrp(1, 1))
7608                 exit(0);
7609 #else
7610         if (setpgrp() != -1)
7611                 exit(0);
7612 #endif
7613         exit(1);
7614 }
7615 EOP
7616         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7617                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7618                 val="$define"
7619         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7620                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7621                 val="$undef"
7622         else
7623                 echo "(I can't seem to compile and run the test program.)"
7624                 if ./usg; then
7625                         xxx="a USG one, i.e. you use setpgrp()."
7626                 else
7627                         # SVR4 systems can appear rather BSD-ish.
7628                         case "$i_unistd" in
7629                         $undef)
7630                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7631                                 val="$define"
7632                                 ;;
7633                         $define)
7634                                 xxx="probably a USG one, i.e. you use setpgrp()."
7635                                 val="$undef"
7636                                 ;;
7637                         esac
7638                 fi
7639                 echo "Assuming your setpgrp is $xxx" >&4
7640         fi
7641         ;;
7642 *) val="$undef";;
7643 esac
7644 set d_bsdsetpgrp
7645 eval $setvar
7646 $rm -f set set.c
7647 : see if bzero exists
7648 set bzero d_bzero
7649 eval $inlibc
7650
7651 : see if signal is declared as pointer to function returning int or void
7652 echo " "
7653 xxx=`./findhdr signal.h`
7654 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7655 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7656         echo "You have int (*signal())() instead of void." >&4
7657         val="$undef"
7658 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
7659         echo "You have void (*signal())()." >&4
7660         val="$define"
7661 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7662         echo "You have int (*signal())() instead of void." >&4
7663         val="$undef"
7664 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7665         echo "You have void (*signal())()." >&4
7666         val="$define"
7667 else
7668         case "$d_voidsig" in
7669         '')
7670         echo "I can't determine whether signal handler returns void or int..." >&4
7671                 dflt=void
7672                 rp="What type does your signal handler return?"
7673                 . ./myread
7674                 case "$ans" in
7675                 v*) val="$define";;
7676                 *) val="$undef";;
7677                 esac;;
7678         "$define")
7679                 echo "As you already told me, signal handler returns void." >&4
7680                 val="$define"
7681                 ;;
7682         *)      echo "As you already told me, signal handler returns int." >&4
7683                 val="$undef"
7684                 ;;
7685         esac
7686 fi
7687 set d_voidsig
7688 eval $setvar
7689 case "$d_voidsig" in
7690 "$define") signal_t="void";;
7691 *) signal_t="int";;
7692 esac
7693 $rm -f $$.tmp
7694
7695 : check for ability to cast large floats to 32-bit ints.
7696 echo " "
7697 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7698 if $test "$intsize" -ge 4; then
7699         xxx=int
7700 else
7701         xxx=long
7702 fi
7703 $cat >try.c <<EOCP
7704 #include <stdio.h>
7705 #include <sys/types.h>
7706 #include <signal.h>
7707 $signal_t blech(s) int s; { exit(3); }
7708 int main()
7709 {
7710         $xxx i32;
7711         double f, g;
7712         int result = 0;
7713         char str[16];
7714         signal(SIGFPE, blech);
7715
7716         /* Don't let compiler optimize the test away.  Store the number 
7717            in a writable string for gcc to pass to sscanf under HP/UX.
7718         */
7719         sprintf(str, "2147483647");
7720         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7721         g = 10 * f;
7722         i32  = ($xxx) g;
7723
7724         /* x86 processors will probably give 0x8000 0000, which is a
7725        sign change.  We don't want that.  We want to mimic SPARC
7726            behavior here, which is to preserve the sign and give
7727            back 0x7fff ffff.
7728         */
7729         if (i32 != ($xxx) f)
7730                 result |= 1;
7731         exit(result);
7732 }
7733 EOCP
7734 set try
7735 if eval $compile_ok; then
7736         ./try
7737         yyy=$?
7738 else
7739         echo "(I can't seem to compile the test program--assuming it can't)"
7740         yyy=1
7741 fi
7742 case "$yyy" in
7743 0)      val="$define"
7744         echo "Yup, it can."
7745         ;;
7746 *)      val="$undef"
7747         echo "Nope, it can't."
7748         ;;
7749 esac
7750 set d_casti32
7751 eval $setvar
7752 $rm -f try try.*
7753
7754 : check for ability to cast negative floats to unsigned
7755 echo " "
7756 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7757 $cat >try.c <<EOCP
7758 #include <stdio.h>
7759 #include <sys/types.h>
7760 #include <signal.h>
7761 $signal_t blech(s) int s; { exit(7); }
7762 $signal_t blech_in_list(s) int s; { exit(4); }
7763 unsigned long dummy_long(p) unsigned long p; { return p; }
7764 unsigned int dummy_int(p) unsigned int p; { return p; }
7765 unsigned short dummy_short(p) unsigned short p; { return p; }
7766 int main()
7767 {
7768         double f;
7769         unsigned long along;
7770         unsigned int aint;
7771         unsigned short ashort;
7772         int result = 0;
7773         char str[16];
7774         
7775         /* Frustrate gcc-2.7.2's optimizer which failed this test with
7776            a direct f = -123. assignment.  gcc-2.8.0 reportedly
7777            optimized the whole file away
7778         */
7779         /* Store the number in a writable string for gcc to pass to 
7780            sscanf under HP/UX.
7781         */
7782         sprintf(str, "-123");
7783         sscanf(str, "%lf", &f);  /* f = -123.; */
7784
7785         signal(SIGFPE, blech);
7786         along = (unsigned long)f;
7787         aint = (unsigned int)f;
7788         ashort = (unsigned short)f;
7789         if (along != (unsigned long)-123)
7790                 result |= 1;
7791         if (aint != (unsigned int)-123)
7792                 result |= 1;
7793         if (ashort != (unsigned short)-123)
7794                 result |= 1;
7795         sprintf(str, "1073741824.");
7796         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
7797         f = f + f;
7798         along = 0;
7799         along = (unsigned long)f;
7800         if (along != 0x80000000)
7801                 result |= 2;
7802         f -= 1.;
7803         along = 0;
7804         along = (unsigned long)f;
7805         if (along != 0x7fffffff)
7806                 result |= 1;
7807         f += 2.;
7808         along = 0;
7809         along = (unsigned long)f;
7810         if (along != 0x80000001)
7811                 result |= 2;
7812         if (result)
7813                 exit(result);
7814         signal(SIGFPE, blech_in_list);
7815         sprintf(str, "123.");
7816         sscanf(str, "%lf", &f);  /* f = 123.; */
7817         along = dummy_long((unsigned long)f);
7818         aint = dummy_int((unsigned int)f);
7819         ashort = dummy_short((unsigned short)f);
7820         if (along != (unsigned long)123)
7821                 result |= 4;
7822         if (aint != (unsigned int)123)
7823                 result |= 4;
7824         if (ashort != (unsigned short)123)
7825                 result |= 4;
7826         exit(result);
7827
7828 }
7829 EOCP
7830 set try
7831 if eval $compile_ok; then
7832         ./try
7833         castflags=$?
7834 else
7835         echo "(I can't seem to compile the test program--assuming it can't)"
7836         castflags=7
7837 fi
7838 case "$castflags" in
7839 0)      val="$define"
7840         echo "Yup, it can."
7841         ;;
7842 *)      val="$undef"
7843         echo "Nope, it can't."
7844         ;;
7845 esac
7846 set d_castneg
7847 eval $setvar
7848 $rm -f try.*
7849
7850 : see if vprintf exists
7851 echo " "
7852 if set vprintf val -f d_vprintf; eval $csym; $val; then
7853         echo 'vprintf() found.' >&4
7854         val="$define"
7855         $cat >vprintf.c <<'EOF'
7856 #include <varargs.h>
7857
7858 int main() { xxx("foo"); }
7859
7860 xxx(va_alist)
7861 va_dcl
7862 {
7863         va_list args;
7864         char buf[10];
7865
7866         va_start(args);
7867         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
7868 }
7869 EOF
7870         set vprintf
7871         if eval $compile && ./vprintf; then
7872                 echo "Your vsprintf() returns (int)." >&4
7873                 val2="$undef"
7874         else
7875                 echo "Your vsprintf() returns (char*)." >&4
7876                 val2="$define"
7877         fi
7878 else
7879         echo 'vprintf() NOT found.' >&4
7880                 val="$undef"
7881                 val2="$undef"
7882 fi
7883 set d_vprintf
7884 eval $setvar
7885 val=$val2
7886 set d_charvspr
7887 eval $setvar
7888
7889 : see if chown exists
7890 set chown d_chown
7891 eval $inlibc
7892
7893 : see if chroot exists
7894 set chroot d_chroot
7895 eval $inlibc
7896
7897 : see if chsize exists
7898 set chsize d_chsize
7899 eval $inlibc
7900
7901 : check for const keyword
7902 echo " "
7903 echo 'Checking to see if your C compiler knows about "const"...' >&4
7904 $cat >const.c <<'EOCP'
7905 typedef struct spug { int drokk; } spug;
7906 int main()
7907 {
7908         const char *foo;
7909         const spug y;
7910 }
7911 EOCP
7912 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7913         val="$define"
7914         echo "Yup, it does."
7915 else
7916         val="$undef"
7917         echo "Nope, it doesn't."
7918 fi
7919 set d_const
7920 eval $setvar
7921
7922 : see if crypt exists
7923 echo " "
7924 if set crypt val -f d_crypt; eval $csym; $val; then
7925         echo 'crypt() found.' >&4
7926         val="$define"
7927         cryptlib=''
7928 else
7929         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7930         if $test -z "$cryptlib"; then
7931                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7932         else
7933                 cryptlib=-lcrypt
7934         fi
7935         if $test -z "$cryptlib"; then
7936                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7937         else
7938                 cryptlib=-lcrypt
7939         fi
7940         if $test -z "$cryptlib"; then
7941                 cryptlib=`./loc libcrypt$_a "" $libpth`
7942         else
7943                 cryptlib=-lcrypt
7944         fi
7945         if $test -z "$cryptlib"; then
7946                 echo 'crypt() NOT found.' >&4
7947                 val="$undef"
7948         else
7949                 val="$define"
7950         fi
7951 fi
7952 set d_crypt
7953 eval $setvar
7954
7955 : get csh whereabouts
7956 case "$csh" in
7957 'csh') val="$undef" ;;
7958 *) val="$define" ;;
7959 esac
7960 set d_csh
7961 eval $setvar
7962 : Respect a hint or command line value for full_csh.
7963 case "$full_csh" in
7964 '') full_csh=$csh ;;
7965 esac
7966
7967 : see if cuserid exists
7968 set cuserid d_cuserid
7969 eval $inlibc
7970
7971 : see if this is a limits.h system
7972 set limits.h i_limits
7973 eval $inhdr
7974
7975 : see if this is a float.h system
7976 set float.h i_float
7977 eval $inhdr
7978
7979 : See if number of significant digits in a double precision number is known
7980 echo " "
7981 $cat >dbl_dig.c <<EOM
7982 #$i_limits I_LIMITS
7983 #$i_float I_FLOAT
7984 #ifdef I_LIMITS
7985 #include <limits.h>
7986 #endif
7987 #ifdef I_FLOAT
7988 #include <float.h>
7989 #endif
7990 #ifdef DBL_DIG
7991 printf("Contains DBL_DIG");
7992 #endif
7993 EOM
7994 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7995 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7996         echo "DBL_DIG found." >&4
7997         val="$define"
7998 else
7999         echo "DBL_DIG NOT found." >&4
8000         val="$undef"
8001 fi
8002 $rm -f dbl_dig.?
8003 set d_dbl_dig
8004 eval $setvar
8005
8006 : see if difftime exists
8007 set difftime d_difftime
8008 eval $inlibc
8009
8010 : see if this is a dirent system
8011 echo " "
8012 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8013         val="$define"
8014         echo "<dirent.h> found." >&4
8015 else
8016         val="$undef"
8017         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8018                 echo "<sys/dir.h> found." >&4
8019                 echo " "
8020         else
8021                 xinc=`./findhdr sys/ndir.h`
8022         fi
8023         echo "<dirent.h> NOT found." >&4
8024 fi
8025 set i_dirent
8026 eval $setvar
8027
8028 : Look for type of directory structure.
8029 echo " "
8030 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8031
8032 case "$direntrytype" in
8033 ''|' ')
8034         case "$i_dirent" in
8035         $define) guess1='struct dirent' ;;
8036         *) guess1='struct direct'  ;;
8037         esac
8038         ;;
8039 *)      guess1="$direntrytype"
8040         ;;
8041 esac
8042
8043 case "$guess1" in
8044 'struct dirent') guess2='struct direct' ;;
8045 *) guess2='struct dirent' ;;
8046 esac
8047                 
8048 if $contains "$guess1" try.c >/dev/null 2>&1; then
8049         direntrytype="$guess1"
8050         echo "Your directory entries are $direntrytype." >&4
8051 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8052         direntrytype="$guess2"
8053         echo "Your directory entries seem to be $direntrytype." >&4
8054 else
8055         echo "I don't recognize your system's directory entries." >&4
8056         rp="What type is used for directory entries on this system?"
8057         dflt="$guess1"
8058         . ./myread
8059         direntrytype="$ans"
8060 fi
8061 $rm -f try.c
8062
8063
8064 : see if the directory entry stores field length
8065 echo " "
8066 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8067 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8068         echo "Good, your directory entry keeps length information in d_namlen." >&4
8069         val="$define"
8070 else
8071         echo "Your directory entry does not know about the d_namlen field." >&4
8072         val="$undef"
8073 fi
8074 set d_dirnamlen
8075 eval $setvar
8076 $rm -f try.c
8077
8078 : see if dlerror exists
8079 xxx_runnm="$runnm"
8080 runnm=false
8081 set dlerror d_dlerror
8082 eval $inlibc
8083 runnm="$xxx_runnm"
8084
8085 : see if dlfcn is available
8086 set dlfcn.h i_dlfcn
8087 eval $inhdr
8088
8089 case "$usedl" in
8090 $define|y|true)
8091         $cat << EOM
8092
8093 On a few systems, the dynamically loaded modules that perl generates and uses
8094 will need a different extension than shared libs. The default will probably
8095 be appropriate.
8096
8097 EOM
8098         case "$dlext" in
8099         '')     dflt="$so" ;;
8100         *)      dflt="$dlext" ;;
8101         esac
8102         rp='What is the extension of dynamically loaded modules'
8103         . ./myread
8104         dlext="$ans"
8105         ;;
8106 *)
8107         dlext="none"
8108         ;;
8109 esac
8110
8111 : Check if dlsym need a leading underscore
8112 echo " "
8113 val="$undef"
8114
8115 case "$dlsrc" in
8116 dl_dlopen.xs)
8117         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8118         $cat >dyna.c <<'EOM'
8119 fred () { }
8120 EOM
8121
8122 $cat >fred.c<<EOM
8123
8124 #include <stdio.h>
8125 #$i_dlfcn I_DLFCN
8126 #ifdef I_DLFCN
8127 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8128 #else
8129 #include <sys/types.h>
8130 #include <nlist.h>
8131 #include <link.h>
8132 #endif
8133
8134 extern int fred() ;
8135
8136 int main()
8137 {
8138     void * handle ;
8139     void * symbol ;
8140 #ifndef RTLD_LAZY
8141     int mode = 1 ;
8142 #else
8143     int mode = RTLD_LAZY ;
8144 #endif
8145     handle = dlopen("./dyna.$dlext", mode) ;
8146     if (handle == NULL) {
8147         printf ("1\n") ;
8148         fflush (stdout) ;
8149         exit(0);
8150     }
8151     symbol = dlsym(handle, "fred") ;
8152     if (symbol == NULL) {
8153         /* try putting a leading underscore */
8154         symbol = dlsym(handle, "_fred") ;
8155         if (symbol == NULL) {
8156             printf ("2\n") ;
8157             fflush (stdout) ;
8158             exit(0);
8159         }
8160         printf ("3\n") ;
8161     }
8162     else
8163         printf ("4\n") ;
8164     fflush (stdout) ;
8165     exit(0);
8166 }
8167 EOM
8168         : Call the object file tmp-dyna.o in case dlext=o.
8169         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8170                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8171                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8172                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8173                 xxx=`./fred`
8174                 case $xxx in
8175                 1)      echo "Test program failed using dlopen." >&4
8176                         echo "Perhaps you should not use dynamic loading." >&4;;
8177                 2)      echo "Test program failed using dlsym." >&4
8178                         echo "Perhaps you should not use dynamic loading." >&4;;
8179                 3)      echo "dlsym needs a leading underscore" >&4
8180                         val="$define" ;;
8181                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8182                 esac
8183         else
8184                 echo "I can't compile and run the test program." >&4
8185                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8186         fi
8187         ;;
8188 esac
8189                 
8190 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8191
8192 set d_dlsymun
8193 eval $setvar
8194
8195 hasproto='varname=$1; func=$2; shift; shift;
8196 while $test $# -ge 2; do
8197         case "$1" in
8198         $define) echo "#include <$2>";;
8199         esac ;
8200     shift 2;
8201 done > try.c;
8202 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8203 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8204         echo "$func() prototype found.";
8205         val="$define";
8206 else
8207         echo "$func() prototype NOT found.";
8208         val="$undef";
8209 fi;
8210 set $varname;
8211 eval $setvar;
8212 $rm -f try.c tryout.c'
8213
8214 : see if prototype for drand48 is available
8215 echo " "
8216 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8217 eval $hasproto
8218
8219 : see if dup2 exists
8220 set dup2 d_dup2
8221 eval $inlibc
8222
8223 : see if eaccess exists
8224 set eaccess d_eaccess
8225 eval $inlibc
8226
8227 : see if endgrent exists
8228 set endgrent d_endgrent
8229 eval $inlibc
8230
8231 : see if endhostent exists
8232 set endhostent d_endhent
8233 eval $inlibc
8234
8235 : see if endnetent exists
8236 set endnetent d_endnent
8237 eval $inlibc
8238
8239 : see if endprotoent exists
8240 set endprotoent d_endpent
8241 eval $inlibc
8242
8243 : see if endpwent exists
8244 set endpwent d_endpwent
8245 eval $inlibc
8246
8247 : see if endservent exists
8248 set endservent d_endsent
8249 eval $inlibc
8250
8251 : see if endspent exists
8252 set endspent d_endspent
8253 eval $inlibc
8254
8255 : Locate the flags for 'open()'
8256 echo " "
8257 $cat >open3.c <<'EOCP'
8258 #include <sys/types.h>
8259 #ifdef I_FCNTL
8260 #include <fcntl.h>
8261 #endif
8262 #ifdef I_SYS_FILE
8263 #include <sys/file.h>
8264 #endif
8265 int main() {
8266         if(O_RDONLY);
8267 #ifdef O_TRUNC
8268         exit(0);
8269 #else
8270         exit(1);
8271 #endif
8272 }
8273 EOCP
8274 : check sys/file.h first to get FREAD on Sun
8275 if $test `./findhdr sys/file.h` && \
8276                 set open3 -DI_SYS_FILE && eval $compile; then
8277         h_sysfile=true;
8278         echo "<sys/file.h> defines the O_* constants..." >&4
8279         if ./open3; then
8280                 echo "and you have the 3 argument form of open()." >&4
8281                 val="$define"
8282         else
8283                 echo "but not the 3 argument form of open().  Oh, well." >&4
8284                 val="$undef"
8285         fi
8286 elif $test `./findhdr fcntl.h` && \
8287                 set open3 -DI_FCNTL && eval $compile; then
8288         h_fcntl=true;
8289         echo "<fcntl.h> defines the O_* constants..." >&4
8290         if ./open3; then
8291                 echo "and you have the 3 argument form of open()." >&4
8292                 val="$define"
8293         else
8294                 echo "but not the 3 argument form of open().  Oh, well." >&4
8295                 val="$undef"
8296         fi
8297 else
8298         val="$undef"
8299         echo "I can't find the O_* constant definitions!  You got problems." >&4
8300 fi
8301 set d_open3
8302 eval $setvar
8303 $rm -f open3*
8304
8305 : see which of string.h or strings.h is needed
8306 echo " "
8307 strings=`./findhdr string.h`
8308 if $test "$strings" && $test -r "$strings"; then
8309         echo "Using <string.h> instead of <strings.h>." >&4
8310         val="$define"
8311 else
8312         val="$undef"
8313         strings=`./findhdr strings.h`
8314         if $test "$strings" && $test -r "$strings"; then
8315                 echo "Using <strings.h> instead of <string.h>." >&4
8316         else
8317                 echo "No string header found -- You'll surely have problems." >&4
8318         fi
8319 fi
8320 set i_string
8321 eval $setvar
8322 case "$i_string" in
8323 "$undef") strings=`./findhdr strings.h`;;
8324 *)        strings=`./findhdr string.h`;;
8325 esac
8326
8327 : check for non-blocking I/O stuff
8328 case "$h_sysfile" in
8329 true) echo "#include <sys/file.h>" > head.c;;
8330 *)
8331         case "$h_fcntl" in
8332         true) echo "#include <fcntl.h>" > head.c;;
8333         *) echo "#include <sys/fcntl.h>" > head.c;;
8334         esac
8335         ;;
8336 esac
8337 echo " "
8338 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8339 case "$o_nonblock" in
8340 '')
8341         $cat head.c > try.c
8342         $cat >>try.c <<'EOCP'
8343 #include <stdio.h>
8344 int main() {
8345 #ifdef O_NONBLOCK
8346         printf("O_NONBLOCK\n");
8347         exit(0);
8348 #endif
8349 #ifdef O_NDELAY
8350         printf("O_NDELAY\n");
8351         exit(0);
8352 #endif
8353 #ifdef FNDELAY
8354         printf("FNDELAY\n");
8355         exit(0);
8356 #endif
8357         exit(0);
8358 }
8359 EOCP
8360         set try
8361         if eval $compile_ok; then
8362                 o_nonblock=`./try`
8363                 case "$o_nonblock" in
8364                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8365                 *) echo "Seems like we can use $o_nonblock.";;
8366                 esac
8367         else
8368                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8369         fi
8370         ;;
8371 *) echo "Using $hint value $o_nonblock.";;
8372 esac
8373 $rm -f try try.* .out core
8374
8375 echo " "
8376 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8377 case "$eagain" in
8378 '')
8379         $cat head.c > try.c
8380         $cat >>try.c <<EOCP
8381 #include <errno.h>
8382 #include <sys/types.h>
8383 #include <signal.h>
8384 #include <stdio.h> 
8385 #define MY_O_NONBLOCK $o_nonblock
8386 #ifndef errno  /* XXX need better Configure test */
8387 extern int errno;
8388 #endif
8389 #$i_unistd I_UNISTD
8390 #ifdef I_UNISTD
8391 #include <unistd.h>
8392 #endif
8393 #ifdef $i_string
8394 #include <string.h>
8395 #else
8396 #include <strings.h>
8397 #endif
8398 $signal_t blech(x) int x; { exit(3); }
8399 EOCP
8400         $cat >> try.c <<'EOCP'
8401 int main()
8402 {
8403         int pd[2];
8404         int pu[2];
8405         char buf[1];
8406         char string[100];
8407
8408         pipe(pd);       /* Down: child -> parent */
8409         pipe(pu);       /* Up: parent -> child */
8410         if (0 != fork()) {
8411                 int ret;
8412                 close(pd[1]);   /* Parent reads from pd[0] */
8413                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8414                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8415                         exit(1);
8416                 signal(SIGALRM, blech);
8417                 alarm(5);
8418                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8419                         exit(2);
8420                 sprintf(string, "%d\n", ret);
8421                 write(2, string, strlen(string));
8422                 alarm(0);
8423 #ifdef EAGAIN
8424                 if (errno == EAGAIN) {
8425                         printf("EAGAIN\n");
8426                         goto ok;
8427                 }
8428 #endif
8429 #ifdef EWOULDBLOCK
8430                 if (errno == EWOULDBLOCK)
8431                         printf("EWOULDBLOCK\n");
8432 #endif
8433         ok:
8434                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8435                 sleep(2);                               /* Give it time to close our pipe */
8436                 alarm(5);
8437                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8438                 alarm(0);
8439                 sprintf(string, "%d\n", ret);
8440                 write(3, string, strlen(string));
8441                 exit(0);
8442         }
8443
8444         close(pd[0]);                   /* We write to pd[1] */
8445         close(pu[1]);                   /* We read from pu[0] */
8446         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8447         close(pd[1]);                   /* Pipe pd is now fully closed! */
8448         exit(0);                                /* Bye bye, thank you for playing! */
8449 }
8450 EOCP
8451         set try
8452         if eval $compile_ok; then
8453                 echo "$startsh" >mtry
8454                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8455                 chmod +x mtry
8456                 ./mtry >/dev/null 2>&1
8457                 case $? in
8458                 0) eagain=`$cat try.out`;;
8459                 1) echo "Could not perform non-blocking setting!";;
8460                 2) echo "I did a successful read() for something that was not there!";;
8461                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8462                 *) echo "Something terribly wrong happened during testing.";;
8463                 esac
8464                 rd_nodata=`$cat try.ret`
8465                 echo "A read() system call with no data present returns $rd_nodata."
8466                 case "$rd_nodata" in
8467                 0|-1) ;;
8468                 *)
8469                         echo "(That's peculiar, fixing that to be -1.)"
8470                         rd_nodata=-1
8471                         ;;
8472                 esac
8473                 case "$eagain" in
8474                 '')
8475                         echo "Forcing errno EAGAIN on read() with no data available."
8476                         eagain=EAGAIN
8477                         ;;
8478                 *)
8479                         echo "Your read() sets errno to $eagain when no data is available."
8480                         ;;
8481                 esac
8482                 status=`$cat try.err`
8483                 case "$status" in
8484                 0) echo "And it correctly returns 0 to signal EOF.";;
8485                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8486                 *) echo "However, your read() returns '$status' on EOF??";;
8487                 esac
8488                 val="$define"
8489                 if test "$status" = "$rd_nodata"; then
8490                         echo "WARNING: you can't distinguish between EOF and no data!"
8491                         val="$undef"
8492                 fi
8493         else
8494                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8495                 eagain=EAGAIN
8496         fi
8497         set d_eofnblk
8498         eval $setvar
8499         ;;
8500 *)
8501         echo "Using $hint value $eagain."
8502         echo "Your read() returns $rd_nodata when no data is present."
8503         case "$d_eofnblk" in
8504         "$define") echo "And you can see EOF because read() returns 0.";;
8505         "$undef") echo "But you can't see EOF status from read() returned value.";;
8506         *)
8507                 echo "(Assuming you can't see EOF status from read anyway.)"
8508                 d_eofnblk=$undef
8509                 ;;
8510         esac
8511         ;;
8512 esac
8513 $rm -f try try.* .out core head.c mtry
8514
8515 : see if fchmod exists
8516 set fchmod d_fchmod
8517 eval $inlibc
8518
8519 : see if fchown exists
8520 set fchown d_fchown
8521 eval $inlibc
8522
8523 : see if this is an fcntl system
8524 set fcntl d_fcntl
8525 eval $inlibc
8526
8527 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8528 while $test $# -ge 2; do
8529         case "$1" in
8530         $define) echo "#include <$2>";;
8531         esac ;
8532     shift 2;
8533 done > try.c;
8534 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8535 set try;
8536 if eval $compile; then
8537         val="$define";
8538 else
8539         val="$undef";
8540 fi;
8541 set $varname;
8542 eval $setvar;
8543 $rm -f try.c try.o'
8544
8545 socketlib=''
8546 sockethdr=''
8547 : see whether socket exists
8548 echo " "
8549 $echo $n "Hmm... $c" >&4
8550 if set socket val -f d_socket; eval $csym; $val; then
8551         echo "Looks like you have Berkeley networking support." >&4
8552         d_socket="$define"
8553         if set setsockopt val -f; eval $csym; $val; then
8554                 d_oldsock="$undef"
8555         else
8556                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8557                 d_oldsock="$define"
8558         fi
8559 else
8560         if $contains socklib libc.list >/dev/null 2>&1; then
8561                 echo "Looks like you have Berkeley networking support." >&4
8562                 d_socket="$define"
8563                 : we will have to assume that it supports the 4.2 BSD interface
8564                 d_oldsock="$undef"
8565         else
8566                 echo "You don't have Berkeley networking in libc$_a..." >&4
8567                 if test "X$d_socket" = "X$define"; then
8568                    echo "...but you seem to believe that you have sockets." >&4
8569                 else
8570                         for net in net socket
8571                         do
8572                                 if test -f /usr/lib/lib$net$_a; then
8573                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8574                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8575                                         if $contains socket libc.list >/dev/null 2>&1; then
8576                                                 d_socket="$define"
8577                                                 socketlib="-l$net"
8578                                                 case "$net" in
8579                                                 net)
8580                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8581                                                         sockethdr="-I/usr/netinclude"
8582                                                         ;;
8583                                                 esac
8584                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8585                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8586                                                         d_oldsock="$undef"
8587                                                 else
8588                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8589                                                         d_oldsock="$define"
8590                                                 fi
8591                                                 break
8592                                         fi
8593                                 fi
8594                         done
8595                         if test "X$d_socket" != "X$define"; then
8596                            echo "or anywhere else I see." >&4
8597                            d_socket="$undef"
8598                            d_oldsock="$undef"
8599                         fi
8600                 fi
8601         fi
8602 fi
8603
8604 : see if socketpair exists
8605 set socketpair d_sockpair
8606 eval $inlibc
8607
8608
8609 echo " "
8610 echo "Checking the availability of certain socket constants..." >& 4
8611 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8612         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8613         $cat >try.c <<EOF
8614 #include <sys/types.h>
8615 #include <sys/socket.h>
8616 int main() {
8617     int i = $ENUM;
8618 }
8619 EOF
8620         val="$undef"
8621         set try; if eval $compile; then
8622                 val="$define"
8623         fi
8624         set d_${enum}; eval $setvar
8625         $rm -f try.c try
8626 done
8627
8628 : see if sys/select.h has to be included
8629 set sys/select.h i_sysselct
8630 eval $inhdr
8631
8632 : see if we should include time.h, sys/time.h, or both
8633 echo " "
8634 if test "X$timeincl" = X; then
8635         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8636         $echo $n "I'm now running the test program...$c"
8637         $cat >try.c <<'EOCP'
8638 #include <sys/types.h>
8639 #ifdef I_TIME
8640 #include <time.h>
8641 #endif
8642 #ifdef I_SYSTIME
8643 #ifdef SYSTIMEKERNEL
8644 #define KERNEL
8645 #endif
8646 #include <sys/time.h>
8647 #endif
8648 #ifdef I_SYSSELECT
8649 #include <sys/select.h>
8650 #endif
8651 int main()
8652 {
8653         struct tm foo;
8654 #ifdef S_TIMEVAL
8655         struct timeval bar;
8656 #endif
8657 #ifdef S_TIMEZONE
8658         struct timezone tzp;
8659 #endif
8660         if (foo.tm_sec == foo.tm_sec)
8661                 exit(0);
8662 #ifdef S_TIMEVAL
8663         if (bar.tv_sec == bar.tv_sec)
8664                 exit(0);
8665 #endif
8666         exit(1);
8667 }
8668 EOCP
8669         flags=''
8670         for s_timezone in '-DS_TIMEZONE' ''; do
8671         sysselect=''
8672         for s_timeval in '-DS_TIMEVAL' ''; do
8673         for i_systimek in '' '-DSYSTIMEKERNEL'; do
8674         for i_time in '' '-DI_TIME'; do
8675         for i_systime in '-DI_SYSTIME' ''; do
8676                 case "$flags" in
8677                 '') $echo $n ".$c"
8678                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8679                         if eval $compile; then
8680                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8681                                 shift
8682                                 flags="$*"
8683                                 echo " "
8684                                 $echo $n "Succeeded with $flags$c"
8685                         fi
8686                         ;;
8687                 esac
8688         done
8689         done
8690         done
8691         done
8692         done
8693         timeincl=''
8694         echo " "
8695         case "$flags" in
8696         *SYSTIMEKERNEL*) i_systimek="$define"
8697                 timeincl=`./findhdr sys/time.h`
8698                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8699         *) i_systimek="$undef";;
8700         esac
8701         case "$flags" in
8702         *I_TIME*) i_time="$define"
8703                 timeincl=`./findhdr time.h`" $timeincl"
8704                 echo "We'll include <time.h>." >&4;;
8705         *) i_time="$undef";;
8706         esac
8707         case "$flags" in
8708         *I_SYSTIME*) i_systime="$define"
8709                 timeincl=`./findhdr sys/time.h`" $timeincl"
8710                 echo "We'll include <sys/time.h>." >&4;;
8711         *) i_systime="$undef";;
8712         esac
8713         $rm -f try.c try
8714 fi
8715
8716 : check for fd_set items
8717 $cat <<EOM
8718
8719 Checking to see how well your C compiler handles fd_set and friends ...
8720 EOM
8721 $cat >fd_set.c <<EOCP
8722 #$i_systime I_SYS_TIME
8723 #$i_sysselct I_SYS_SELECT
8724 #$d_socket HAS_SOCKET
8725 #include <sys/types.h>
8726 #ifdef HAS_SOCKET
8727 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8728 #endif
8729 #ifdef I_SYS_TIME
8730 #include <sys/time.h>
8731 #endif
8732 #ifdef I_SYS_SELECT
8733 #include <sys/select.h>
8734 #endif
8735 int main() {
8736         fd_set fds;
8737
8738 #ifdef TRYBITS
8739         if(fds.fds_bits);
8740 #endif
8741
8742 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8743         exit(0);
8744 #else
8745         exit(1);
8746 #endif
8747 }
8748 EOCP
8749 set fd_set -DTRYBITS
8750 if eval $compile; then
8751         d_fds_bits="$define"
8752         d_fd_set="$define"
8753         echo "Well, your system knows about the normal fd_set typedef..." >&4
8754         if ./fd_set; then
8755                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8756                 d_fd_macros="$define"
8757         else
8758                 $cat >&4 <<'EOM'
8759 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
8760 EOM
8761                 d_fd_macros="$undef"
8762         fi
8763 else
8764         $cat <<'EOM'
8765 Hmm, your compiler has some difficulty with fd_set.  Checking further...
8766 EOM
8767         set fd_set
8768         if eval $compile; then
8769                 d_fds_bits="$undef"
8770                 d_fd_set="$define"
8771                 echo "Well, your system has some sort of fd_set available..." >&4
8772                 if ./fd_set; then
8773                         echo "and you have the normal fd_set macros." >&4
8774                         d_fd_macros="$define"
8775                 else
8776                         $cat <<'EOM'
8777 but not the normal fd_set macros!  Gross!  More work for me...
8778 EOM
8779                         d_fd_macros="$undef"
8780                 fi
8781         else
8782         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
8783                 d_fd_set="$undef"
8784                 d_fds_bits="$undef"
8785                 d_fd_macros="$undef"
8786         fi
8787 fi
8788 $rm -f fd_set*
8789
8790 : see if fgetpos exists
8791 set fgetpos d_fgetpos
8792 eval $inlibc
8793
8794 : see if flock exists
8795 set flock d_flock
8796 eval $inlibc
8797
8798 : see if fork exists
8799 set fork d_fork
8800 eval $inlibc
8801
8802 : see if pathconf exists
8803 set pathconf d_pathconf
8804 eval $inlibc
8805
8806 : see if fpathconf exists
8807 set fpathconf d_fpathconf
8808 eval $inlibc
8809
8810
8811 : check for off64_t
8812 echo " "
8813 echo "Checking to see if your system supports off64_t..." >&4
8814 $cat >try.c <<EOCP
8815 #include <sys/types.h>
8816 #include <unistd.h>
8817 int main() { off64_t x = 7; }'
8818 EOCP
8819 set try
8820 if eval $compile; then
8821         val="$define"
8822         echo "Yes, it does."
8823 else
8824         val="$undef"
8825         echo "No, it doesn't."
8826         case "$lseeksize" in
8827         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
8828         esac
8829 fi
8830 $rm -f try.* try
8831 set d_off64_t
8832 eval $setvar
8833
8834 : check for fpos64_t
8835 echo " "
8836 echo "Checking to see if your system supports fpos64_t..." >&4
8837 $cat >try.c <<EOCP
8838 #include <sys/stdio.h>
8839 int main() { fpos64_t x x = 7; }'
8840 EOCP
8841 set try
8842 if eval $compile; then
8843         val="$define"
8844         echo "Yes, it does."
8845 else
8846         val="$undef"
8847         echo "No, it doesn't."
8848         case "$fpossize" in
8849         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
8850         esac
8851 fi
8852 $rm -f try.* try
8853 set d_fpos64_t
8854 eval $setvar
8855
8856 hasstruct='varname=$1; struct=$2; shift; shift;
8857 while $test $# -ge 2; do
8858         case "$1" in
8859         $define) echo "#include <$2>";;
8860         esac ;
8861     shift 2;
8862 done > try.c;
8863 echo "int main () { struct $struct foo; }" >> try.c;
8864 set try;
8865 if eval $compile; then
8866         val="$define";
8867 else
8868         val="$undef";
8869 fi;
8870 set $varname;
8871 eval $setvar;
8872 $rm -f try.c try.o'
8873
8874 : see if this is a sys/param system
8875 set sys/param.h i_sysparam
8876 eval $inhdr
8877
8878 : see if this is a sys/mount.h system
8879 set sys/mount.h i_sysmount
8880 eval $inhdr
8881
8882 : see if sys/types.h has to be included
8883 set sys/types.h i_systypes
8884 eval $inhdr
8885
8886
8887 echo " "
8888 echo "Checking to see if your system supports struct fs_data..." >&4
8889 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
8890 eval $hasstruct
8891 case "$d_fs_data_s" in
8892 "$define")      echo "Yes, it does."   ;;
8893 *)              echo "No, it doesn't." ;;
8894 esac
8895
8896 : see if fseeko exists
8897 set fseeko d_fseeko
8898 eval $inlibc
8899 case "$longsize" in
8900 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
8901 esac
8902
8903 : see if fsetpos exists
8904 set fsetpos d_fsetpos
8905 eval $inlibc
8906
8907
8908 : see if fstatfs exists
8909 set fstatfs d_fstatfs
8910 eval $inlibc
8911
8912
8913 : see if statvfs exists
8914 set statvfs d_statvfs
8915 eval $inlibc
8916
8917 : see if fstatvfs exists
8918 set fstatvfs d_fstatvfs
8919 eval $inlibc
8920
8921
8922 : see if ftello exists
8923 set ftello d_ftello
8924 eval $inlibc
8925 case "$longsize" in
8926 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
8927 esac
8928
8929 : see if getcwd exists
8930 set getcwd d_getcwd
8931 eval $inlibc
8932
8933 : see if getgrent exists
8934 set getgrent d_getgrent
8935 eval $inlibc
8936
8937 : see if gethostbyaddr exists
8938 set gethostbyaddr d_gethbyaddr
8939 eval $inlibc
8940
8941 : see if gethostbyname exists
8942 set gethostbyname d_gethbyname
8943 eval $inlibc
8944
8945 : see if gethostent exists
8946 set gethostent d_gethent
8947 eval $inlibc
8948
8949 : see how we will look up host name
8950 echo " "
8951 call=''
8952 if set gethostname val -f d_gethname; eval $csym; $val; then
8953         echo 'gethostname() found.' >&4
8954         d_gethname="$define"
8955         call=gethostname
8956 fi
8957 if set uname val -f d_uname; eval $csym; $val; then
8958         if ./xenix; then
8959                 $cat <<'EOM'
8960 uname() was found, but you're running xenix, and older versions of xenix
8961 have a broken uname(). If you don't really know whether your xenix is old
8962 enough to have a broken system call, use the default answer.
8963
8964 EOM
8965                 dflt=y
8966                 case "$d_uname" in
8967                 "$define") dflt=n;;
8968                 esac
8969                 rp='Is your uname() broken?'
8970                 . ./myread
8971                 case "$ans" in
8972                 n*) d_uname="$define"; call=uname;;
8973                 esac
8974         else
8975                 echo 'uname() found.' >&4
8976                 d_uname="$define"
8977                 case "$call" in
8978                 '') call=uname ;;
8979                 esac
8980         fi
8981 fi
8982 case "$d_gethname" in
8983 '') d_gethname="$undef";;
8984 esac
8985 case "$d_uname" in
8986 '') d_uname="$undef";;
8987 esac
8988 case "$d_uname$d_gethname" in
8989 *define*)
8990         dflt=n
8991         cat <<EOM
8992  
8993 Every now and then someone has a $call() that lies about the hostname
8994 but can't be fixed for political or economic reasons.  If you wish, I can
8995 pretend $call() isn't there and maybe compute hostname at run-time
8996 thanks to the '$phostname' command.
8997
8998 EOM
8999         rp="Shall I ignore $call() from now on?"
9000         . ./myread
9001         case "$ans" in
9002         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9003         esac;;
9004 esac
9005 case "$phostname" in
9006 '') aphostname='';;
9007 *) case "$aphostname" in
9008         /*) ;;
9009         *) set X $phostname
9010                 shift
9011                 file=$1
9012                 shift
9013                 file=`./loc $file $file $pth`
9014                 aphostname=`echo $file $*`
9015                 ;;
9016         esac
9017         ;;
9018 esac
9019 case "$d_uname$d_gethname" in
9020 *define*) ;;
9021 *)
9022         case "$phostname" in
9023         '')
9024                 echo "There will be no way for $package to get your hostname." >&4;;
9025         *)
9026         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9027                 ;;
9028         esac;;
9029 esac
9030 case "$d_phostname" in
9031 '') d_phostname="$undef";;
9032 esac
9033
9034 : see if this is a netdb.h system
9035 set netdb.h i_netdb
9036 eval $inhdr
9037
9038 : see if prototypes for various gethostxxx netdb.h functions are available
9039 echo " "
9040 set d_gethostprotos gethostent $i_netdb netdb.h
9041 eval $hasproto
9042
9043 : see if getlogin exists
9044 set getlogin d_getlogin
9045 eval $inlibc
9046
9047 : see if getmnt exists
9048 set getmnt d_getmnt
9049 eval $inlibc
9050
9051 : see if getmntent exists
9052 set getmntent d_getmntent
9053 eval $inlibc
9054
9055 : see if getnetbyaddr exists
9056 set getnetbyaddr d_getnbyaddr
9057 eval $inlibc
9058
9059 : see if getnetbyname exists
9060 set getnetbyname d_getnbyname
9061 eval $inlibc
9062
9063 : see if getnetent exists
9064 set getnetent d_getnent
9065 eval $inlibc
9066
9067 : see if prototypes for various getnetxxx netdb.h functions are available
9068 echo " "
9069 set d_getnetprotos getnetent $i_netdb netdb.h
9070 eval $hasproto
9071
9072
9073 : see if getprotobyname exists
9074 set getprotobyname d_getpbyname
9075 eval $inlibc
9076
9077 : see if getprotobynumber exists
9078 set getprotobynumber d_getpbynumber
9079 eval $inlibc
9080
9081 : see if getprotoent exists
9082 set getprotoent d_getpent
9083 eval $inlibc
9084
9085 : see if getpgid exists
9086 set getpgid d_getpgid
9087 eval $inlibc
9088
9089 : see if getpgrp2 exists
9090 set getpgrp2 d_getpgrp2
9091 eval $inlibc
9092
9093 : see if getppid exists
9094 set getppid d_getppid
9095 eval $inlibc
9096
9097 : see if getpriority exists
9098 set getpriority d_getprior
9099 eval $inlibc
9100
9101 : see if prototypes for various getprotoxxx netdb.h functions are available
9102 echo " "
9103 set d_getprotoprotos getprotoent $i_netdb netdb.h
9104 eval $hasproto
9105
9106 : see if getpwent exists
9107 set getpwent d_getpwent
9108 eval $inlibc
9109
9110
9111 : see if getservbyname exists
9112 set getservbyname d_getsbyname
9113 eval $inlibc
9114
9115 : see if getservbyport exists
9116 set getservbyport d_getsbyport
9117 eval $inlibc
9118
9119 : see if getservent exists
9120 set getservent d_getsent
9121 eval $inlibc
9122
9123 : see if prototypes for various getservxxx netdb.h functions are available
9124 echo " "
9125 set d_getservprotos getservent $i_netdb netdb.h
9126 eval $hasproto
9127
9128 : see if getspent exists
9129 set getspent d_getspent
9130 eval $inlibc
9131
9132 : see if getspnam exists
9133 set getspnam d_getspnam
9134 eval $inlibc
9135
9136 : see if gettimeofday or ftime exists
9137 set gettimeofday d_gettimeod
9138 eval $inlibc
9139 case "$d_gettimeod" in
9140 "$undef")
9141         set ftime d_ftime 
9142         eval $inlibc
9143         ;;
9144 *)
9145         val="$undef"; set d_ftime; eval $setvar
9146         ;;
9147 esac
9148 case "$d_gettimeod$d_ftime" in
9149 "$undef$undef")
9150         echo " "
9151         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9152         ;;
9153 esac
9154
9155 : see if this is an grp system
9156 set grp.h i_grp
9157 eval $inhdr
9158
9159 case "$i_grp" in
9160 $define)
9161         xxx=`./findhdr grp.h`
9162         $cppstdin $cppflags $cppminus < $xxx >$$.h
9163
9164         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9165                 val="$define"
9166         else
9167                 val="$undef"
9168         fi
9169         set d_grpasswd
9170         eval $setvar
9171
9172         $rm -f $$.h
9173         ;;
9174 *)
9175         val="$undef";
9176         set d_grpasswd; eval $setvar
9177         ;;
9178 esac
9179
9180 : see if hasmntopt exists
9181 set hasmntopt d_hasmntopt
9182 eval $inlibc
9183
9184 : see if this is a netinet/in.h or sys/in.h system
9185 set netinet/in.h i_niin sys/in.h i_sysin
9186 eval $inhdr
9187
9188 : see if arpa/inet.h has to be included
9189 set arpa/inet.h i_arpainet
9190 eval $inhdr
9191
9192 : see if htonl --and friends-- exists
9193 val=''
9194 set htonl val
9195 eval $inlibc
9196
9197 : Maybe they are macros.
9198 case "$val" in
9199 $undef)
9200         $cat >htonl.c <<EOM
9201 #include <stdio.h>
9202 #include <sys/types.h>
9203 #$i_niin I_NETINET_IN
9204 #$i_sysin I_SYS_IN
9205 #$i_arpainet I_ARPA_INET
9206 #ifdef I_NETINET_IN
9207 #include <netinet/in.h>
9208 #endif
9209 #ifdef I_SYS_IN
9210 #include <sys/in.h>
9211 #endif
9212 #ifdef I_ARPA_INET
9213 #include <arpa/inet.h>
9214 #endif
9215 #ifdef htonl
9216 printf("Defined as a macro.");
9217 #endif
9218 EOM
9219         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9220         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9221                 val="$define"
9222                 echo "But it seems to be defined as a macro." >&4
9223         fi
9224         $rm -f htonl.?
9225         ;;
9226 esac
9227 set d_htonl
9228 eval $setvar
9229
9230 : see if iconv exists
9231 set iconv d_iconv
9232 eval $inlibc
9233
9234 : index or strchr
9235 echo " "
9236 if set index val -f; eval $csym; $val; then
9237         if set strchr val -f d_strchr; eval $csym; $val; then
9238                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9239                         val="$define"
9240                         vali="$undef"
9241                         echo "strchr() found." >&4
9242                 else
9243                         val="$undef"
9244                         vali="$define"
9245                         echo "index() found." >&4
9246                 fi
9247         else
9248                 val="$undef"
9249                 vali="$define"
9250                 echo "index() found." >&4
9251         fi
9252 else
9253         if set strchr val -f d_strchr; eval $csym; $val; then
9254                 val="$define"
9255                 vali="$undef"
9256                 echo "strchr() found." >&4
9257         else
9258                 echo "No index() or strchr() found!" >&4
9259                 val="$undef"
9260                 vali="$undef"
9261         fi
9262 fi
9263 set d_strchr; eval $setvar
9264 val="$vali"
9265 set d_index; eval $setvar
9266
9267 : check whether inet_aton exists
9268 set inet_aton d_inetaton
9269 eval $inlibc
9270
9271 : see if inttypes.h is available
9272 : we want a real compile instead of Inhdr because some systems
9273 : have an inttypes.h which includes non-existent headers
9274 echo " "
9275 $cat >try.c <<EOCP
9276 #include <inttypes.h>
9277 int main() {
9278         static int32_t foo32 = 0x12345678;
9279 }
9280 EOCP
9281 set try
9282 if eval $compile; then
9283         echo "<inttypes.h> found." >&4
9284         val="$define"
9285 else
9286         echo "<inttypes.h> NOT found." >&4
9287         val="$undef"
9288 fi
9289 $rm -f try.c try
9290 set i_inttypes
9291 eval $setvar
9292
9293 : check for int64_t
9294 echo " "
9295 $echo $n "Checking to see if your system supports int64_t...$c" >&4
9296 $cat >try.c <<EOCP
9297 #include <sys/types.h>
9298 #$i_inttypes I_INTTYPES
9299 #ifdef I_INTTYPES
9300 #include <inttypes.h>
9301 #endif
9302 int main() { int64_t x = 7; }
9303 EOCP
9304 set try
9305 if eval $compile; then
9306         val="$define"
9307         echo " Yes, it does." >&4
9308 else
9309         val="$undef"
9310         echo " No, it doesn't." >&4
9311 fi
9312 $rm -f try try.*
9313 set d_int64t
9314 eval $setvar
9315
9316 : Look for isascii
9317 echo " "
9318 $cat >isascii.c <<'EOCP'
9319 #include <stdio.h>
9320 #include <ctype.h>
9321 int main() {
9322         int c = 'A';
9323         if (isascii(c))
9324                 exit(0);
9325         else
9326                 exit(1);
9327 }
9328 EOCP
9329 set isascii
9330 if eval $compile; then
9331         echo "isascii() found." >&4
9332         val="$define"
9333 else
9334         echo "isascii() NOT found." >&4
9335         val="$undef"
9336 fi
9337 set d_isascii
9338 eval $setvar
9339 $rm -f isascii*
9340
9341 : see if killpg exists
9342 set killpg d_killpg
9343 eval $inlibc
9344
9345 : see if lchown exists
9346 echo " "
9347 $cat > try.c <<'EOCP'
9348 /* System header to define __stub macros and hopefully few prototypes,
9349     which can conflict with char lchown(); below.  */
9350 #include <assert.h>
9351 /* Override any gcc2 internal prototype to avoid an error.  */
9352 /* We use char because int might match the return type of a gcc2
9353    builtin and then its argument prototype would still apply.  */
9354 char lchown();
9355 int main() {
9356     /*  The GNU C library defines this for functions which it implements
9357         to always fail with ENOSYS.  Some functions are actually named
9358         something starting with __ and the normal name is an alias.  */
9359 #if defined (__stub_lchown) || defined (__stub___lchown)
9360 choke me
9361 #else
9362 lchown();
9363 #endif
9364 ; return 0; }
9365 EOCP
9366 set try
9367 if eval $compile; then
9368     $echo "lchown() found." >&4
9369     val="$define"
9370 else
9371     $echo "lchown() NOT found." >&4
9372     val="$undef"
9373 fi
9374 set d_lchown
9375 eval $setvar
9376
9377 : See if number of significant digits in a double precision number is known
9378 echo " "
9379 $cat >ldbl_dig.c <<EOM
9380 #$i_limits I_LIMITS
9381 #$i_float I_FLOAT
9382 #ifdef I_LIMITS
9383 #include <limits.h>
9384 #endif
9385 #ifdef I_FLOAT
9386 #include <float.h>
9387 #endif
9388 #ifdef LDBL_DIG
9389 printf("Contains LDBL_DIG");
9390 #endif
9391 EOM
9392 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9393 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9394         echo "LDBL_DIG found." >&4
9395         val="$define"
9396 else
9397         echo "LDBL_DIG NOT found." >&4
9398         val="$undef"
9399 fi
9400 $rm -f ldbl_dig.?
9401 set d_ldbl_dig
9402 eval $setvar
9403
9404 : see if link exists
9405 set link d_link
9406 eval $inlibc
9407
9408 : see if localeconv exists
9409 set localeconv d_locconv
9410 eval $inlibc
9411
9412 : see if lockf exists
9413 set lockf d_lockf
9414 eval $inlibc
9415
9416 : check for long long
9417 echo " "
9418 $echo $n "Checking to see if your system supports long long..." $c >&4
9419 echo 'int main() { long long x = 7; return 0; }' > try.c
9420 set try
9421 if eval $compile; then
9422         val="$define"
9423         echo " Yes, it does." >&4
9424 else
9425         val="$undef"
9426         echo " No, it doesn't." >&4
9427 fi
9428 $rm try.*
9429 set d_longlong
9430 eval $setvar
9431
9432 : check for length of long long
9433 case "${d_longlong}${longlongsize}" in
9434 $define)
9435         echo " "
9436         $echo $n "Checking to see how big your long longs are..." $c >&4
9437         $cat >try.c <<'EOCP'
9438 #include <stdio.h>
9439 int main()
9440 {
9441     printf("%d\n", (int)sizeof(long long));
9442     return(0);
9443 }
9444 EOCP
9445         set try
9446         if eval $compile_ok; then
9447                 longlongsize=`./try$exe_ext`
9448                 $echo " $longlongsize bytes." >&4
9449         else
9450                 dflt='8'
9451                 echo " "
9452                 echo "(I can't seem to compile the test program.  Guessing...)"
9453                 rp="What is the size of a long long (in bytes)?"
9454                 . ./myread
9455                 longlongsize="$ans"
9456         fi
9457         if $test "X$longsize" = "X$longlongsize"; then
9458                 echo "(That isn't any different from an ordinary long.)"
9459         fi      
9460         ;;
9461 esac
9462 $rm -f try.* try
9463
9464 : see if lstat exists
9465 set lstat d_lstat
9466 eval $inlibc
9467
9468 : see if mblen exists
9469 set mblen d_mblen
9470 eval $inlibc
9471
9472 : see if mbstowcs exists
9473 set mbstowcs d_mbstowcs
9474 eval $inlibc
9475
9476 : see if mbtowc exists
9477 set mbtowc d_mbtowc
9478 eval $inlibc
9479
9480 : see if memchr exists
9481 set memchr d_memchr
9482 eval $inlibc
9483
9484 : see if memcmp exists
9485 set memcmp d_memcmp
9486 eval $inlibc
9487
9488 : see if memcpy exists
9489 set memcpy d_memcpy
9490 eval $inlibc
9491
9492 : see if memmove exists
9493 set memmove d_memmove
9494 eval $inlibc
9495
9496 : see if memset exists
9497 set memset d_memset
9498 eval $inlibc
9499
9500 : see if mkdir exists
9501 set mkdir d_mkdir
9502 eval $inlibc
9503
9504 : see if mkdtemp exists
9505 set mkdtemp d_mkdtemp
9506 eval $inlibc
9507
9508 : see if mkfifo exists
9509 set mkfifo d_mkfifo
9510 eval $inlibc
9511
9512 : see if mkstemp exists
9513 set mkstemp d_mkstemp
9514 eval $inlibc
9515
9516 : see if mkstemps exists
9517 set mkstemps d_mkstemps
9518 eval $inlibc
9519
9520 : see if mktime exists
9521 set mktime d_mktime
9522 eval $inlibc
9523
9524 : see if this is a sys/mman.h system
9525 set sys/mman.h i_sysmman
9526 eval $inhdr
9527
9528 : see if mmap exists
9529 set mmap d_mmap
9530 eval $inlibc
9531 : see what shmat returns
9532 : default to something harmless
9533 mmaptype='void *'
9534 case "$i_sysmman$d_mmap" in
9535 "$define$define")
9536         $cat >mmap.c <<'END'
9537 #include <sys/mman.h>
9538 void *mmap();
9539 END
9540         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9541                 mmaptype='void *'
9542         else
9543                 mmaptype='caddr_t'
9544         fi
9545         echo "and it returns ($mmaptype)." >&4
9546         ;;
9547 esac
9548
9549
9550
9551 : see if mprotect exists
9552 set mprotect d_mprotect
9553 eval $inlibc
9554
9555 : see if msgctl exists
9556 set msgctl d_msgctl
9557 eval $inlibc
9558
9559 : see if msgget exists
9560 set msgget d_msgget
9561 eval $inlibc
9562
9563 : see if msgsnd exists
9564 set msgsnd d_msgsnd
9565 eval $inlibc
9566
9567 : see if msgrcv exists
9568 set msgrcv d_msgrcv
9569 eval $inlibc
9570
9571 : see how much of the 'msg*(2)' library is present.
9572 h_msg=true
9573 echo " "
9574 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9575 *"$undef"*) h_msg=false;;
9576 esac
9577 case "$osname" in
9578 freebsd)
9579     case "`ipcs 2>&1`" in
9580     "SVID messages"*"not configured"*)
9581         echo "Your $osname does not have the msg*(2) configured." >&4
9582         h_msg=false
9583         val="$undef"
9584         set msgctl d_msgctl
9585         eval $setvar
9586         set msgget d_msgget
9587         eval $setvar
9588         set msgsnd d_msgsnd
9589         eval $setvar
9590         set msgrcv d_msgrcv
9591         eval $setvar
9592         ;;
9593     esac
9594     ;;
9595 esac
9596 : we could also check for sys/ipc.h ...
9597 if $h_msg && $test `./findhdr sys/msg.h`; then
9598         echo "You have the full msg*(2) library." >&4
9599         val="$define"
9600 else
9601         echo "You don't have the full msg*(2) library." >&4
9602         val="$undef"
9603 fi
9604 set d_msg
9605 eval $setvar
9606
9607 : see if msync exists
9608 set msync d_msync
9609 eval $inlibc
9610
9611 : see if munmap exists
9612 set munmap d_munmap
9613 eval $inlibc
9614
9615 : see if nice exists
9616 set nice d_nice
9617 eval $inlibc
9618
9619
9620 echo " "
9621 echo "Checking which 64-bit integer type we could use..." >&4
9622
9623 case "$intsize" in
9624 8) val=int
9625    set quadtype
9626    eval $setvar
9627    val='"unsigned int"'
9628    set uquadtype
9629    eval $setvar
9630    quadkind=1
9631    ;;
9632 *) case "$longsize" in
9633    8) val=long
9634       set quadtype
9635       eval $setvar
9636       val='"unsigned long"'
9637       set uquadtype
9638       eval $setvar
9639       quadkind=2
9640       ;;
9641    *) case "$d_longlong:$longlongsize" in
9642       define:8)
9643         val='"long long"'
9644         set quadtype
9645         eval $setvar
9646         val='"unsigned long long"'
9647         set uquadtype
9648         eval $setvar
9649         quadkind=3
9650         ;;
9651       *) case "$d_int64t" in
9652          define)
9653            val=int64_t
9654            set quadtype
9655            eval $setvar
9656            val=uint64_t
9657            set uquadtype
9658            eval $setvar
9659            quadkind=4
9660            ;;
9661          esac
9662          ;;
9663       esac
9664       ;;
9665    esac
9666    ;;
9667 esac
9668
9669 case "$quadtype" in
9670 '')     echo "Alas, no 64-bit integer types in sight." >&4
9671         d_quad="$undef"
9672         ;;
9673 *)      if test X"$use64bits" = Xdefine -o X"$longsize" = X8; then
9674             verb="will"
9675         else
9676             verb="could"
9677         fi
9678         echo "We $verb use '$quadtype' for 64-bit integers." >&4
9679         d_quad="$define"
9680         ;;
9681 esac
9682
9683 : check for length of character
9684 echo " "
9685 case "$charsize" in
9686 '')
9687         echo "Checking to see how big your characters are (hey, you never know)..." >&4
9688         $cat >try.c <<'EOCP'
9689 #include <stdio.h>
9690 int main()
9691 {
9692     printf("%d\n", (int)sizeof(char));
9693     exit(0);
9694 }
9695 EOCP
9696         set try
9697         if eval $compile_ok; then
9698                 dflt=`./try`
9699         else
9700                 dflt='1'
9701                 echo "(I can't seem to compile the test program.  Guessing...)"
9702         fi
9703         ;;
9704 *)
9705         dflt="$charsize"
9706         ;;
9707 esac
9708 rp="What is the size of a character (in bytes)?"
9709 . ./myread
9710 charsize="$ans"
9711 $rm -f try.c try
9712
9713
9714 echo " "
9715 $echo "Choosing the C types to be used for Perl's internal types..." >&4
9716
9717 case "$use64bits:$d_quad:$quadtype" in
9718 define:define:?*)
9719         ivtype="$quadtype"
9720         uvtype="$uquadtype"
9721         ivsize=8
9722         uvsize=8
9723         ;;
9724 *)      ivtype="long"
9725         uvtype="unsigned long"
9726         ivsize=$longsize
9727         uvsize=$longsize
9728         ;;
9729 esac
9730
9731 case "$uselongdouble:$d_longdbl" in
9732 define:define)
9733         nvtype="long double"
9734         nvsize=$longdblsize
9735         ;;
9736 *)      nvtype=double
9737         nvsize=$doublesize
9738         ;;
9739 esac
9740
9741 $echo "(IV will be "$ivtype", $ivsize bytes)"
9742 $echo "(UV will be "$uvtype", $uvsize bytes)"
9743 $echo "(NV will be "$nvtype", $nvsize bytes)"
9744
9745 $cat >try.c <<EOCP
9746 #$i_inttypes I_INTTYPES
9747 #ifdef I_INTTYPES
9748 #include <inttypes.h>
9749 #endif
9750 #include <stdio.h>
9751 int main() {
9752 #ifdef INT8
9753    int8_t i =  INT8_MAX;
9754   uint8_t u = UINT8_MAX;
9755   printf("int8_t\n");
9756 #endif
9757 #ifdef INT16
9758    int16_t i =  INT16_MAX;
9759   uint16_t i = UINT16_MAX;
9760   printf("int16_t\n");
9761 #endif
9762 #ifdef INT32
9763    int32_t i =  INT32_MAX;
9764   uint32_t u = UINT32_MAX;
9765   printf("int32_t\n");
9766 #endif
9767 }
9768 EOCP
9769
9770 case "$i8type" in
9771 '')     case "$charsize" in
9772         1)      i8type=char
9773                 u8type="unsigned char"
9774                 i8size=$charsize
9775                 u8size=$charsize
9776                 ;;
9777         esac
9778         ;;
9779 esac
9780 case "$i8type" in
9781 '')     set try -DINT8
9782         if eval $compile; then
9783                 case "`./try$exe_ext`" in
9784                 int8_t) i8type=int8_t
9785                         u8type=uint8_t
9786                         i8size=1
9787                         u8size=1
9788                         ;;
9789                 esac
9790         fi
9791         ;;
9792 esac
9793 case "$i8type" in
9794 '')     if $test $charsize -ge 1; then
9795                 i8type=char
9796                 u8type="unsigned char"
9797                 i8size=$charsize
9798                 u8size=$charsize
9799         fi
9800         ;;
9801 esac
9802
9803 case "$i16type" in
9804 '')     case "$shortsize" in
9805         2)      i16type=short
9806                 u16type="unsigned short"
9807                 i16size=$shortsize
9808                 u16size=$shortsize
9809                 ;;
9810         esac
9811         ;;
9812 esac
9813 case "$i16type" in
9814 '')     set try -DINT16
9815         if eval $compile; then
9816                 case "`./try$exe_ext`" in
9817                 int16_t)
9818                         i16type=int16_t
9819                         u16type=uint16_t
9820                         i16size=2
9821                         u16size=2
9822                         ;;
9823                 esac
9824         fi
9825         ;;
9826 esac
9827 case "$i16type" in
9828 '')     if $test $shortsize -ge 2; then
9829                 i16type=short
9830                 u16type="unsigned short"
9831                 i16size=$shortsize
9832                 u16size=$shortsize
9833         fi
9834         ;;
9835 esac
9836
9837 case "$i32type" in
9838 '')     case "$longsize" in
9839         4)      i32type=long
9840                 u32type="unsigned long"
9841                 i32size=$longsize
9842                 u32size=$longsize
9843                 ;;
9844         *)      case "$intsize" in
9845                 4)      i32type=int
9846                         u32type="unsigned int"
9847                         i32size=$intsize
9848                         u32size=$intsize
9849                         ;;
9850                 esac
9851                 ;;
9852         esac
9853         ;;
9854 esac
9855 case "$i32type" in
9856 '')     set try -DINT32
9857         if eval $compile; then
9858                 case "`./try$exe_ext`" in
9859                 int32_t)
9860                         i32type=int32_t
9861                         u32type=uint32_t
9862                         i32size=4
9863                         u32size=4
9864                         ;;
9865                 esac
9866         fi
9867         ;;
9868 esac
9869 case "$i32type" in
9870 '')     if $test $intsize -ge 4; then
9871                 i32type=int
9872                 u32type="unsigned int"
9873                 i32size=$intsize
9874                 u32size=$intsize
9875         fi
9876         ;;
9877 esac
9878
9879 case "$i64type" in
9880 '')     case "$d_quad:$quadtype" in
9881         define:?*)
9882                 i64type="$quadtype"
9883                 u64type="$uquadtype"
9884                 i64size=8
9885                 u64size=8
9886                 ;;
9887         esac
9888         ;;
9889 esac
9890
9891 $echo "Checking whether your NVs can preserve your UVs..." >&4
9892 $cat <<EOP >try.c
9893 #include <stdio.h>
9894 int main() {
9895     $uvtype k = ($uvtype)~0, l;
9896     $nvtype d;
9897     l = k;
9898     d = ($nvtype)l;
9899     l = ($uvtype)d;
9900     if (l == k)
9901        printf("preserve\n");
9902     exit(0);
9903 }
9904 EOP
9905 set try
9906 if eval $compile; then
9907         case "`./try$exe_ext`" in
9908         preserve) d_nv_preserves_uv="$define" ;;
9909         esac
9910 fi      
9911 case "$d_nv_preserves_uv" in
9912 $define) $echo "Yes, they can."  2>&1 ;;
9913 *)       $echo "No, they can't." 2>&1
9914          d_nv_preserves_uv="$undef"
9915          ;;
9916 esac
9917
9918 $rm -f try.* try
9919
9920 : see if POSIX threads are available
9921 set pthread.h i_pthread
9922 eval $inhdr
9923
9924
9925
9926
9927 : how to create joinable pthreads
9928 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
9929         echo " "
9930         echo "Checking what constant to use for creating joinable pthreads..." >&4 
9931         $cat >try.c <<'EOCP'
9932 #include <pthread.h>
9933 int main() {
9934     int detachstate = JOINABLE;
9935 }
9936 EOCP
9937         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
9938         if eval $compile; then
9939                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
9940                 val="$undef" # Yes, undef.
9941                 set d_old_pthread_create_joinable
9942                 eval $setvar
9943                 val=""
9944                 set old_pthread_create_joinable
9945                 eval $setvar
9946         else
9947                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
9948                 if eval $compile; then
9949                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
9950                         val="$define"
9951                         set d_old_pthread_create_joinable
9952                         eval $setvar
9953                         val=PTHREAD_CREATE_UNDETACHED
9954                         set old_pthread_create_joinable
9955                         eval $setvar
9956                 else            
9957                         set try -DJOINABLE=__UNDETACHED
9958                         if eval $compile; then
9959                                 echo "You seem to use __UNDETACHED." >&4
9960                                 val="$define"
9961                                 set d_old_pthread_create_joinable
9962                                 eval $setvar
9963                                 val=__UNDETACHED
9964                                 set old_pthread_create_joinable
9965                                 eval $setvar
9966                         else
9967                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
9968                                 val="$define"
9969                                 set d_old_pthread_create_joinable
9970                                 eval $setvar
9971                                 val=0
9972                                 set old_pthread_create_joinable
9973                                 eval $setvar
9974                         fi
9975                 fi
9976         fi
9977         $rm -f try try.*
9978 else
9979     d_old_pthread_create_joinable="$undef"
9980     old_pthread_create_joinable=""
9981 fi
9982
9983 : see if pause exists
9984 set pause d_pause
9985 eval $inlibc
9986
9987 : see if pipe exists
9988 set pipe d_pipe
9989 eval $inlibc
9990
9991 : see if poll exists
9992 set poll d_poll
9993 eval $inlibc
9994
9995
9996 : see whether the various POSIXish _yields exist
9997 $cat >try.c <<EOP
9998 #include <pthread.h>
9999 #include <stdio.h>
10000 int main() {
10001 #ifdef SCHED_YIELD
10002         sched_yield();
10003 #else
10004 #ifdef PTHREAD_YIELD
10005         pthread_yield();
10006 #else
10007 #ifdef PTHREAD_YIELD_NULL
10008         pthread_yield(NULL);
10009 #endif
10010 #endif
10011 #endif
10012 }
10013 EOP
10014 : see if sched_yield exists
10015 set try -DSCHED_YIELD
10016 if eval $compile; then
10017     val="$define"
10018     sched_yield='sched_yield()'
10019 else
10020     val="$undef"
10021 fi
10022 case "$usethreads" in
10023 $define)
10024         case "$val" in
10025         $define) echo 'sched_yield() found.' >&4        ;;
10026         *)       echo 'sched_yield() NOT found.' >&4    ;;
10027         esac
10028 esac
10029 set d_sched_yield
10030 eval $setvar
10031
10032 : see if pthread_yield exists
10033 set try -DPTHREAD_YIELD
10034 if eval $compile; then
10035     val="$define"
10036     case "$sched_yield" in
10037     '') sched_yield='pthread_yield()' ;;
10038     esac
10039 else
10040     set try -DPTHREAD_YIELD_NULL
10041     if eval $compile; then
10042         val="$define"
10043         case "$sched_yield" in
10044         '') sched_yield='pthread_yield(NULL)' ;;
10045         esac
10046     else
10047         val="$undef"
10048     fi
10049 fi
10050 case "$usethreads" in
10051 $define)
10052         case "$val" in
10053         $define) echo 'pthread_yield() found.' >&4      ;;
10054         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10055         esac
10056         ;;
10057 esac
10058 set d_pthread_yield
10059 eval $setvar
10060
10061 case "$sched_yield" in
10062 '') sched_yield=undef ;;
10063 esac
10064
10065 $rm -f try try.*
10066
10067 : see if this is a pwd.h system
10068 set pwd.h i_pwd
10069 eval $inhdr
10070
10071 case "$i_pwd" in
10072 $define)
10073         xxx=`./findhdr pwd.h`
10074         $cppstdin $cppflags $cppminus < $xxx >$$.h
10075
10076         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10077                 val="$define"
10078         else
10079                 val="$undef"
10080         fi
10081         set d_pwquota
10082         eval $setvar
10083
10084         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10085                 val="$define"
10086         else
10087                 val="$undef"
10088         fi
10089         set d_pwage
10090         eval $setvar
10091
10092         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10093                 val="$define"
10094         else
10095                 val="$undef"
10096         fi
10097         set d_pwchange
10098         eval $setvar
10099
10100         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10101                 val="$define"
10102         else
10103                 val="$undef"
10104         fi
10105         set d_pwclass
10106         eval $setvar
10107
10108         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10109                 val="$define"
10110         else
10111                 val="$undef"
10112         fi
10113         set d_pwexpire
10114         eval $setvar
10115
10116         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10117                 val="$define"
10118         else
10119                 val="$undef"
10120         fi
10121         set d_pwcomment
10122         eval $setvar
10123
10124         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10125                 val="$define"
10126         else
10127                 val="$undef"
10128         fi
10129         set d_pwgecos
10130         eval $setvar
10131
10132         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10133                 val="$define"
10134         else
10135                 val="$undef"
10136         fi
10137         set d_pwpasswd
10138         eval $setvar
10139
10140         $rm -f $$.h
10141         ;;
10142 *)
10143         val="$undef"; 
10144         set d_pwquota; eval $setvar
10145         set d_pwage; eval $setvar
10146         set d_pwchange; eval $setvar
10147         set d_pwclass; eval $setvar
10148         set d_pwexpire; eval $setvar
10149         set d_pwcomment; eval $setvar
10150         set d_pwgecos; eval $setvar
10151         set d_pwpasswd; eval $setvar
10152         ;;
10153 esac
10154
10155 : see if readdir and friends exist
10156 set readdir d_readdir
10157 eval $inlibc
10158 set seekdir d_seekdir
10159 eval $inlibc
10160 set telldir d_telldir
10161 eval $inlibc
10162 set rewinddir d_rewinddir
10163 eval $inlibc
10164
10165 : see if readlink exists
10166 set readlink d_readlink
10167 eval $inlibc
10168
10169 : see if rename exists
10170 set rename d_rename
10171 eval $inlibc
10172
10173 : see if rmdir exists
10174 set rmdir d_rmdir
10175 eval $inlibc
10176
10177 : see if memory.h is available.
10178 val=''
10179 set memory.h val
10180 eval $inhdr
10181
10182 : See if it conflicts with string.h
10183 case "$val" in
10184 $define)
10185         case "$strings" in
10186         '') ;;
10187         *)
10188                 $cppstdin $cppflags $cppminus < $strings > mem.h
10189                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10190                         echo " "
10191                         echo "We won't be including <memory.h>."
10192                         val="$undef"
10193                 fi
10194                 $rm -f mem.h
10195                 ;;
10196         esac
10197 esac
10198 set i_memory
10199 eval $setvar
10200
10201 : can bcopy handle overlapping blocks?
10202 val="$undef"
10203 case "$d_bcopy" in
10204 "$define")
10205         echo " "
10206         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10207         $cat >try.c <<EOCP
10208 #$i_memory I_MEMORY
10209 #$i_stdlib I_STDLIB
10210 #$i_string I_STRING
10211 #$i_unistd I_UNISTD
10212 EOCP
10213         $cat >>try.c <<'EOCP'
10214 #include <stdio.h>
10215 #ifdef I_MEMORY
10216 #  include <memory.h>
10217 #endif
10218 #ifdef I_STDLIB
10219 #  include <stdlib.h>
10220 #endif
10221 #ifdef I_STRING
10222 #  include <string.h>
10223 #else
10224 #  include <strings.h>
10225 #endif
10226 #ifdef I_UNISTD
10227 #  include <unistd.h>  /* Needed for NetBSD */
10228 #endif
10229 int main()
10230 {
10231 char buf[128], abc[128];
10232 char *b;
10233 int len;
10234 int off;
10235 int align;
10236
10237 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10238
10239 for (align = 7; align >= 0; align--) {
10240         for (len = 36; len; len--) {
10241                 b = buf+align;
10242                 bcopy(abc, b, len);
10243                 for (off = 1; off <= len; off++) {
10244                         bcopy(b, b+off, len);
10245                         bcopy(b+off, b, len);
10246                         if (bcmp(b, abc, len))
10247                                 exit(1);
10248                 }
10249         }
10250 }
10251 exit(0);
10252 }
10253 EOCP
10254         set try
10255         if eval $compile_ok; then
10256                 if ./try 2>/dev/null; then
10257                         echo "Yes, it can."
10258                         val="$define"
10259                 else
10260                         echo "It can't, sorry."
10261                         case "$d_memmove" in
10262                         "$define") echo "But that's Ok since you have memmove()." ;;
10263                         esac
10264                 fi
10265         else
10266                 echo "(I can't compile the test program, so we'll assume not...)"
10267                 case "$d_memmove" in
10268                 "$define") echo "But that's Ok since you have memmove()." ;;
10269                 esac
10270         fi
10271         ;;
10272 esac
10273 $rm -f try.* try core
10274 set d_safebcpy
10275 eval $setvar
10276
10277 : can memcpy handle overlapping blocks?
10278 val="$undef"
10279 case "$d_memcpy" in
10280 "$define")
10281         echo " "
10282         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10283         $cat >try.c <<EOCP
10284 #$i_memory I_MEMORY
10285 #$i_stdlib I_STDLIB
10286 #$i_string I_STRING
10287 #$i_unistd I_UNISTD
10288 EOCP
10289         $cat >>try.c <<'EOCP'
10290 #include <stdio.h>
10291 #ifdef I_MEMORY
10292 #  include <memory.h>
10293 #endif
10294 #ifdef I_STDLIB
10295 #  include <stdlib.h>
10296 #endif
10297 #ifdef I_STRING
10298 #  include <string.h>
10299 #else
10300 #  include <strings.h>
10301 #endif
10302 #ifdef I_UNISTD
10303 #  include <unistd.h>  /* Needed for NetBSD */
10304 #endif
10305 int main()
10306 {
10307 char buf[128], abc[128];
10308 char *b;
10309 int len;
10310 int off;
10311 int align;
10312
10313 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10314    try to store the string in read-only memory. */
10315 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10316
10317 for (align = 7; align >= 0; align--) {
10318         for (len = 36; len; len--) {
10319                 b = buf+align;
10320                 memcpy(b, abc, len);
10321                 for (off = 1; off <= len; off++) {
10322                         memcpy(b+off, b, len);
10323                         memcpy(b, b+off, len);
10324                         if (memcmp(b, abc, len))
10325                                 exit(1);
10326                 }
10327         }
10328 }
10329 exit(0);
10330 }
10331 EOCP
10332         set try
10333         if eval $compile_ok; then
10334                 if ./try 2>/dev/null; then
10335                         echo "Yes, it can."
10336                         val="$define"
10337                 else
10338                         echo "It can't, sorry."
10339                         case "$d_memmove" in
10340                         "$define") echo "But that's Ok since you have memmove()." ;;
10341                         esac
10342                 fi
10343         else
10344                 echo "(I can't compile the test program, so we'll assume not...)"
10345                 case "$d_memmove" in
10346                 "$define") echo "But that's Ok since you have memmove()." ;;
10347                 esac
10348         fi
10349         ;;
10350 esac
10351 $rm -f try.* try core
10352 set d_safemcpy
10353 eval $setvar
10354
10355 : can memcmp be trusted to compare relative magnitude?
10356 val="$undef"
10357 case "$d_memcmp" in
10358 "$define")
10359         echo " "
10360         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10361         $cat >try.c <<EOCP
10362 #$i_memory I_MEMORY
10363 #$i_stdlib I_STDLIB
10364 #$i_string I_STRING
10365 #$i_unistd I_UNISTD
10366 EOCP
10367         $cat >>try.c <<'EOCP'
10368 #include <stdio.h>
10369 #ifdef I_MEMORY
10370 #  include <memory.h>
10371 #endif
10372 #ifdef I_STDLIB
10373 #  include <stdlib.h>
10374 #endif
10375 #ifdef I_STRING
10376 #  include <string.h>
10377 #else
10378 #  include <strings.h>
10379 #endif
10380 #ifdef I_UNISTD
10381 #  include <unistd.h>  /* Needed for NetBSD */
10382 #endif
10383 int main()
10384 {
10385 char a = -1;
10386 char b = 0;
10387 if ((a < b) && memcmp(&a, &b, 1) < 0)
10388         exit(1);
10389 exit(0);
10390 }
10391 EOCP
10392         set try
10393         if eval $compile_ok; then
10394                 if ./try 2>/dev/null; then
10395                         echo "Yes, it can."
10396                         val="$define"
10397                 else
10398                         echo "No, it can't (it uses signed chars)."
10399                 fi
10400         else
10401                 echo "(I can't compile the test program, so we'll assume not...)"
10402         fi
10403         ;;
10404 esac
10405 $rm -f try.* try core
10406 set d_sanemcmp
10407 eval $setvar
10408
10409 : see if select exists
10410 set select d_select
10411 eval $inlibc
10412
10413 : see if semctl exists
10414 set semctl d_semctl
10415 eval $inlibc
10416
10417 : see if semget exists
10418 set semget d_semget
10419 eval $inlibc
10420
10421 : see if semop exists
10422 set semop d_semop
10423 eval $inlibc
10424
10425 : see how much of the 'sem*(2)' library is present.
10426 h_sem=true
10427 echo " "
10428 case "$d_semctl$d_semget$d_semop" in
10429 *"$undef"*) h_sem=false;;
10430 esac
10431 case "$osname" in
10432 freebsd)
10433     case "`ipcs 2>&1`" in
10434     "SVID messages"*"not configured"*)
10435         echo "Your $osname does not have the sem*(2) configured." >&4
10436         h_sem=false
10437         val="$undef"
10438         set semctl d_semctl
10439         eval $setvar
10440         set semget d_semget
10441         eval $setvar
10442         set semop d_semop
10443         eval $setvar
10444         ;;
10445     esac
10446     ;;
10447 esac
10448 : we could also check for sys/ipc.h ...
10449 if $h_sem && $test `./findhdr sys/sem.h`; then
10450         echo "You have the full sem*(2) library." >&4
10451         val="$define"
10452 else
10453         echo "You don't have the full sem*(2) library." >&4
10454         val="$undef"
10455 fi
10456 set d_sem
10457 eval $setvar
10458
10459 : see whether sys/sem.h defines union semun
10460 echo " "
10461 $cat > try.c <<'END'
10462 #include <sys/types.h>
10463 #include <sys/ipc.h>
10464 #include <sys/sem.h>
10465 int main () { union semun semun; semun.buf = 0; }
10466 END
10467 set try
10468 if eval $compile; then
10469     echo "You have union semun in <sys/sem.h>." >&4
10470     val="$define"
10471 else
10472     echo "You do not have union semun in <sys/sem.h>." >&4
10473     val="$undef"
10474 fi
10475 $rm -f try try.c try.h
10476 set d_union_semun
10477 eval $setvar
10478
10479 : see how to do semctl IPC_STAT
10480 case "$d_sem" in
10481 $define)
10482     : see whether semctl IPC_STAT can use union semun
10483     echo " "
10484     $cat > try.h <<END
10485 #ifndef S_IRUSR
10486 #   ifdef S_IREAD
10487 #       define S_IRUSR S_IREAD
10488 #       define S_IWUSR S_IWRITE
10489 #       define S_IXUSR S_IEXEC
10490 #   else
10491 #       define S_IRUSR 0400
10492 #       define S_IWUSR 0200
10493 #       define S_IXUSR 0100
10494 #   endif
10495 #   define S_IRGRP (S_IRUSR>>3)
10496 #   define S_IWGRP (S_IWUSR>>3)
10497 #   define S_IXGRP (S_IXUSR>>3)
10498 #   define S_IROTH (S_IRUSR>>6)
10499 #   define S_IWOTH (S_IWUSR>>6)
10500 #   define S_IXOTH (S_IXUSR>>6)
10501 #endif
10502 #ifndef S_IRWXU
10503 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10504 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10505 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10506 #endif
10507 END
10508
10509     $cat > try.c <<END
10510 #include <sys/types.h>
10511 #include <sys/ipc.h>
10512 #include <sys/sem.h>
10513 #include <sys/stat.h>
10514 #include <stdio.h>
10515 #include <errno.h>
10516 #include "try.h"
10517 #ifndef errno
10518 extern int errno;
10519 #endif
10520 #$d_union_semun HAS_UNION_SEMUN
10521 int main() {
10522     union semun
10523 #ifndef HAS_UNION_SEMUN
10524     {
10525         int val;
10526         struct semid_ds *buf;
10527         unsigned short *array;
10528     }
10529 #endif
10530     arg;
10531     int sem, st;
10532
10533 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10534     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10535     if (sem > -1) {
10536         struct semid_ds argbuf;
10537         arg.buf = &argbuf;
10538 #       ifdef IPC_STAT
10539         st = semctl(sem, 0, IPC_STAT, arg);
10540         if (st == 0)
10541             printf("semun\n");
10542         else
10543 #       endif /* IPC_STAT */
10544             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10545 #       ifdef IPC_RMID
10546         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10547 #       endif /* IPC_RMID */
10548             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10549     } else
10550 #endif /* IPC_PRIVATE && ... */
10551         printf("semget failed: errno = %d\n", errno);
10552   return 0;
10553 }
10554 END
10555     val="$undef"
10556     set try
10557     if eval $compile; then
10558         xxx=`./try`
10559         case "$xxx" in
10560         semun) val="$define" ;;
10561         esac
10562     fi
10563     $rm -f try try.c
10564     set d_semctl_semun
10565     eval $setvar
10566     case "$d_semctl_semun" in
10567     $define)
10568         echo "You can use union semun for semctl IPC_STAT." >&4
10569         also='also'
10570         ;;
10571     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10572         also=''
10573         ;;
10574     esac
10575
10576     : see whether semctl IPC_STAT can use struct semid_ds pointer
10577     $cat > try.c <<'END'
10578 #include <sys/types.h>
10579 #include <sys/ipc.h>
10580 #include <sys/sem.h>
10581 #include <sys/stat.h>
10582 #include "try.h"
10583 #include <stdio.h>
10584 #include <errno.h>
10585 #ifndef errno
10586 extern int errno;
10587 #endif
10588 int main() {
10589     struct semid_ds arg;
10590     int sem, st;
10591
10592 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
10593     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10594     if (sem > -1) {
10595 #       ifdef IPC_STAT
10596         st = semctl(sem, 0, IPC_STAT, &arg);
10597         if (st == 0)
10598             printf("semid_ds\n");
10599         else
10600 #       endif /* IPC_STAT */
10601             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10602 #       ifdef IPC_RMID
10603         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10604 #       endif /* IPC_RMID */
10605             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10606     } else
10607 #endif /* IPC_PRIVATE && ... */
10608         printf("semget failed: errno = %d\n", errno);
10609
10610     return 0;
10611 }
10612 END
10613     val="$undef"
10614     set try
10615     if eval $compile; then
10616         xxx=`./try`
10617         case "$xxx" in
10618         semid_ds) val="$define" ;;
10619         esac
10620     fi
10621     $rm -f try try.c
10622     set d_semctl_semid_ds
10623     eval $setvar
10624     case "$d_semctl_semid_ds" in
10625     $define)
10626         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10627         ;;
10628     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10629         ;;
10630     esac
10631     $rm -f try.h
10632     ;;
10633 *)  val="$undef"
10634
10635     # We do not have the full sem*(2) library, so assume we can not
10636     # use either.
10637
10638     set d_semctl_semun
10639     eval $setvar
10640
10641     set d_semctl_semid_ds
10642     eval $setvar
10643     ;;
10644 esac
10645
10646 : see if setegid exists
10647 set setegid d_setegid
10648 eval $inlibc
10649
10650 : see if seteuid exists
10651 set seteuid d_seteuid
10652 eval $inlibc
10653
10654 : see if setgrent exists
10655 set setgrent d_setgrent
10656 eval $inlibc
10657
10658 : see if sethostent exists
10659 set sethostent d_sethent
10660 eval $inlibc
10661
10662 : see if setlinebuf exists
10663 set setlinebuf d_setlinebuf
10664 eval $inlibc
10665
10666 : see if setlocale exists
10667 set setlocale d_setlocale
10668 eval $inlibc
10669
10670 : see if setnetent exists
10671 set setnetent d_setnent
10672 eval $inlibc
10673
10674 : see if setprotoent exists
10675 set setprotoent d_setpent
10676 eval $inlibc
10677
10678 : see if setpgid exists
10679 set setpgid d_setpgid
10680 eval $inlibc
10681
10682 : see if setpgrp2 exists
10683 set setpgrp2 d_setpgrp2
10684 eval $inlibc
10685
10686 : see if setpriority exists
10687 set setpriority d_setprior
10688 eval $inlibc
10689
10690 : see if setpwent exists
10691 set setpwent d_setpwent
10692 eval $inlibc
10693
10694 : see if setregid exists
10695 set setregid d_setregid
10696 eval $inlibc
10697 set setresgid d_setresgid
10698 eval $inlibc
10699
10700 : see if setreuid exists
10701 set setreuid d_setreuid
10702 eval $inlibc
10703 set setresuid d_setresuid
10704 eval $inlibc
10705
10706 : see if setrgid exists
10707 set setrgid d_setrgid
10708 eval $inlibc
10709
10710 : see if setruid exists
10711 set setruid d_setruid
10712 eval $inlibc
10713
10714 : see if setservent exists
10715 set setservent d_setsent
10716 eval $inlibc
10717
10718 : see if setsid exists
10719 set setsid d_setsid
10720 eval $inlibc
10721
10722 : see if setspent exists
10723 set setspent d_setspent
10724 eval $inlibc
10725
10726 : see if setvbuf exists
10727 set setvbuf d_setvbuf
10728 eval $inlibc
10729
10730 : see if sfio.h is available
10731 set sfio.h i_sfio
10732 eval $inhdr
10733
10734
10735 : see if sfio library is available
10736 case "$i_sfio" in
10737 $define)
10738         val=''
10739         set sfreserve val
10740         eval $inlibc
10741         ;;
10742 *)
10743         val="$undef"
10744         ;;
10745 esac
10746 : Ok, but do we want to use it.
10747 case "$val" in
10748 $define)
10749         case "$usesfio" in
10750         true|$define|[yY]*) dflt='y';;
10751         *) dflt='n';;
10752         esac
10753         echo "$package can use the sfio library, but it is experimental."
10754         rp="You seem to have sfio available, do you want to try using it?"
10755         . ./myread
10756         case "$ans" in
10757         y|Y) ;;
10758         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
10759                 val="$undef"
10760                 : Remove sfio from list of libraries to use
10761                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
10762                 shift
10763                 libs="$*"
10764                 echo "libs = $libs" >&4
10765                 ;;
10766         esac
10767         ;;
10768 *)      case "$usesfio" in
10769         true|$define|[yY]*)
10770                 echo "Sorry, cannot find sfio on this machine" >&4
10771                 echo "Ignoring your setting of usesfio=$usesfio" >&4
10772                 ;;
10773         esac
10774         ;;
10775 esac
10776 set d_sfio
10777 eval $setvar
10778 case "$d_sfio" in
10779 $define) usesfio='true';;
10780 *) usesfio='false';;
10781 esac
10782
10783 : see if shmctl exists
10784 set shmctl d_shmctl
10785 eval $inlibc
10786
10787 : see if shmget exists
10788 set shmget d_shmget
10789 eval $inlibc
10790
10791 : see if shmat exists
10792 set shmat d_shmat
10793 eval $inlibc
10794 : see what shmat returns
10795 case "$d_shmat" in
10796 "$define")
10797         $cat >shmat.c <<'END'
10798 #include <sys/shm.h>
10799 void *shmat();
10800 END
10801         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
10802                 shmattype='void *'
10803         else
10804                 shmattype='char *'
10805         fi
10806         echo "and it returns ($shmattype)." >&4
10807         : see if a prototype for shmat is available
10808         xxx=`./findhdr sys/shm.h`
10809         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
10810         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
10811                 val="$define"
10812         else
10813                 val="$undef"
10814         fi
10815         $rm -f shmat.[co]
10816         ;;
10817 *)
10818         val="$undef"
10819         ;;
10820 esac
10821 set d_shmatprototype
10822 eval $setvar
10823
10824 : see if shmdt exists
10825 set shmdt d_shmdt
10826 eval $inlibc
10827
10828 : see how much of the 'shm*(2)' library is present.
10829 h_shm=true
10830 echo " "
10831 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
10832 *"$undef"*) h_shm=false;;
10833 esac
10834 case "$osname" in
10835 freebsd)
10836     case "`ipcs 2>&1`" in
10837     "SVID shared memory"*"not configured"*)
10838         echo "Your $osname does not have the shm*(2) configured." >&4
10839         h_shm=false
10840         val="$undef"
10841         set shmctl d_shmctl
10842         evat $setvar
10843         set shmget d_shmget
10844         evat $setvar
10845         set shmat d_shmat
10846         evat $setvar
10847         set shmdt d_shmdt
10848         evat $setvar
10849         ;;
10850     esac
10851     ;;
10852 esac
10853 : we could also check for sys/ipc.h ...
10854 if $h_shm && $test `./findhdr sys/shm.h`; then
10855         echo "You have the full shm*(2) library." >&4
10856         val="$define"
10857 else
10858         echo "You don't have the full shm*(2) library." >&4
10859         val="$undef"
10860 fi
10861 set d_shm
10862 eval $setvar
10863
10864 echo " "
10865 : see if we have sigaction
10866 if set sigaction val -f d_sigaction; eval $csym; $val; then
10867         echo 'sigaction() found.' >&4
10868         $cat > try.c <<'EOP'
10869 #include <stdio.h>
10870 #include <sys/types.h>
10871 #include <signal.h>
10872 int main()
10873 {
10874     struct sigaction act, oact;
10875     act.sa_flags = 0;
10876     oact.sa_handler = 0;
10877     /* so that act and oact are used */
10878     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
10879 }
10880 EOP
10881         set try
10882         if eval $compile_ok; then
10883                 val="$define"
10884         else
10885                 echo "But you don't seem to have a useable struct sigaction." >&4
10886                 val="$undef"
10887         fi
10888 else
10889         echo 'sigaction NOT found.' >&4
10890         val="$undef"
10891 fi
10892 set d_sigaction; eval $setvar
10893 $rm -f try try$_o try.c
10894
10895 : see if sigsetjmp exists
10896 echo " "
10897 case "$d_sigsetjmp" in
10898 '')
10899         $cat >try.c <<'EOP'
10900 #include <setjmp.h>
10901 sigjmp_buf env;
10902 int set = 1;
10903 int main()
10904 {
10905         if (sigsetjmp(env,1))
10906                 exit(set);
10907         set = 0;
10908         siglongjmp(env, 1);
10909         exit(1);
10910 }
10911 EOP
10912         set try
10913         if eval $compile; then
10914                 if ./try >/dev/null 2>&1; then
10915                         echo "POSIX sigsetjmp found." >&4
10916                         val="$define"
10917                 else
10918                         $cat >&4 <<EOM
10919 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
10920 I'll ignore them.
10921 EOM
10922                         val="$undef"
10923                 fi
10924         else
10925                 echo "sigsetjmp not found." >&4
10926                 val="$undef"
10927         fi
10928         ;;
10929 *) val="$d_sigsetjmp"
10930         case "$d_sigsetjmp" in
10931         $define) echo "POSIX sigsetjmp found." >&4;;
10932         $undef) echo "sigsetjmp not found." >&4;;
10933         esac
10934         ;;
10935 esac
10936 set d_sigsetjmp
10937 eval $setvar
10938 $rm -f try.c try
10939
10940 : see if sys/stat.h is available
10941 set sys/stat.h i_sysstat
10942 eval $inhdr
10943
10944
10945 : see if stat knows about block sizes
10946 echo " "
10947 echo "Checking to see if your struct stat has st_blocks field..." >&4
10948 set d_statblks stat st_blocks $i_sysstat sys/stat.h
10949 eval $hasfield
10950
10951
10952 : see if this is a sys/vfs.h system
10953 set sys/vfs.h i_sysvfs
10954 eval $inhdr
10955
10956
10957 : see if this is a sys/statfs.h system
10958 set sys/statfs.h i_sysstatfs
10959 eval $inhdr
10960
10961
10962 echo " "
10963 echo "Checking to see if your system supports struct statfs..." >&4
10964 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
10965 eval $hasstruct
10966 case "$d_statfs_s" in
10967 "$define")      echo "Yes, it does."   ;;
10968 *)              echo "No, it doesn't." ;;
10969 esac
10970
10971
10972
10973 : see if struct statfs knows about f_flags
10974 case "$d_statfs_s" in
10975 define) 
10976         echo " "
10977         echo "Checking to see if your struct statfs has f_flags field..." >&4
10978         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
10979         eval $hasfield
10980         ;;
10981 *)      val="$undef"
10982         set d_statfs_f_flags
10983         eval $setvar
10984         ;;
10985 esac
10986 case "$d_statfs_f_flags" in
10987 "$define")      echo "Yes, it does."   ;;
10988 *)              echo "No, it doesn't." ;;
10989 esac
10990
10991 : see if _ptr and _cnt from stdio act std
10992 echo " "
10993 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
10994         echo "(Looks like you have stdio.h from Linux.)"
10995         case "$stdio_ptr" in
10996         '') stdio_ptr='((fp)->_IO_read_ptr)'
10997                 ptr_lval=$define
10998                 ;;
10999         *)      ptr_lval=$d_stdio_ptr_lval;;
11000         esac
11001         case "$stdio_cnt" in
11002         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11003                 cnt_lval=$undef
11004                 ;;
11005         *)      cnt_lval=$d_stdio_cnt_lval;;
11006         esac
11007         case "$stdio_base" in
11008         '') stdio_base='((fp)->_IO_read_base)';;
11009         esac
11010         case "$stdio_bufsiz" in
11011         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11012         esac
11013 else
11014         case "$stdio_ptr" in
11015         '') stdio_ptr='((fp)->_ptr)'
11016                 ptr_lval=$define
11017                 ;;
11018         *)      ptr_lval=$d_stdio_ptr_lval;;
11019         esac
11020         case "$stdio_cnt" in
11021         '') stdio_cnt='((fp)->_cnt)'
11022                 cnt_lval=$define
11023                 ;;
11024         *)      cnt_lval=$d_stdio_cnt_lval;;
11025         esac
11026         case "$stdio_base" in
11027         '') stdio_base='((fp)->_base)';;
11028         esac
11029         case "$stdio_bufsiz" in
11030         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11031         esac
11032 fi
11033 : test whether _ptr and _cnt really work
11034 echo "Checking how std your stdio is..." >&4
11035 $cat >try.c <<EOP
11036 #include <stdio.h>
11037 #define FILE_ptr(fp)    $stdio_ptr
11038 #define FILE_cnt(fp)    $stdio_cnt
11039 int main() {
11040         FILE *fp = fopen("try.c", "r");
11041         char c = getc(fp);
11042         if (
11043                 18 <= FILE_cnt(fp) &&
11044                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11045         )
11046                 exit(0);
11047         exit(1);
11048 }
11049 EOP
11050 val="$undef"
11051 set try
11052 if eval $compile; then
11053         if ./try; then
11054                 echo "Your stdio acts pretty std."
11055                 val="$define"
11056         else
11057                 echo "Your stdio isn't very std."
11058         fi
11059 else
11060         echo "Your stdio doesn't appear very std."
11061 fi
11062 $rm -f try.c try
11063 set d_stdstdio
11064 eval $setvar
11065
11066 : Can _ptr be used as an lvalue?
11067 case "$d_stdstdio$ptr_lval" in
11068 $define$define) val=$define ;;
11069 *) val=$undef ;;
11070 esac
11071 set d_stdio_ptr_lval
11072 eval $setvar
11073
11074 : Can _cnt be used as an lvalue?
11075 case "$d_stdstdio$cnt_lval" in
11076 $define$define) val=$define ;;
11077 *) val=$undef ;;
11078 esac
11079 set d_stdio_cnt_lval
11080 eval $setvar
11081
11082 : see if _base is also standard
11083 val="$undef"
11084 case "$d_stdstdio" in
11085 $define)
11086         $cat >try.c <<EOP
11087 #include <stdio.h>
11088 #define FILE_base(fp)   $stdio_base
11089 #define FILE_bufsiz(fp) $stdio_bufsiz
11090 int main() {
11091         FILE *fp = fopen("try.c", "r");
11092         char c = getc(fp);
11093         if (
11094                 19 <= FILE_bufsiz(fp) &&
11095                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11096         )
11097                 exit(0);
11098         exit(1);
11099 }
11100 EOP
11101         set try
11102         if eval $compile; then
11103                 if ./try; then
11104                         echo "And its _base field acts std."
11105                         val="$define"
11106                 else
11107                         echo "But its _base field isn't std."
11108                 fi
11109         else
11110                 echo "However, it seems to be lacking the _base field."
11111         fi
11112         $rm -f try.c try
11113         ;;
11114 esac
11115 set d_stdiobase
11116 eval $setvar
11117
11118 $cat >&4 <<EOM
11119 Checking how to access stdio streams by file descriptor number...
11120 EOM
11121 case "$stdio_stream_array" in
11122 '')     $cat >try.c <<EOCP
11123 #include <stdio.h>
11124 int main() {
11125   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11126     printf("yes\n");
11127 }
11128 EOCP
11129         for s in _iob __iob __sF
11130         do
11131                 set try -DSTDIO_STREAM_ARRAY=$s
11132                 if eval $compile; then
11133                         case "`./try$exe_ext`" in
11134                         yes)    stdio_stream_array=$s; break ;;
11135                         esac
11136                 fi
11137         done
11138         $rm -f try.* try$exe_ext
11139 esac
11140 case "$stdio_stream_array" in
11141 '')     $cat >&4 <<EOM
11142 I can't figure out how to access stdio streams by file descriptor number.
11143 EOM
11144         d_stdio_stream_array="$undef"
11145         ;;
11146 *)      $cat >&4 <<EOM
11147 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11148 EOM
11149         d_stdio_stream_array="$define"
11150         ;;
11151 esac
11152
11153 : see if strcoll exists
11154 set strcoll d_strcoll
11155 eval $inlibc
11156
11157 : check for structure copying
11158 echo " "
11159 echo "Checking to see if your C compiler can copy structs..." >&4
11160 $cat >try.c <<'EOCP'
11161 int main()
11162 {
11163         struct blurfl {
11164                 int dyick;
11165         } foo, bar;
11166
11167         foo = bar;
11168 }
11169 EOCP
11170 if $cc -c try.c >/dev/null 2>&1 ; then
11171         val="$define"
11172         echo "Yup, it can."
11173 else
11174         val="$undef"
11175         echo "Nope, it can't."
11176 fi
11177 set d_strctcpy
11178 eval $setvar
11179 $rm -f try.*
11180
11181 : see if strerror and/or sys_errlist[] exist
11182 echo " "
11183 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11184     if set strerror val -f d_strerror; eval $csym; $val; then
11185                 echo 'strerror() found.' >&4
11186                 d_strerror="$define"
11187                 d_strerrm='strerror(e)'
11188                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11189                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11190                         d_syserrlst="$define"
11191                 else
11192                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11193                         d_syserrlst="$undef"
11194                 fi
11195     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11196                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11197                 echo 'strerror() found in string header.' >&4
11198                 d_strerror="$define"
11199                 d_strerrm='strerror(e)'
11200                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11201                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11202                                 d_syserrlst="$define"
11203                 else
11204                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11205                         d_syserrlst="$undef"
11206                 fi
11207     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11208                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11209                 d_strerror="$undef"
11210                 d_syserrlst="$define"
11211                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11212     else
11213                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11214                 d_strerror="$undef"
11215                 d_syserrlst="$undef"
11216                 d_strerrm='"unknown"'
11217     fi
11218 fi
11219
11220 : see if strtod exists
11221 set strtod d_strtod
11222 eval $inlibc
11223
11224 : see if strtol exists
11225 set strtol d_strtol
11226 eval $inlibc
11227
11228 : see if strtold exists
11229 set strtold d_strtold
11230 eval $inlibc
11231
11232 : see if strtoll exists
11233 set strtoll d_strtoll
11234 eval $inlibc
11235
11236 : see if strtoul exists
11237 set strtoul d_strtoul
11238 eval $inlibc
11239
11240 : see if strtoull exists
11241 set strtoull d_strtoull
11242 eval $inlibc
11243
11244 : see if strtouq exists
11245 set strtouq d_strtouq
11246 eval $inlibc
11247
11248 : see if strxfrm exists
11249 set strxfrm d_strxfrm
11250 eval $inlibc
11251
11252 : see if symlink exists
11253 set symlink d_symlink
11254 eval $inlibc
11255
11256 : see if syscall exists
11257 set syscall d_syscall
11258 eval $inlibc
11259
11260 : see if sysconf exists
11261 set sysconf d_sysconf
11262 eval $inlibc
11263
11264 : see if system exists
11265 set system d_system
11266 eval $inlibc
11267
11268 : see if tcgetpgrp exists
11269 set tcgetpgrp d_tcgetpgrp
11270 eval $inlibc
11271
11272 : see if tcsetpgrp exists
11273 set tcsetpgrp d_tcsetpgrp
11274 eval $inlibc
11275
11276 : see if prototype for telldir is available
11277 echo " "
11278 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11279 eval $hasproto
11280
11281 : see if this is a sys/times.h system
11282 set sys/times.h i_systimes
11283 eval $inhdr
11284
11285 : see if times exists
11286 echo " "
11287 if set times val -f d_times; eval $csym; $val; then
11288         echo 'times() found.' >&4
11289         d_times="$define"
11290         inc=''
11291         case "$i_systimes" in
11292         "$define") inc='sys/times.h';;
11293         esac
11294         rp="What is the type returned by times() on this system?"
11295         set clock_t clocktype long stdio.h sys/types.h $inc
11296         eval $typedef_ask
11297 else
11298         echo 'times() NOT found, hope that will do.' >&4
11299         d_times="$undef"
11300         clocktype='int'
11301 fi
11302
11303 : see if truncate exists
11304 set truncate d_truncate
11305 eval $inlibc
11306
11307 : see if tzname[] exists
11308 echo " "
11309 if set tzname val -a d_tzname; eval $csym; $val; then
11310         val="$define"
11311         echo 'tzname[] found.' >&4
11312 else
11313         val="$undef"
11314         echo 'tzname[] NOT found.' >&4
11315 fi
11316 set d_tzname
11317 eval $setvar
11318
11319 : see if umask exists
11320 set umask d_umask
11321 eval $inlibc
11322
11323 : see if ustat exists
11324 set ustat d_ustat
11325 eval $inlibc
11326
11327 : backward compatibility for d_hvfork
11328 if test X$d_hvfork != X; then
11329         d_vfork="$d_hvfork"
11330         d_hvfork=''
11331 fi
11332 : see if there is a vfork
11333 val=''
11334 set vfork val
11335 eval $inlibc
11336
11337 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11338 : perl on Solaris 2.x, and probably elsewhere.
11339 case "$val" in
11340 $define)
11341         echo " "
11342         case "$usevfork" in
11343         false) dflt='n';;
11344         *) dflt='y';;
11345         esac
11346         cat <<'EOM'
11347  
11348 Perl can only use a vfork() that doesn't suffer from strict
11349 restrictions on calling functions or modifying global data in
11350 the child.  For example, glibc-2.1 contains such a vfork()
11351 that is unsuitable.  If your system provides a proper fork()
11352 call, chances are that you do NOT want perl to use vfork().
11353
11354 EOM
11355         rp="Do you still want to use vfork()?"
11356         . ./myread
11357         case "$ans" in
11358         y|Y) ;;
11359         *)
11360                 echo "Ok, we won't use vfork()."
11361                 val="$undef"
11362                 ;;
11363         esac
11364         ;;
11365 esac
11366 set d_vfork
11367 eval $setvar
11368 case "$d_vfork" in
11369 $define) usevfork='true';;
11370 *) usevfork='false';;
11371 esac
11372
11373 : see if this is an sysdir system
11374 set sys/dir.h i_sysdir
11375 eval $inhdr
11376
11377 : see if this is an sysndir system
11378 set sys/ndir.h i_sysndir
11379 eval $inhdr
11380
11381 : see if closedir exists
11382 set closedir d_closedir
11383 eval $inlibc
11384
11385 case "$d_closedir" in
11386 "$define")
11387         echo " "
11388         echo "Checking whether closedir() returns a status..." >&4
11389         cat > closedir.c <<EOM
11390 #$i_dirent I_DIRENT             /**/
11391 #$i_sysdir I_SYS_DIR            /**/
11392 #$i_sysndir I_SYS_NDIR          /**/
11393 #$i_systypes I_SYS_TYPES        /**/
11394
11395 #if defined(I_SYS_TYPES)
11396 #include <sys/types.h>
11397 #endif
11398 #if defined(I_DIRENT)
11399 #include <dirent.h>
11400 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11401 #include <sys/dir.h>
11402 #endif
11403 #else
11404 #ifdef I_SYS_NDIR
11405 #include <sys/ndir.h>
11406 #else
11407 #ifdef I_SYS_DIR
11408 #ifdef hp9000s500
11409 #include <ndir.h>       /* may be wrong in the future */
11410 #else
11411 #include <sys/dir.h>
11412 #endif
11413 #endif
11414 #endif
11415 #endif 
11416 int main() { return closedir(opendir(".")); }
11417 EOM
11418         set closedir
11419         if eval $compile_ok; then
11420                 if ./closedir > /dev/null 2>&1 ; then
11421                         echo "Yes, it does."
11422                         val="$undef"
11423                 else
11424                         echo "No, it doesn't."
11425                         val="$define"
11426                 fi
11427         else
11428                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11429                 val="$define"
11430         fi
11431         ;;
11432 *)
11433         val="$undef";
11434         ;;
11435 esac
11436 set d_void_closedir
11437 eval $setvar
11438 $rm -f closedir*
11439 : check for volatile keyword
11440 echo " "
11441 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11442 $cat >try.c <<'EOCP'
11443 int main()
11444 {
11445         typedef struct _goo_struct goo_struct;
11446         goo_struct * volatile goo = ((goo_struct *)0);
11447         struct _goo_struct {
11448                 long long_int;
11449                 int reg_int;
11450                 char char_var;
11451         };
11452         typedef unsigned short foo_t;
11453         char *volatile foo;
11454         volatile int bar;
11455         volatile foo_t blech;
11456         foo = foo;
11457 }
11458 EOCP
11459 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11460         val="$define"
11461         echo "Yup, it does."
11462 else
11463         val="$undef"
11464         echo "Nope, it doesn't."
11465 fi
11466 set d_volatile
11467 eval $setvar
11468 $rm -f try.*
11469
11470 : see if there is a wait4
11471 set wait4 d_wait4
11472 eval $inlibc
11473
11474 : see if waitpid exists
11475 set waitpid d_waitpid
11476 eval $inlibc
11477
11478 : see if wcstombs exists
11479 set wcstombs d_wcstombs
11480 eval $inlibc
11481
11482 : see if wctomb exists
11483 set wctomb d_wctomb
11484 eval $inlibc
11485
11486 : preserve RCS keywords in files with variable substitution, grrr
11487 Date='$Date'
11488 Id='$Id'
11489 Log='$Log'
11490 RCSfile='$RCSfile'
11491 Revision='$Revision'
11492
11493 case "$crosscompile" in
11494 ''|[nN]*) crosscompile="$undef" ;;
11495 esac
11496
11497 case "$osname" in
11498 next|rhapsody) multiarch="$define" ;;
11499 esac
11500 case "$multiarch" in
11501 ''|[nN]*) multiarch="$undef" ;;
11502 esac
11503
11504 : check for alignment requirements
11505 echo " "
11506 case "$crosscompile$multiarch" in
11507 *$define*)
11508         $cat <<EOM
11509 You seem to be either cross-compiling or doing a multiarchitecture build,
11510 skipping the memory alignment check.
11511
11512 EOM
11513         case "$alignbytes" in
11514         '') alignbytes=8 ;;
11515         esac
11516         ;;
11517 *)
11518         case "$alignbytes" in
11519         '') echo "Checking alignment constraints..." >&4
11520                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
11521                         $cat >try.c <<'EOCP'
11522 typedef long double NV;
11523 EOCP
11524                 else
11525                         $cat >try.c <<'EOCP'
11526 typedef double NV;
11527 EOCP
11528                 fi
11529                 $cat >>try.c <<'EOCP'
11530 #include <stdio.h>
11531 struct foobar {
11532         char foo;
11533         NV bar;
11534 } try_algn;
11535 int main()
11536 {
11537     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11538     return(0);
11539 }
11540 EOCP
11541                 set try
11542                 if eval $compile_ok; then
11543                         dflt=`./try`
11544                 else
11545                         dflt='8'
11546                         echo "(I can't seem to compile the test program...)"
11547                 fi
11548                 ;;
11549         *) dflt="$alignbytes"
11550                 ;;
11551         esac
11552         rp="Doubles must be aligned on a how-many-byte boundary?"
11553         . ./myread
11554         alignbytes="$ans"
11555         $rm -f try.c try
11556         ;;
11557 esac
11558
11559
11560 : check for ordering of bytes in a long
11561 echo " "
11562 case "$crosscompile$multiarch" in
11563 *$define*)
11564         $cat <<EOM
11565 You seem to be either cross-compiling or doing a multiarchitecture build,
11566 skipping the byteorder check.
11567
11568 EOM
11569         byteorder='0xffff'
11570         ;;
11571 *)
11572         case "$byteorder" in
11573         '')
11574                 $cat <<'EOM'
11575 In the following, larger digits indicate more significance.  A big-endian
11576 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11577 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11578 machines may have weird orders like 3412.  A Cray will report 87654321,
11579 an Alpha will report 12345678. If the test program works the default is
11580 probably right.
11581 I'm now running the test program...
11582 EOM
11583                 $cat >try.c <<'EOCP'
11584 #include <stdio.h>
11585 int main()
11586 {
11587         int i;
11588         union {
11589                 unsigned long l;
11590                 char c[sizeof(long)];
11591         } u;
11592
11593         if (sizeof(long) > 4)
11594                 u.l = (0x08070605L << 32) | 0x04030201L;
11595         else
11596                 u.l = 0x04030201L;
11597         for (i = 0; i < sizeof(long); i++)
11598                 printf("%c", u.c[i]+'0');
11599         printf("\n");
11600         exit(0);
11601 }
11602 EOCP
11603                 xxx_prompt=y
11604                 set try
11605                 if eval $compile && ./try > /dev/null; then
11606                         dflt=`./try`
11607                         case "$dflt" in
11608                         [1-4][1-4][1-4][1-4]|12345678|87654321)
11609                                 echo "(The test program ran ok.)"
11610                                 echo "byteorder=$dflt"
11611                                 xxx_prompt=n
11612                         ;;
11613                         ????|????????) echo "(The test program ran ok.)" ;;
11614                         *) echo "(The test program didn't run right for some reason.)" ;;
11615                         esac
11616                 else
11617                         dflt='4321'
11618                         cat <<'EOM'
11619 (I can't seem to compile the test program.  Guessing big-endian...)
11620 EOM
11621                 fi
11622                 case "$xxx_prompt" in
11623                 y)
11624                         rp="What is the order of bytes in a long?"
11625                         . ./myread
11626                         byteorder="$ans"
11627                         ;;
11628                 *)      byteorder=$dflt
11629                         ;;
11630                 esac
11631                 ;;
11632         esac
11633         $rm -f try.c try
11634         ;;
11635 esac
11636
11637
11638 : how do we catenate cpp tokens here?
11639 echo " "
11640 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11641 $cat >cpp_stuff.c <<'EOCP'
11642 #define RCAT(a,b)a/**/b
11643 #define ACAT(a,b)a ## b
11644 RCAT(Rei,ser)
11645 ACAT(Cir,cus)
11646 EOCP
11647 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
11648 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
11649         echo "Oh!  Smells like ANSI's been here." >&4
11650         echo "We can catify or stringify, separately or together!"
11651         cpp_stuff=42
11652 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
11653         echo "Ah, yes!  The good old days!" >&4
11654         echo "However, in the good old days we don't know how to stringify and"
11655         echo "catify at the same time."
11656         cpp_stuff=1
11657 else
11658         $cat >&4 <<EOM
11659 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
11660 to have to edit the values of CAT[2-5] in config.h...
11661 EOM
11662         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
11663 fi
11664 $rm -f cpp_stuff.*
11665
11666 : see if this is a db.h system
11667 set db.h i_db
11668 eval $inhdr
11669
11670 case "$i_db" in
11671 $define)
11672         : Check db version.
11673         echo " "
11674         echo "Checking Berkeley DB version ..." >&4
11675         $cat >try.c <<EOCP
11676 #$d_const HASCONST
11677 #ifndef HASCONST
11678 #define const
11679 #endif
11680 #include <sys/types.h>
11681 #include <stdio.h>
11682 #include <db.h>
11683 int main()
11684 {
11685 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
11686     int Major, Minor, Patch ;
11687     unsigned long Version ;
11688     (void)db_version(&Major, &Minor, &Patch) ;
11689     printf("You have Berkeley DB Version 2 or greater\n");
11690
11691     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
11692                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
11693     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
11694                 Major, Minor, Patch) ;
11695
11696     /* check that db.h & libdb are compatible */
11697     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
11698         printf("db.h and libdb are incompatible\n") ;
11699         exit(3);        
11700     }
11701
11702     printf("db.h and libdb are compatible\n") ;
11703
11704     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
11705                 + DB_VERSION_PATCH ;
11706
11707     /* needs to be >= 2.3.4 */
11708     if (Version < 2003004) {
11709     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
11710         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
11711         exit(2);        
11712     }
11713
11714     exit(0);
11715 #else
11716 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
11717     printf("You have Berkeley DB Version 1\n");
11718     exit(0);    /* DB version < 2: the coast is clear. */
11719 #else
11720     exit(1);    /* <db.h> not Berkeley DB? */
11721 #endif
11722 #endif
11723 }
11724 EOCP
11725         set try
11726         if eval $compile_ok && ./try; then
11727                 echo 'Looks OK.' >&4
11728         else
11729                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
11730                 i_db=$undef
11731                 case " $libs " in
11732                 *"-ldb "*)
11733                         : Remove db from list of libraries to use
11734                         echo "Removing unusable -ldb from library list" >&4
11735                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
11736                         shift
11737                         libs="$*"
11738                         echo "libs = $libs" >&4
11739                         ;;
11740                 esac
11741         fi
11742         $rm -f try.*
11743         ;;
11744 esac
11745
11746 case "$i_db" in
11747 define)
11748         : Check the return type needed for hash 
11749         echo " "
11750         echo "Checking return type needed for hash for Berkeley DB ..." >&4
11751         $cat >try.c <<EOCP
11752 #$d_const HASCONST
11753 #ifndef HASCONST
11754 #define const
11755 #endif
11756 #include <sys/types.h>
11757 #include <db.h>
11758
11759 #ifndef DB_VERSION_MAJOR
11760 u_int32_t hash_cb (ptr, size)
11761 const void *ptr;
11762 size_t size;
11763 {
11764 }
11765 HASHINFO info;
11766 int main()
11767 {
11768         info.hash = hash_cb;
11769 }
11770 #endif
11771 EOCP
11772         if $cc $ccflags -c try.c >try.out 2>&1 ; then
11773                 if $contains warning try.out >>/dev/null 2>&1 ; then
11774                         db_hashtype='int'
11775                 else
11776                         db_hashtype='u_int32_t'
11777                 fi
11778         else
11779                 : XXX Maybe we should just give up here.
11780                 db_hashtype=u_int32_t
11781                 $cat try.out >&4
11782                 echo "Help:  I can't seem to compile the db test program." >&4
11783                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
11784         fi
11785         $rm -f try.*
11786         echo "Your version of Berkeley DB uses $db_hashtype for hash."
11787         ;;
11788 *)      db_hashtype=u_int32_t
11789         ;;
11790 esac
11791 case "$i_db" in
11792 define)
11793         : Check the return type needed for prefix 
11794         echo " "
11795         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
11796         cat >try.c <<EOCP
11797 #$d_const HASCONST
11798 #ifndef HASCONST
11799 #define const
11800 #endif
11801 #include <sys/types.h>
11802 #include <db.h>
11803
11804 #ifndef DB_VERSION_MAJOR
11805 size_t prefix_cb (key1, key2)
11806 const DBT *key1;
11807 const DBT *key2;
11808 {
11809 }
11810 BTREEINFO info;
11811 int main()
11812 {
11813         info.prefix = prefix_cb;
11814 }
11815 #endif
11816 EOCP
11817         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
11818                 if $contains warning try.out >>/dev/null 2>&1 ; then
11819                         db_prefixtype='int'
11820                 else
11821                         db_prefixtype='size_t'
11822                 fi
11823         else
11824                 db_prefixtype='size_t'
11825                 : XXX Maybe we should just give up here.
11826                 $cat try.out >&4
11827                 echo "Help:  I can't seem to compile the db test program." >&4
11828                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
11829         fi
11830         $rm -f try.*
11831         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
11832         ;;
11833 *)      db_prefixtype='size_t'
11834         ;;
11835 esac
11836
11837 : check for void type
11838 echo " "
11839 echo "Checking to see how well your C compiler groks the void type..." >&4
11840 case "$voidflags" in
11841 '')
11842         $cat >try.c <<'EOCP'
11843 #if TRY & 1
11844 void sub() {
11845 #else
11846 sub() {
11847 #endif
11848         extern void moo();      /* function returning void */
11849         void (*goo)();          /* ptr to func returning void */
11850 #if TRY & 8
11851         void *hue;              /* generic ptr */
11852 #endif
11853 #if TRY & 2
11854         void (*foo[10])();
11855 #endif
11856
11857 #if TRY & 4
11858         if(goo == moo) {
11859                 exit(0);
11860         }
11861 #endif
11862         exit(0);
11863 }
11864 int main() { sub(); }
11865 EOCP
11866         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
11867                 voidflags=$defvoidused
11868         echo "Good.  It appears to support void to the level $package wants.">&4
11869                 if $contains warning .out >/dev/null 2>&1; then
11870                         echo "However, you might get some warnings that look like this:"
11871                         $cat .out
11872                 fi
11873         else
11874 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
11875                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
11876                         echo "It supports 1..."
11877                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
11878                                 echo "It also supports 2..."
11879                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
11880                                         voidflags=7
11881                                         echo "And it supports 4 but not 8 definitely."
11882                                 else
11883                                         echo "It doesn't support 4..."
11884                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
11885                                                 voidflags=11
11886                                                 echo "But it supports 8."
11887                                         else
11888                                                 voidflags=3
11889                                                 echo "Neither does it support 8."
11890                                         fi
11891                                 fi
11892                         else
11893                                 echo "It does not support 2..."
11894                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
11895                                         voidflags=13
11896                                         echo "But it supports 4 and 8."
11897                                 else
11898                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
11899                                                 voidflags=5
11900                                                 echo "And it supports 4 but has not heard about 8."
11901                                         else
11902                                                 echo "However it supports 8 but not 4."
11903                                         fi
11904                                 fi
11905                         fi
11906                 else
11907                         echo "There is no support at all for void."
11908                         voidflags=0
11909                 fi
11910         fi
11911 esac
11912 case "$voidflags" in
11913 "$defvoidused") ;;
11914 *)      $cat >&4 <<'EOM'
11915   Support flag bits are:
11916     1: basic void declarations.
11917     2: arrays of pointers to functions returning void.
11918     4: operations between pointers to and addresses of void functions.
11919     8: generic void pointers.
11920 EOM
11921         dflt="$voidflags";
11922         rp="Your void support flags add up to what?"
11923         . ./myread
11924         voidflags="$ans"
11925         ;;
11926 esac
11927 $rm -f try.* .out
11928
11929
11930 : How can we generate normalized random numbers ?
11931 echo " "
11932 echo "Looking for a random number function..." >&4
11933 case "$randfunc" in
11934 '')
11935         if set drand48 val -f; eval $csym; $val; then
11936                 dflt="drand48"
11937                 echo "Good, found drand48()." >&4
11938         elif set random val -f; eval $csym; $val; then
11939                 dflt="random"
11940                 echo "OK, found random()." >&4
11941         else
11942                 dflt="rand"
11943                 echo "Yick, looks like I have to use rand()." >&4
11944         fi
11945         echo " "
11946         ;;
11947 *)
11948         dflt="$randfunc"
11949         ;;
11950 esac
11951 cont=true
11952
11953 case "$ccflags" in
11954 *-Dmy_rand=*|*-Dmy_srand=*)
11955         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
11956         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
11957         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
11958         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
11959         ;;
11960 esac
11961
11962 while $test "$cont"; do
11963         rp="Use which function to generate random numbers?"
11964         . ./myread
11965         if $test "$ans" = "$dflt"; then
11966                 : null
11967         else
11968                 randbits=''
11969         fi
11970         randfunc="$ans"
11971         if set $ans val -f; eval $csym; $val; then
11972                 cont=''
11973         else
11974                 dflt=y
11975                 rp="I cannot find function $ans. Use that name anyway?"
11976                 . ./myread
11977                 dflt=rand
11978                 case "$ans" in
11979                         [yY]*) cont='';;
11980                 esac
11981         fi
11982         case "$cont" in
11983         '')
11984                 case "$randfunc" in
11985                 drand48)
11986                         drand01="drand48()"
11987                         seedfunc="srand48"
11988                         randbits=48
11989                         randseedtype=long
11990                         ;;
11991                 rand|random)
11992                         case "$randbits" in
11993                         '')
11994 echo "Checking to see how many bits your $randfunc() function produces..." >&4
11995                                 $cat >try.c <<EOCP
11996 #$i_unistd I_UNISTD
11997 #$i_stdlib I_STDLIB
11998 #include <stdio.h>
11999 #ifdef I_UNISTD
12000 #  include <unistd.h>
12001 #endif
12002 #ifdef I_STDLIB
12003 #  include <stdlib.h>
12004 #endif
12005 int main()
12006 {
12007         register int i;
12008         register unsigned long tmp;
12009         register unsigned long max = 0L;
12010
12011         for (i = 1000; i; i--) {
12012                 tmp = (unsigned long) $randfunc();
12013                 if (tmp > max) max = tmp;
12014         }
12015         for (i = 0; max; i++)
12016                 max /= 2;
12017         printf("%d\n",i);
12018 }
12019 EOCP
12020                                 set try
12021                                 if eval $compile_ok; then
12022                                         dflt=`try`
12023                                 else
12024                                         dflt='?'
12025                                         echo "(I can't seem to compile the test program...)"
12026                                 fi
12027                                 ;;
12028                         *)
12029                                 dflt="$randbits"
12030                                 ;;
12031                         esac
12032                         rp="How many bits does your $randfunc() function produce?"
12033                         . ./myread
12034                         randbits="$ans"
12035                         $rm -f try.c try
12036                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12037                         seedfunc="s$randfunc"
12038                         randseedtype=unsigned
12039                         ;;
12040                 *)
12041                         dflt="31"
12042                         rp="How many bits does your $randfunc() function produce?"
12043                         . ./myread
12044                         randbits="$ans"
12045                         seedfunc="s$randfunc"
12046                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12047                         if set $seedfunc val -f; eval $csym; $val; then
12048                                 echo "(Using $seedfunc() to seed random generator)"
12049                         else
12050                                 echo "(Warning: no $seedfunc() to seed random generator)"
12051                                 seedfunc=rand
12052                         fi
12053                         randseedtype=unsigned
12054                         ;;
12055                 esac
12056                 ;;
12057         esac
12058 done
12059
12060 echo " "
12061 echo "Determining whether or not we are on an EBCDIC system..." >&4
12062 $cat >tebcdic.c <<'EOM'
12063 int main()
12064 {
12065   if ('M'==0xd4) return 0;
12066   return 1;
12067 }
12068 EOM
12069
12070 val=$undef
12071 set tebcdic
12072 if eval $compile_ok; then
12073         if ./tebcdic; then
12074                 echo "You have EBCDIC." >&4
12075                 val="$define"
12076         else
12077                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12078         fi
12079 else
12080         echo "I'm unable to compile the test program." >&4
12081         echo "I'll assume ASCII or some ISO Latin." >&4
12082 fi
12083 $rm -f tebcdic.c tebcdic
12084 set ebcdic
12085 eval $setvar
12086
12087 echo " "
12088 $cat >&4 <<EOM
12089 Checking how to flush all pending stdio output...
12090 EOM
12091 # I only know how to find the first 32 possibly open files on SunOS.
12092 # See also hints/sunos_4_1.sh and util.c  --AD
12093 case "$osname" in
12094 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12095 esac
12096 $cat >>try.c <<EOCP
12097 #include <stdio.h>
12098 #$i_unistd I_UNISTD
12099 #ifdef I_UNISTD
12100 # include <unistd.h>
12101 #endif
12102 #$d_sysconf HAS_SYSCONF
12103 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12104 #ifdef HAS_STDIO_STREAM_ARRAY
12105 # define STDIO_STREAM_ARRAY $stdio_stream_array
12106 #endif
12107 int main() {
12108   FILE* p = fopen("try.out", "w");
12109 #ifdef TRY_FPUTC
12110   fputc('x', p);
12111 #else
12112 # ifdef TRY_FPRINTF
12113   fprintf(p, "x");
12114 # endif
12115 #endif
12116 #ifdef TRY_FFLUSH_NULL
12117   fflush(NULL);
12118 #endif
12119 #ifdef TRY_FFLUSH_ALL
12120   {
12121     long open_max = -1;
12122 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12123     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12124 # else
12125 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12126     open_max = sysconf(_SC_OPEN_MAX);
12127 #  else
12128 #   ifdef FOPEN_MAX
12129     open_max = FOPEN_MAX;
12130 #   else
12131 #    ifdef OPEN_MAX
12132     open_max = OPEN_MAX;
12133 #    else
12134 #     ifdef _NFILE
12135     open_max = _NFILE;
12136 #     endif
12137 #    endif
12138 #   endif
12139 #  endif
12140 # endif 
12141 # ifdef HAS_STDIO_STREAM_ARRAY
12142     if (open_max > 0) {
12143       long i;
12144       for (i = 0; i < open_max; i++)
12145             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12146                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12147                 STDIO_STREAM_ARRAY[i]._flag)
12148                 fflush(&STDIO_STREAM_ARRAY[i]);
12149     }   
12150   }
12151 # endif
12152 #endif
12153   _exit(42);
12154 }
12155 EOCP
12156 : first we have to find out how _not_ to flush
12157 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12158     output=''
12159     set try -DTRY_FPUTC
12160     if eval $compile; then
12161             $rm -f try.out
12162             ./try$exe_ext 2>/dev/null
12163             if $test ! -s try.out -a "X$?" = X42; then
12164                 output=-DTRY_FPUTC
12165             fi
12166     fi
12167     case "$output" in
12168     '')
12169             set try -DTRY_FPRINTF
12170             $rm -f try.out
12171             if eval $compile; then
12172                     $rm -f try.out
12173                     ./try$exe_ext 2>/dev/null
12174                     if $test ! -s try.out -a "X$?" = X42; then
12175                         output=-DTRY_FPRINTF
12176                     fi
12177             fi
12178         ;;
12179     esac
12180 fi
12181 : check for fflush NULL behaviour
12182 case "$fflushNULL" in
12183 '')     set try -DTRY_FFLUSH_NULL $output
12184         if eval $compile; then
12185                 $rm -f try.out
12186                 ./try$exe_ext 2>/dev/null
12187                 code="$?"
12188                 if $test -s try.out -a "X$code" = X42; then
12189                         fflushNULL="`$cat try.out`"
12190                 else
12191                         if $test "X$code" != X42; then
12192                                 $cat >&4 <<EOM
12193 (If this test failed, don't worry, we'll try another method shortly.)
12194 EOM
12195                         fi
12196                 fi
12197         fi
12198         $rm -f core try.core core.try.*
12199         case "$fflushNULL" in
12200         x)      $cat >&4 <<EOM
12201 Your fflush(NULL) works okay.
12202 EOM
12203                 fflushNULL="$define"
12204                 ;;
12205         '')     $cat >&4 <<EOM
12206 Your fflush(NULL) isn't working (contrary to ANSI C).
12207 EOM
12208                 fflushNULL="$undef"
12209                 ;;
12210         *)      $cat >&4 <<EOM
12211 Cannot figure out whether your fflush(NULL) works or not.
12212 I'm assuming it doesn't (contrary to ANSI C).
12213 EOM
12214                 fflushNULL="$undef"
12215                 ;;
12216         esac
12217         ;;
12218 $define|true|[yY]*)
12219         fflushNULL="$define"
12220         ;;
12221 *)
12222         fflushNULL="$undef"
12223         ;;
12224 esac
12225 : check explicit looping only if NULL did not work
12226 case "$fflushNULL" in
12227 "$undef")
12228         : check for fflush all behaviour
12229         case "$fflushall" in
12230         '')     set try -DTRY_FFLUSH_ALL $output
12231                 if eval $compile; then
12232                         $cat >&4 <<EOM
12233 (Now testing the other method--but note that also this may fail.)
12234 EOM
12235                         $rm -f try.out
12236                         ./try$exe_ext 2>/dev/null
12237                         if $test -s try.out -a "X$?" = X42; then
12238                                 fflushall="`$cat try.out`"
12239                         fi
12240                 fi
12241                 $rm -f core try.core core.try.*
12242                 case "$fflushall" in
12243                 x)      $cat >&4 <<EOM
12244 Whew. Flushing explicitly all the stdio streams works.
12245 EOM
12246                         fflushall="$define"
12247                         ;;
12248                 '')     $cat >&4 <<EOM
12249 Sigh. Flushing explicitly all the stdio streams doesn't work.
12250 EOM
12251                         fflushall="$undef"
12252                         ;;
12253                 *)      $cat >&4 <<EOM
12254 Cannot figure out whether flushing stdio streams explicitly works or not.
12255 I'm assuming it doesn't.
12256 EOM
12257                         fflushall="$undef"
12258                         ;;
12259                 esac
12260                 ;;
12261         "$define"|true|[yY]*)
12262                 fflushall="$define"
12263                 ;;
12264         *)
12265                 fflushall="$undef"
12266                 ;;
12267         esac
12268         ;;
12269 *)      fflushall="$undef"      
12270         ;;
12271 esac
12272 case "$fflushNULL$fflushall" in
12273 undefundef)
12274         $cat <<EOM
12275 I cannot figure out how to flush pending stdio output.
12276 EOM
12277         ;;
12278 esac
12279 $rm -f try.* try$exe_ext
12280
12281 : Store the full pathname to the ar program for use in the C program
12282 : Respect a hint or command line value for full_ar.
12283 case "$full_ar" in
12284 '') full_ar=$ar ;;
12285 esac
12286
12287 : Store the full pathname to the sed program for use in the C program
12288 full_sed=$sed
12289
12290 : see what type gids are declared as in the kernel
12291 echo " "
12292 echo "Looking for the type for group ids returned by getgid()."
12293 set gid_t gidtype xxx stdio.h sys/types.h
12294 eval $typedef
12295 case "$gidtype" in
12296 xxx)
12297         xxx=`./findhdr sys/user.h`
12298         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12299         case $1 in
12300         unsigned) dflt="$1 $2" ;;
12301         *) dflt="$1" ;;
12302         esac
12303         ;;
12304 *) dflt="$gidtype";;
12305 esac
12306 case "$gidtype" in
12307 gid_t) echo "gid_t found." ;;
12308 *)      rp="What is the type for group ids returned by getgid()?"
12309         . ./myread
12310         gidtype="$ans"
12311         ;;
12312 esac
12313
12314 echo " "
12315 case "$gidtype" in
12316 *_t) zzz="$gidtype"     ;;
12317 *)   zzz="gid"          ;;
12318 esac
12319 echo "Checking the size of $zzz..." >&4 
12320 cat > try.c <<EOCP
12321 #include <sys/types.h>
12322 #include <stdio.h>
12323 int main() {
12324     printf("%d\n", (int)sizeof($gidtype));
12325     exit(0);
12326 }
12327 EOCP
12328 set try
12329 if eval $compile_ok; then
12330         yyy=`./try`
12331         case "$yyy" in
12332         '')     gidsize=4
12333                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12334                 ;;
12335         *)      gidsize=$yyy
12336                 echo "Your $zzz size is $gidsize bytes."
12337                 ;;
12338         esac
12339 else
12340         gidsize=4
12341         echo "(I can't compile the test program--guessing $gidsize.)" >&4
12342 fi
12343
12344
12345 echo " "
12346 case "$gidtype" in
12347 *_t) zzz="$gidtype"     ;;
12348 *)   zzz="gid"          ;;
12349 esac
12350 echo "Checking the sign of $zzz..." >&4 
12351 cat > try.c <<EOCP
12352 #include <sys/types.h>
12353 #include <stdio.h>
12354 int main() {
12355         $gidtype foo = -1;
12356         if (foo < 0)
12357                 printf("-1\n");
12358         else
12359                 printf("1\n");
12360 }
12361 EOCP
12362 set try
12363 if eval $compile; then
12364         yyy=`./try`
12365         case "$yyy" in
12366         '')     gidsign=1
12367                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12368                 ;;
12369         *)      gidsign=$yyy
12370                 case "$gidsign" in
12371                  1) echo "Your $zzz is unsigned." ;;
12372                 -1) echo "Your $zzz is signed."   ;;
12373                 esac
12374                 ;;
12375         esac
12376 else
12377         gidsign=1
12378         echo "(I can't compile the test program--guessing unsigned.)" >&4
12379 fi
12380
12381
12382 echo " "
12383
12384 if $test X"$quadtype" != X; then
12385
12386 echo "Checking how to print 64-bit integers..." >&4
12387
12388 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12389         $cat >try.c <<'EOCP'
12390 #include <sys/types.h>
12391 #include <stdio.h>
12392 int main() {
12393   int q = 12345678901;
12394   printf("%ld\n", q);
12395 }
12396 EOCP
12397         set try
12398         if eval $compile; then
12399                 yyy=`./try$exe_ext`
12400                 case "$yyy" in
12401                 12345678901)
12402                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12403                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12404                         echo "We will use %d."
12405                         ;;
12406                 esac
12407         fi
12408 fi
12409
12410 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12411         $cat >try.c <<'EOCP'
12412 #include <sys/types.h>
12413 #include <stdio.h>
12414 int main() {
12415   long q = 12345678901;
12416   printf("%ld\n", q);
12417 }
12418 EOCP
12419         set try
12420         if eval $compile; then
12421                 yyy=`./try$exe_ext`
12422                 case "$yyy" in
12423                 12345678901)
12424                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12425                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12426                         echo "We will use %ld."
12427                         ;;
12428                 esac
12429         fi
12430 fi
12431
12432 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12433         $cat >try.c <<'EOCP'
12434 #include <sys/types.h>
12435 #include <inttypes.h>
12436 #include <stdio.h>
12437 int main() {
12438   int64_t q = 12345678901;
12439   printf("%" PRId64 "\n", q);
12440 }
12441 EOCP
12442         set try
12443         if eval $compile; then
12444                 yyy=`./try$exe_ext`
12445                 case "$yyy" in
12446                 12345678901)
12447                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12448                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12449                         echo "We will use the C9X style."
12450                         ;;
12451                 esac
12452         fi
12453 fi
12454
12455 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12456         $cat >try.c <<'EOCP'
12457 #include <sys/types.h>
12458 #include <stdio.h>
12459 int main() {
12460   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12461   printf("%lld\n", q);
12462 }
12463 EOCP
12464         set try
12465         if eval $compile; then
12466                 yyy=`./try$exe_ext`
12467                 case "$yyy" in
12468                 12345678901)
12469                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12470                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12471                         echo "We will use the %lld style."
12472                         ;;
12473                 esac
12474         fi
12475 fi
12476
12477 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12478         $cat >try.c <<EOCP
12479 #include <sys/types.h>
12480 #include <stdio.h>
12481 int main() {
12482   $quadtype q = 12345678901;
12483   printf("%Ld\n", q);
12484 }
12485 EOCP
12486         set try
12487         if eval $compile; then
12488                 yyy=`./try$exe_ext`
12489                 case "$yyy" in
12490                 12345678901)
12491                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12492                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12493                         echo "We will use %Ld."
12494                         ;;
12495                 esac
12496         fi
12497 fi
12498
12499 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12500         $cat >try.c <<EOCP
12501 #include <sys/types.h>
12502 #include <stdio.h>
12503 int main() {
12504   $quadtype q = 12345678901;
12505   printf("%qd\n", q);
12506 }
12507 EOCP
12508         set try
12509         if eval $compile; then
12510                 yyy=`./try$exe_ext`
12511                 case "$yyy" in
12512                 12345678901)
12513                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12514                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12515                         echo "We will use %qd."
12516                         ;;
12517                 esac
12518         fi
12519 fi
12520
12521 if $test X"$sPRId64" = X; then
12522         echo "Cannot figure out how to print 64-bit integers." >&4
12523 fi
12524
12525 $rm -f try try.*
12526
12527 fi
12528
12529 case "$sPRId64" in
12530 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
12531         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
12532         ;;
12533 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
12534         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
12535         ;;
12536 esac
12537
12538
12539 echo " "
12540 $echo "Checking the format strings to be used for Perl's internal types..." >&4
12541
12542 if $test X"$ivsize" = X8; then
12543         ivdformat="$sPRId64"
12544         uvuformat="$sPRIu64"
12545         uvoformat="$sPRIo64"
12546         uvxformat="$sPRIx64"
12547 else
12548         if $test X"$ivsize" = X"$longsize"; then
12549                 ivdformat='"ld"'
12550                 uvuformat='"lu"'
12551                 uvoformat='"lo"'
12552                 uvxformat='"lx"'
12553         else
12554                 if $test X"$ivsize" = X"$intsize"; then
12555                         ivdformat='"d"'
12556                         uvuformat='"u"'
12557                         uvoformat='"o"'
12558                         uvxformat='"x"'
12559                 else
12560                         : far out
12561                         if $test X"$ivsize" = X"$shortsize"; then
12562                                 ivdformat='"hd"'
12563                                 uvuformat='"hu"'
12564                                 uvoformat='"ho"'
12565                                 uvxformat='"hx"'
12566                         fi
12567                 fi
12568         fi
12569 fi
12570
12571 case "$ivdformat" in
12572 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
12573     exit 1
12574     ;;
12575 esac
12576
12577
12578 echo " "
12579 $echo "Checking the format string to be used for gids..." >&4
12580
12581 case "$gidsign" in
12582 -1)     if $test X"$gidsize" = X"$ivsize"; then
12583                 gidformat="$ivdformat"
12584         else
12585                 if $test X"$gidsize" = X"$longsize"; then
12586                         gidformat='"ld"'
12587                 else
12588                         if $test X"$gidsize" = X"$intsize"; then
12589                                 gidformat='"d"'
12590                         else
12591                                 if $test X"$gidsize" = X"$shortsize"; then
12592                                         gidformat='"hd"'
12593                                 fi
12594                         fi
12595                 fi
12596         fi
12597         ;;
12598 *)      if $test X"$gidsize" = X"$uvsize"; then
12599                 gidformat="$uvuformat"
12600         else
12601                 if $test X"$gidsize" = X"$longsize"; then
12602                         gidformat='"lu"'
12603                 else
12604                         if $test X"$gidsize" = X"$intsize"; then
12605                                 gidformat='"u"'
12606                         else
12607                                 if $test X"$gidsize" = X"$shortsize"; then
12608                                         gidformat='"hu"'
12609                                 fi
12610                         fi
12611                 fi
12612         fi
12613         ;;
12614 esac
12615
12616 : see if getgroups exists
12617 set getgroups d_getgrps
12618 eval $inlibc
12619
12620 : see if setgroups exists
12621 set setgroups d_setgrps
12622 eval $inlibc
12623
12624
12625 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
12626 echo " "
12627 case "$d_getgrps$d_setgrps" in
12628 *define*)
12629         case "$groupstype" in
12630         '') dflt="$gidtype" ;;
12631         *)  dflt="$groupstype" ;;
12632         esac
12633         $cat <<EOM
12634 What type of pointer is the second argument to getgroups() and setgroups()?
12635 Usually this is the same as group ids, $gidtype, but not always.
12636
12637 EOM
12638         rp='What type pointer is the second argument to getgroups() and setgroups()?'
12639         . ./myread
12640         groupstype="$ans"
12641         ;;
12642 *)  groupstype="$gidtype";;
12643 esac
12644
12645 echo " "
12646 echo "Checking if your $make program sets \$(MAKE)..." >&4
12647 case "$make_set_make" in
12648 '')
12649         $sed 's/^X //' > testmake.mak << 'EOF'
12650 Xall:
12651 X       @echo 'maketemp="$(MAKE)"'
12652 EOF
12653         case "`$make -f testmake.mak 2>/dev/null`" in
12654         *maketemp=*) make_set_make='#' ;;
12655         *)      make_set_make="MAKE=$make" ;;
12656         esac
12657         $rm -f testmake.mak
12658         ;;
12659 esac
12660 case "$make_set_make" in
12661 '#') echo "Yup, it does.";;
12662 *) echo "Nope, it doesn't.";;
12663 esac
12664
12665 : see what type is used for mode_t
12666 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
12667 set mode_t modetype int stdio.h sys/types.h
12668 eval $typedef_ask
12669
12670 : define a fucntion to check prototypes
12671 $cat > protochk <<EOSH
12672 $startsh
12673 cc="$cc"
12674 optimize="$optimize"
12675 ccflags="$ccflags"
12676 prototype="$prototype"
12677 define="$define"
12678 rm=$rm
12679 EOSH
12680
12681 $cat >> protochk <<'EOSH'
12682
12683 $rm -f try.c
12684 foo="$1"
12685 shift
12686 while test $# -ge 2; do
12687         case "$1" in
12688                 $define) echo "#include <$2>" >> try.c ;;
12689                 literal) echo "$2" >> try.c ;;
12690         esac
12691     shift 2
12692 done
12693 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
12694 cat >> try.c <<'EOCP'
12695 #ifdef CAN_PROTOTYPE
12696 #define _(args) args
12697 #else
12698 #define _(args) ()
12699 #endif
12700 EOCP
12701 echo "$foo" >> try.c
12702 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
12703 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
12704 status=$?
12705 $rm -f try.[co]
12706 exit $status
12707 EOSH
12708 chmod +x protochk
12709 $eunicefix protochk
12710
12711 : see what type is used for size_t
12712 rp="What is the type used for the length parameter for string functions?"
12713 set size_t sizetype 'unsigned int' stdio.h sys/types.h
12714 eval $typedef_ask
12715
12716 : check for type of arguments to gethostbyaddr. 
12717 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
12718         case "$d_gethbyaddr" in
12719         $define)
12720                 $cat <<EOM
12721
12722 Checking to see what type of arguments are accepted by gethostbyaddr().
12723 EOM
12724                 hdrs="$define sys/types.h
12725                         $d_socket sys/socket.h 
12726                         $i_niin netinet/in.h 
12727                         $i_netdb netdb.h
12728                         $i_unistd unistd.h"
12729                 : The first arg can 'char *' or 'void *'
12730                 : The second arg is some of integral type
12731                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
12732                         for yyy in size_t long int; do
12733                                 case "$netdb_host_type" in
12734                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
12735                                         if ./protochk "$try" $hdrs; then
12736                                                 echo "Your system accepts $xxx for the first arg."
12737                                                 echo "...and $yyy for the second arg."
12738                                                 netdb_host_type="$xxx"
12739                                                 netdb_hlen_type="$yyy"
12740                                         fi
12741                                         ;;
12742                                 esac
12743                         done
12744                 done
12745                 : In case none of those worked, prompt the user.
12746                 case "$netdb_host_type" in
12747                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
12748                         dflt='char *'
12749                         . ./myread
12750                         netdb_host_type=$ans
12751                         rp='What is the type for the 2nd argument to gethostbyaddr?'
12752                         dflt="$sizetype"
12753                         . ./myread
12754                         netdb_hlen_type=$ans
12755                         ;;
12756                 esac
12757                 ;;
12758         *)      : no gethostbyaddr, so pick harmless defaults
12759                 netdb_host_type='char *'
12760                 netdb_hlen_type="$sizetype"
12761                 ;;
12762         esac
12763         # Remove the "const" if needed. -- but then we'll have a 
12764         # prototype clash!
12765         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
12766 fi
12767
12768 : check for type of argument to gethostbyname. 
12769 if test "X$netdb_name_type" = X ; then
12770         case "$d_gethbyname" in
12771         $define)
12772                 $cat <<EOM
12773
12774 Checking to see what type of argument is accepted by gethostbyname().
12775 EOM
12776                 hdrs="$define sys/types.h
12777                         $d_socket sys/socket.h 
12778                         $i_niin netinet/in.h 
12779                         $i_netdb netdb.h
12780                         $i_unistd unistd.h"
12781                 for xxx in "const char *" "char *"; do
12782                         case "$netdb_name_type" in
12783                         '')     try="extern struct hostent *gethostbyname($xxx);"
12784                                 if ./protochk "$try" $hdrs; then
12785                                         echo "Your system accepts $xxx."
12786                                         netdb_name_type="$xxx"
12787                                 fi
12788                                 ;;
12789                         esac
12790                 done
12791                 : In case none of those worked, prompt the user.
12792                 case "$netdb_name_type" in
12793                 '')     rp='What is the type for the 1st argument to gethostbyname?'
12794                         dflt='char *'
12795                         . ./myread
12796                         netdb_name_type=$ans
12797                         ;;
12798                 esac
12799                 ;;
12800         *)      : no gethostbyname, so pick harmless default
12801                 netdb_name_type='char *'
12802                 ;;
12803         esac
12804 fi
12805
12806 : check for type of 1st argument to getnetbyaddr. 
12807 if test "X$netdb_net_type" = X ; then
12808         case "$d_getnbyaddr" in
12809         $define)
12810                 $cat <<EOM
12811
12812 Checking to see what type of 1st argument is accepted by getnetbyaddr().
12813 EOM
12814                 hdrs="$define sys/types.h
12815                         $d_socket sys/socket.h 
12816                         $i_niin netinet/in.h 
12817                         $i_netdb netdb.h
12818                         $i_unistd unistd.h"
12819                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
12820                         case "$netdb_net_type" in
12821                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
12822                                 if ./protochk "$try" $hdrs; then
12823                                         echo "Your system accepts $xxx."
12824                                         netdb_net_type="$xxx"
12825                                 fi
12826                                 ;;
12827                         esac
12828                 done
12829                 : In case none of those worked, prompt the user.
12830                 case "$netdb_net_type" in
12831                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
12832                         dflt='long'
12833                         . ./myread
12834                         netdb_net_type=$ans
12835                         ;;
12836                 esac
12837                 ;;
12838         *)      : no getnetbyaddr, so pick harmless default
12839                 netdb_net_type='long'
12840                 ;;
12841         esac
12842 fi
12843 : locate the preferred pager for this system
12844 case "$pager" in
12845 '')
12846         dflt=''
12847         case "$pg" in
12848         /*) dflt=$pg;;
12849         esac
12850         case "$more" in
12851         /*) dflt=$more;;
12852         esac
12853         case "$less" in
12854         /*) dflt=$less;;
12855         esac
12856         case "$dflt" in
12857         '') dflt=/usr/ucb/more;;
12858         esac
12859         ;;
12860 *) dflt="$pager";;
12861 esac
12862 echo " "
12863 fn=f/
12864 rp='What pager is used on your system?'
12865 . ./getfile
12866 pager="$ans"
12867
12868 : see what type pids are declared as in the kernel
12869 rp="What is the type of process ids on this system?"
12870 set pid_t pidtype int stdio.h sys/types.h
12871 eval $typedef_ask
12872
12873 : Find earliest binary compatible site_perl subdirectory perl can use.
12874 case "$bincompat5005" in
12875 "$define") xs_apiversion='5.005' ;;
12876 *) xs_apiversion=$version ;;   # The current site_perl version.
12877 esac
12878 : Find earliest pure perl site_perl subdirectory perl can use.
12879 : The versioned directories started at 5.005.
12880 pm_apiversion='5.005'
12881
12882 : check for length of pointer
12883 echo " "
12884 case "$ptrsize" in
12885 '')
12886         $echo $n "Checking to see how big your pointers are...$c" >&4
12887         if test "$voidflags" -gt 7; then
12888                 echo '#define VOID_PTR char *' > try.c
12889         else
12890                 echo '#define VOID_PTR void *' > try.c
12891         fi
12892         $cat >>try.c <<'EOCP'
12893 #include <stdio.h>
12894 int main()
12895 {
12896     printf("%d\n", (int)sizeof(VOID_PTR));
12897     exit(0);
12898 }
12899 EOCP
12900         set try
12901         if eval $compile_ok; then
12902                 ptrsize=`./try`
12903                 $echo " $ptrsize bytes." >&4
12904         else
12905                 dflt='4'
12906                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
12907                 rp="What is the size of a pointer (in bytes)?"
12908                 . ./myread
12909                 ptrsize="$ans"
12910         fi
12911         ;;
12912 esac
12913 $rm -f try.c try
12914
12915 : see if ar generates random libraries by itself
12916 echo " "
12917 echo "Checking how to generate random libraries on your machine..." >&4
12918 echo 'int bar1() { return bar2(); }' > bar1.c
12919 echo 'int bar2() { return 2; }' > bar2.c
12920 $cat > foo.c <<'EOP'
12921 int main() { printf("%d\n", bar1()); exit(0); }
12922 EOP
12923 $cc $ccflags -c bar1.c >/dev/null 2>&1
12924 $cc $ccflags -c bar2.c >/dev/null 2>&1
12925 $cc $ccflags -c foo.c >/dev/null 2>&1
12926 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
12927 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12928         ./foobar >/dev/null 2>&1; then
12929         echo "$ar appears to generate random libraries itself."
12930         orderlib=false
12931         ranlib=":"
12932 elif $ar ts bar$_a >/dev/null 2>&1 &&
12933         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12934         ./foobar >/dev/null 2>&1; then
12935                 echo "a table of contents needs to be added with '$ar ts'."
12936                 orderlib=false
12937                 ranlib="$ar ts"
12938 else
12939         case "$ranlib" in
12940         :) ranlib='';;
12941         '')
12942                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
12943                 $test -f $ranlib || ranlib=''
12944                 ;;
12945         esac
12946         if $test -n "$ranlib"; then
12947                 echo "your system has '$ranlib'; we'll use that."
12948                 orderlib=false
12949         else
12950                 echo "your system doesn't seem to support random libraries"
12951                 echo "so we'll use lorder and tsort to order the libraries."
12952                 orderlib=true
12953                 ranlib=":"
12954         fi
12955 fi
12956 $rm -f foo* bar* 
12957
12958 : check for type of arguments to select. 
12959 case "$selecttype" in
12960 '') case "$d_select" in
12961         $define)
12962                 echo " "
12963                 $cat <<EOM
12964 Checking to see what type of arguments are accepted by select().
12965 EOM
12966                 hdrs="$define sys/types.h
12967                         $i_systime sys/time.h 
12968                         $i_sysselct sys/select.h
12969                         $d_socket sys/socket.h"
12970                 : The first arg can be int, unsigned, or size_t
12971                 : The last arg may or may not be 'const'
12972                 val=''
12973                 : void pointer has been seen but using that
12974                 : breaks the selectminbits test
12975                 for xxx in 'fd_set *' 'int *'; do
12976                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
12977                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
12978                                         case "$val" in
12979                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
12980                                                 if ./protochk "$try" $hdrs; then
12981                                                         echo "Your system accepts $xxx."
12982                                                         val="$xxx"
12983                                                 fi
12984                                                 ;;
12985                                         esac
12986                                 done
12987                         done
12988                 done
12989                 case "$val" in
12990                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
12991                         case "$d_fd_set" in
12992                                 $define) dflt="fd_set *" ;;
12993                                 *)              dflt="int *" ;;
12994                         esac
12995                         . ./myread
12996                         val=$ans
12997                         ;;
12998                 esac
12999                 selecttype="$val"
13000                 ;;
13001         *)      : no select, so pick a harmless default
13002                 selecttype='int *'
13003                 ;;
13004         esac
13005         ;;
13006 esac
13007
13008 : check for the select 'width'
13009 case "$selectminbits" in
13010 '') case "$d_select" in
13011         $define)
13012                 $cat <<EOM
13013
13014 Checking to see on how many bits at a time your select() operates...
13015 EOM
13016                 $cat >try.c <<EOCP
13017 #include <sys/types.h>
13018 #$i_time I_TIME
13019 #$i_systime I_SYS_TIME
13020 #$i_systimek I_SYS_TIME_KERNEL
13021 #ifdef I_TIME
13022 #   include <time.h>
13023 #endif
13024 #ifdef I_SYS_TIME
13025 #   ifdef I_SYS_TIME_KERNEL
13026 #       define KERNEL
13027 #   endif
13028 #   include <sys/time.h>
13029 #   ifdef I_SYS_TIME_KERNEL
13030 #       undef KERNEL
13031 #   endif
13032 #endif
13033 #$i_sysselct I_SYS_SELECT
13034 #ifdef I_SYS_SELECT
13035 #include <sys/select.h>
13036 #endif
13037 #$d_socket HAS_SOCKET
13038 #ifdef HAS_SOCKET
13039 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13040 #endif
13041 #include <stdio.h>
13042 $selecttype b;
13043 #define S sizeof(*(b))
13044 #define MINBITS 64
13045 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13046 #define NBITS  (NBYTES * 8)
13047 int main() {
13048     char s[NBYTES];
13049     struct timeval t;
13050     int i;
13051     FILE* fp;
13052     int fd;
13053
13054     fclose(stdin);
13055     fp = fopen("try.c", "r");
13056     if (fp == 0)
13057       exit(1);
13058     fd = fileno(fp);
13059     if (fd < 0)
13060       exit(2);
13061     b = ($selecttype)s;
13062     for (i = 0; i < NBITS; i++)
13063         FD_SET(i, b);
13064     t.tv_sec  = 0;
13065     t.tv_usec = 0;
13066     select(fd + 1, b, 0, 0, &t);
13067     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13068     printf("%d\n", i + 1);
13069     return 0;
13070 }
13071 EOCP
13072                 set try
13073                 if eval $compile_ok; then
13074                         selectminbits=`./try`
13075                         case "$selectminbits" in
13076                         '')     cat >&4 <<EOM
13077 Cannot figure out on how many bits at a time your select() operates.
13078 I'll play safe and guess it is 32 bits.
13079 EOM
13080                                 selectminbits=32
13081                                 bits="32 bits"
13082                                 ;;
13083                         1)      bits="1 bit" ;;
13084                         *)      bits="$selectminbits bits" ;;
13085                         esac
13086                         echo "Your select() operates on $bits at a time." >&4
13087                 else
13088                         rp='What is the minimum number of bits your select() operates on?'
13089                         case "$byteorder" in
13090                         1234|12345678)  dflt=32 ;;
13091                         *)              dflt=1  ;;
13092                         esac
13093                         . ./myread
13094                         val=$ans
13095                         selectminbits="$val"
13096                 fi
13097                 $rm -f try.* try
13098                 ;;
13099         *)      : no select, so pick a harmless default
13100                 selectminbits='32'
13101                 ;;
13102         esac
13103         ;;
13104 esac
13105
13106 : Trace out the files included by signal.h, then look for SIGxxx names.
13107 : Remove SIGARRAYSIZE used by HPUX.
13108 : Remove SIGSTKSIZE used by Linux.
13109 : Remove SIGSTKSZ used by Posix.
13110 : Remove SIGTYP void lines used by OS2.
13111 : Some cpps, like os390, dont give the file name anywhere
13112 if [ "X$fieldn" = X ]; then
13113         : Just make some guesses.  We check them later.
13114         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13115 else
13116         xxx=`echo '#include <signal.h>' |
13117         $cppstdin $cppminus $cppflags 2>/dev/null |
13118         $grep '^[       ]*#.*include' | 
13119         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13120 fi
13121 : Check this list of files to be sure we have parsed the cpp output ok.
13122 : This will also avoid potentially non-existent files, such 
13123 : as ../foo/bar.h
13124 xxxfiles=''
13125 for xx in $xxx /dev/null ; do
13126         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13127 done
13128 : If we have found no files, at least try signal.h
13129 case "$xxxfiles" in
13130 '')     xxxfiles=`./findhdr signal.h` ;;
13131 esac
13132 xxx=`awk '
13133 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13134         print substr($2, 4, 20)
13135 }
13136 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13137         print substr($3, 4, 20)
13138 }' $xxxfiles`
13139 : Append some common names just in case the awk scan failed.
13140 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13141 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13142 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13143 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13144 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13145
13146 : generate a few handy files for later
13147 $cat > signal.c <<'EOCP'
13148 #include <sys/types.h>
13149 #include <signal.h>
13150 #include <stdio.h>
13151 int main() {
13152
13153 /* Strange style to avoid deeply-nested #if/#else/#endif */
13154 #ifndef NSIG
13155 #  ifdef _NSIG
13156 #    define NSIG (_NSIG)
13157 #  endif
13158 #endif
13159
13160 #ifndef NSIG
13161 #  ifdef SIGMAX
13162 #    define NSIG (SIGMAX+1)
13163 #  endif
13164 #endif
13165
13166 #ifndef NSIG
13167 #  ifdef SIG_MAX
13168 #    define NSIG (SIG_MAX+1)
13169 #  endif
13170 #endif
13171
13172 #ifndef NSIG
13173 #  ifdef MAXSIG
13174 #    define NSIG (MAXSIG+1)
13175 #  endif
13176 #endif
13177
13178 #ifndef NSIG
13179 #  ifdef MAX_SIG
13180 #    define NSIG (MAX_SIG+1)
13181 #  endif
13182 #endif
13183
13184 #ifndef NSIG
13185 #  ifdef SIGARRAYSIZE
13186 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13187 #  endif
13188 #endif
13189
13190 #ifndef NSIG
13191 #  ifdef _sys_nsig
13192 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13193 #  endif
13194 #endif
13195
13196 /* Default to some arbitrary number that's big enough to get most
13197    of the common signals.
13198 */
13199 #ifndef NSIG
13200 #    define NSIG 50
13201 #endif
13202
13203 printf("NSIG %d\n", NSIG);
13204
13205 #ifndef JUST_NSIG
13206
13207 EOCP
13208
13209 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13210 {
13211         printf "#ifdef SIG"; printf $1; printf "\n"
13212         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13213         printf $1; printf ");\n"
13214         printf "#endif\n"
13215 }
13216 END {
13217         printf "#endif /* JUST_NSIG */\n";
13218         printf "exit(0);\n}\n";
13219 }
13220 ' >>signal.c
13221 $cat >signal.awk <<'EOP'
13222 BEGIN { ndups = 0 }
13223 $1 ~ /^NSIG$/ { nsig = $2 }
13224 ($1 !~ /^NSIG$/) && (NF == 2) {
13225     if ($2 > maxsig) { maxsig = $2 }
13226     if (sig_name[$2]) {
13227         dup_name[ndups] = $1
13228         dup_num[ndups] = $2
13229         ndups++ 
13230     }
13231     else {
13232         sig_name[$2] = $1
13233         sig_num[$2] = $2
13234     }
13235 }
13236 END { 
13237     if (nsig == 0) {
13238         nsig = maxsig + 1
13239     }
13240     printf("NSIG %d\n", nsig);
13241     for (n = 1; n < nsig; n++) {
13242         if (sig_name[n]) {
13243             printf("%s %d\n", sig_name[n], sig_num[n])
13244         }
13245         else {
13246             printf("NUM%d %d\n", n, n) 
13247         }
13248     }
13249     for (n = 0; n < ndups; n++) {
13250         printf("%s %d\n", dup_name[n], dup_num[n])
13251     }
13252 }
13253 EOP
13254 $cat >signal_cmd <<EOS
13255 $startsh
13256 if $test -s signal.lst; then
13257     echo "Using your existing signal.lst file"
13258         exit 0
13259 fi
13260 xxx="$xxx"
13261 EOS
13262 $cat >>signal_cmd <<'EOS'
13263
13264 set signal
13265 if eval $compile_ok; then
13266         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13267 else
13268         echo "(I can't seem be able to compile the whole test program)" >&4
13269         echo "(I'll try it in little pieces.)" >&4
13270         set signal -DJUST_NSIG
13271         if eval $compile_ok; then
13272                 ./signal$_exe > signal.nsg
13273                 $cat signal.nsg
13274         else
13275                 echo "I can't seem to figure out how many signals you have." >&4
13276                 echo "Guessing 50." >&4
13277                 echo 'NSIG 50' > signal.nsg
13278         fi
13279         : Now look at all the signal names, one at a time.
13280         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13281                 $cat > signal.c <<EOCP
13282 #include <sys/types.h>
13283 #include <signal.h>
13284 #include <stdio.h>
13285 int main() {
13286 printf("$xx %d\n", SIG${xx});
13287 return 0;
13288 }
13289 EOCP
13290                 set signal
13291                 if eval $compile; then
13292                         echo "SIG${xx} found."
13293                         ./signal$_exe  >> signal.ls1
13294                 else
13295                         echo "SIG${xx} NOT found."
13296                 fi
13297         done
13298         if $test -s signal.ls1; then
13299                 $cat signal.nsg signal.ls1 |
13300                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13301         fi
13302
13303 fi
13304 if $test -s signal.lst; then
13305         :
13306 else
13307         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13308         echo 'kill -l' >signal
13309         set X `csh -f <signal`
13310         $rm -f signal
13311         shift
13312         case $# in
13313         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13314         esac
13315         echo $@ | $tr ' ' $trnl | \
13316             $awk '{ printf "%s %d\n", $1, ++s; }
13317                   END { printf "NSIG %d\n", ++s }' >signal.lst
13318 fi
13319 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13320 EOS
13321 chmod a+x signal_cmd
13322 $eunicefix signal_cmd
13323
13324 : generate list of signal names
13325 echo " "
13326 case "$sig_name_init" in
13327 '') doinit=yes ;;
13328 *)  case "$sig_num_init" in
13329     ''|*,*) doinit=yes ;;
13330     esac ;;
13331 esac
13332 case "$doinit" in
13333 yes)
13334         echo "Generating a list of signal names and numbers..." >&4
13335         . ./signal_cmd
13336         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13337         sig_name=`$awk 'BEGIN { printf "ZERO " }
13338                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13339         sig_num=`$awk  'BEGIN { printf "0 " }
13340                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13341         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
13342                              !/^NSIG/   { printf "\"%s\", ", $1 }
13343                              END        { printf "0\n" }' signal.lst`
13344         sig_num_init=`$awk  'BEGIN      { printf "0, " }
13345                              !/^NSIG/   { printf "%d, ", $2}
13346                              END        { printf "0\n"}' signal.lst`
13347         ;;
13348 esac
13349 echo "The following $sig_count signals are available:"
13350 echo " "
13351 echo $sig_name | $awk \
13352 'BEGIN { linelen = 0 }
13353 {
13354         for (i = 1; i <= NF; i++) {
13355                 name = "SIG" $i " "
13356                 linelen = linelen + length(name)
13357                 if (linelen > 70) {
13358                         printf "\n"
13359                         linelen = length(name)
13360                 }
13361                 printf "%s", name
13362         }
13363         printf "\n"
13364 }'
13365 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
13366
13367 : see what type is used for signed size_t
13368 set ssize_t ssizetype int stdio.h sys/types.h
13369 eval $typedef
13370 dflt="$ssizetype"
13371 $cat > ssize.c <<EOM
13372 #include <stdio.h>
13373 #include <sys/types.h>
13374 #define Size_t $sizetype
13375 #define SSize_t $dflt
13376 int main()
13377 {
13378         if (sizeof(Size_t) == sizeof(SSize_t))
13379                 printf("$dflt\n");
13380         else if (sizeof(Size_t) == sizeof(int))
13381                 printf("int\n");
13382         else 
13383                 printf("long\n");
13384         exit(0);
13385 }
13386 EOM
13387 echo " "
13388 set ssize
13389 if eval $compile_ok && ./ssize > /dev/null; then
13390         ssizetype=`./ssize`
13391         echo "I'll be using $ssizetype for functions returning a byte count." >&4
13392 else
13393         $cat >&4 <<EOM
13394 Help! I can't compile and run the ssize_t test program: please enlighten me!
13395 (This is probably a misconfiguration in your system or libraries, and
13396 you really ought to fix it.  Still, I'll try anyway.)
13397
13398 I need a type that is the same size as $sizetype, but is guaranteed to
13399 be signed.  Common values are ssize_t, int and long.
13400
13401 EOM
13402         rp="What signed type is the same size as $sizetype?"
13403         . ./myread
13404         ssizetype="$ans"
13405 fi
13406 $rm -f ssize ssize.*
13407
13408 : see what type of char stdio uses.
13409 echo " "
13410 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13411         echo "Your stdio uses unsigned chars." >&4
13412         stdchar="unsigned char"
13413 else
13414         echo "Your stdio uses signed chars." >&4
13415         stdchar="char"
13416 fi
13417
13418 : see if time exists
13419 echo " "
13420 if test "X$d_time" = X -o X"$timetype" = X; then
13421     if set time val -f d_time; eval $csym; $val; then
13422                 echo 'time() found.' >&4
13423                 val="$define"
13424                 rp="What is the type returned by time() on this system?"
13425                 set time_t timetype long stdio.h sys/types.h
13426                 eval $typedef_ask
13427     else
13428                 echo 'time() not found, hope that will do.' >&4
13429                 val="$undef"
13430                 timetype='int';
13431     fi
13432     set d_time
13433     eval $setvar
13434 fi
13435
13436 : see what type uids are declared as in the kernel
13437 echo " "
13438 echo "Looking for the type for user ids returned by getuid()."
13439 set uid_t uidtype xxx stdio.h sys/types.h
13440 eval $typedef
13441 case "$uidtype" in
13442 xxx)
13443         xxx=`./findhdr sys/user.h`
13444         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13445         case $1 in
13446         unsigned) dflt="$1 $2" ;;
13447         *) dflt="$1" ;;
13448         esac
13449         ;;
13450 *) dflt="$uidtype";;
13451 esac
13452 case "$uidtype" in
13453 uid_t)  echo "uid_t found." ;;
13454 *)      rp="What is the type for user ids returned by getuid()?"
13455         . ./myread
13456         uidtype="$ans"
13457         ;;
13458 esac
13459
13460 echo " "
13461 case "$uidtype" in
13462 *_t) zzz="$uidtype"     ;;
13463 *)   zzz="uid"          ;;
13464 esac
13465 echo "Checking the size of $zzz..." >&4 
13466 cat > try.c <<EOCP
13467 #include <sys/types.h>
13468 #include <stdio.h>
13469 int main() {
13470     printf("%d\n", (int)sizeof($uidtype));
13471     exit(0);
13472 }
13473 EOCP
13474 set try
13475 if eval $compile_ok; then
13476         yyy=`./try`
13477         case "$yyy" in
13478         '')     uidsize=4
13479                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
13480                 ;;
13481         *)      uidsize=$yyy
13482                 echo "Your $zzz size is $uidsize bytes."
13483                 ;;
13484         esac
13485 else
13486         uidsize=4
13487         echo "(I can't compile the test program--guessing $uidsize.)" >&4
13488 fi
13489
13490 echo " "
13491 case "$uidtype" in
13492 *_t) zzz="$uidtype"     ;;
13493 *)   zzz="uid"          ;;
13494 esac
13495 echo "Checking the sign of $zzz..." >&4
13496 cat > try.c <<EOCP
13497 #include <sys/types.h>
13498 #include <stdio.h>
13499 int main() {
13500         $uidtype foo = -1;
13501         if (foo < 0)
13502                 printf("-1\n");
13503         else
13504                 printf("1\n");
13505 }
13506 EOCP
13507 set try
13508 if eval $compile; then
13509         yyy=`./try`
13510         case "$yyy" in
13511         '')     uidsign=1
13512                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13513                 ;;
13514         *)      uidsign=$yyy
13515                 case "$uidsign" in
13516                  1) echo "Your $zzz is unsigned." ;;
13517                 -1) echo "Your $zzz is signed."   ;;
13518                 esac
13519                 ;;
13520         esac
13521 else
13522         uidsign=1
13523         echo "(I can't compile the test program--guessing unsigned.)" >&4
13524 fi
13525
13526
13527
13528 echo " "
13529 $echo "Checking the format string to be used for uids..." >&4
13530
13531 case "$uidsign" in
13532 -1)     if $test X"$uidsize" = X"$ivsize"; then
13533                 uidformat="$ivdformat"
13534         else
13535                 if $test X"$uidsize" = X"$longsize"; then
13536                         uidformat='"ld"'
13537                 else
13538                         if $test X"$uidsize" = X"$intsize"; then
13539                                 uidformat='"d"'
13540                         else
13541                                 if $test X"$uidsize" = X"$shortsize"; then
13542                                         uidformat='"hd"'
13543                                 fi
13544                         fi
13545                 fi
13546         fi
13547         ;;
13548 *)      if $test X"$uidsize" = X"$uvsize"; then
13549                 uidformat="$uvuformat"
13550         else
13551                 if $test X"$uidsize" = X"$longsize"; then
13552                         uidformat='"lu"'
13553                 else
13554                         if $test X"$uidsize" = X"$intsize"; then
13555                                 uidformat='"u"'
13556                         else
13557                                 if $test X"$uidsize" = X"$shortsize"; then
13558                                         uidformat='"hu"'
13559                                 fi
13560                         fi
13561                 fi
13562         fi
13563         ;;
13564 esac
13565
13566 : see if dbm.h is available
13567 : see if dbmclose exists
13568 set dbmclose d_dbmclose
13569 eval $inlibc
13570
13571 case "$d_dbmclose" in
13572 $define)
13573         set dbm.h i_dbm
13574         eval $inhdr
13575         case "$i_dbm" in
13576         $define)
13577                 val="$undef"
13578                 set i_rpcsvcdbm
13579                 eval $setvar
13580                 ;;
13581         *)      set rpcsvc/dbm.h i_rpcsvcdbm
13582                 eval $inhdr
13583                 ;;
13584         esac
13585         ;;
13586 *)      echo "We won't be including <dbm.h>"
13587         val="$undef"
13588         set i_dbm
13589         eval $setvar
13590         val="$undef"
13591         set i_rpcsvcdbm
13592         eval $setvar
13593         ;;
13594 esac
13595
13596 : see if this is a sys/file.h system
13597 val=''
13598 set sys/file.h val
13599 eval $inhdr
13600
13601 : do we need to include sys/file.h ?
13602 case "$val" in
13603 "$define")
13604         echo " "
13605         if $h_sysfile; then
13606                 val="$define"
13607                 echo "We'll be including <sys/file.h>." >&4
13608         else
13609                 val="$undef"
13610                 echo "We won't be including <sys/file.h>." >&4
13611         fi
13612         ;;
13613 *)
13614         h_sysfile=false
13615         ;;
13616 esac
13617 set i_sysfile
13618 eval $setvar
13619
13620 : see if fcntl.h is there
13621 val=''
13622 set fcntl.h val
13623 eval $inhdr
13624
13625 : see if we can include fcntl.h
13626 case "$val" in
13627 "$define")
13628         echo " "
13629         if $h_fcntl; then
13630                 val="$define"
13631                 echo "We'll be including <fcntl.h>." >&4
13632         else
13633                 val="$undef"
13634                 if $h_sysfile; then
13635         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
13636                 else
13637                         echo "We won't be including <fcntl.h>." >&4
13638                 fi
13639         fi
13640         ;;
13641 *)
13642         h_fcntl=false
13643         val="$undef"
13644         ;;
13645 esac
13646 set i_fcntl
13647 eval $setvar
13648
13649 : see if this is a iconv.h system
13650 set iconv.h i_iconv
13651 eval $inhdr
13652
13653 : see if locale.h is available
13654 set locale.h i_locale
13655 eval $inhdr
13656
13657 : see if mach cthreads are available
13658 if test "X$usethreads" = "X$define"; then
13659         set mach/cthreads.h i_machcthr
13660         eval $inhdr
13661 else
13662         i_machcthr="$undef"
13663 fi
13664
13665
13666
13667 : see if this is a math.h system
13668 set math.h i_math
13669 eval $inhdr
13670
13671 : see if this is a mntent.h system
13672 set mntent.h i_mntent
13673 eval $inhdr
13674
13675 : see if ndbm.h is available
13676 set ndbm.h t_ndbm
13677 eval $inhdr
13678 case "$t_ndbm" in
13679 $define)
13680         : see if dbm_open exists
13681         set dbm_open d_dbm_open
13682         eval $inlibc
13683         case "$d_dbm_open" in
13684         $undef)
13685                 t_ndbm="$undef"
13686                 echo "We won't be including <ndbm.h>"
13687                 ;;
13688         esac
13689         ;;
13690 esac
13691 val="$t_ndbm"
13692 set i_ndbm
13693 eval $setvar
13694
13695 : see if net/errno.h is available
13696 val=''
13697 set net/errno.h val
13698 eval $inhdr
13699
13700 : Unfortunately, it causes problems on some systems.  Arrgh.
13701 case "$val" in
13702 $define)
13703         cat > try.c <<'EOM'
13704 #include <stdio.h>
13705 #include <errno.h>
13706 #include <net/errno.h>
13707 int func()
13708 {
13709         return ENOTSOCK;
13710 }
13711 EOM
13712         if $cc $ccflags -c try.c >/dev/null 2>&1; then
13713                 echo "We'll be including <net/errno.h>." >&4
13714         else
13715                 echo "We won't be including <net/errno.h>." >&4
13716                 val="$undef"
13717         fi
13718         $rm -f try.* try
13719         ;;
13720 esac
13721 set i_neterrno
13722 eval $setvar
13723
13724 : see if netinet/tcp.h is available
13725 set netinet/tcp.h i_netinettcp
13726 eval $inhdr
13727
13728 : see if this is a poll.h system
13729 set poll.h i_poll
13730 eval $inhdr
13731
13732 echo " "
13733 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
13734 $cat <<'EOSH' > Cppsym.know
13735 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
13736 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
13737 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
13738 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
13739 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
13740 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
13741 bull c cadmus clipper CMU COFF COMPILER_VERSION
13742 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
13743 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
13744 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
13745 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
13746 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
13747 H3050R H3050RX hbullx20 hcx host_mips
13748 hp200 hp300 hp700 HP700 hp800 hp9000
13749 hp9000s200 hp9000s300 hp9000s400 hp9000s500
13750 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
13751 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
13752 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
13753 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
13754 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
13755 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
13756 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
13757 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
13758 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
13759 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
13760 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
13761 MATH_HAS_NO_SIDE_EFFECTS
13762 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
13763 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
13764 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
13765 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
13766 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
13767 NetBSD news1500 news1700 news1800 news1900 news3700
13768 news700 news800 news900 NeXT NLS ns16000 ns32000
13769 ns32016 ns32332 ns32k nsc32000
13770 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
13771 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
13772 pc532 pdp11 PGC PIC plexus PORTAR posix
13773 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
13774 POSIX_C_SOURCE POSIX_SOURCE POWER
13775 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
13776 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
13777 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
13778 sony sony_news sonyrisc sparc sparclite spectrum
13779 stardent stdc STDC_EXT stratos sun sun3 sun386
13780 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
13781 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
13782 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
13783 sysV68 sysV88 Tek4132 Tek4300 titan
13784 tower tower32 tower32_200 tower32_600 tower32_700
13785 tower32_800 tower32_850 tss
13786 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
13787 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
13788 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
13789 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
13790 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
13791 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
13792 z8000
13793 EOSH
13794 # Maybe put other stuff here too.
13795 cat <<EOSH >>Cppsym.know
13796 $osname
13797 EOSH
13798 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
13799 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
13800 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
13801 $rm -f Cppsym.a Cppsym.b
13802 cat <<EOSH > Cppsym
13803 $startsh
13804 if $test \$# -gt 0; then
13805     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
13806     if $test -s Cppsym.got; then
13807         $rm -f Cppsym.got
13808         exit 0
13809     fi
13810     $rm -f Cppsym.got
13811     exit 1
13812 else
13813     $tr " " "$trnl" | ./Cppsym.try
13814     exit 0
13815 fi
13816 EOSH
13817 chmod +x Cppsym
13818 $eunicefix Cppsym
13819 cat <<EOSH > Cppsym.try
13820 $startsh
13821 cat <<'EOCP' > try.c
13822 #include <stdio.h>
13823 int main() {
13824 EOCP
13825 $awk \\
13826 EOSH
13827 cat <<'EOSH' >> Cppsym.try
13828 'length($1) > 0 {
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     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
13831     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
13832     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
13833 }'       >> try.c
13834 echo '}' >> try.c
13835 EOSH
13836 cat <<EOSH >> Cppsym.try
13837 cc="$cc"
13838 optimize="$optimize"
13839 ccflags="$ccflags"
13840 ldflags="$ldflags"
13841 libs="$libs"
13842 exe_ext="$exe_ext"
13843 $cc $optimize $ccflags $ldflags -o try try.c $libs && ./try$exe_ext
13844 EOSH
13845 chmod +x Cppsym.try
13846 $eunicefix Cppsym.try
13847 ./Cppsym < Cppsym.know > Cppsym.true
13848 : now check the C compiler for additional symbols
13849 postprocess_cc_v=''
13850 case "$osname" in
13851 aix) postprocess_cc_v="|$tr , ' '" ;;
13852 esac
13853 $cat >ccsym <<EOS
13854 $startsh
13855 $cat >tmp.c <<EOF
13856 extern int foo;
13857 EOF
13858 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
13859 do
13860         case "\$i" in
13861         -D*) echo "\$i" | $sed 's/^-D//';;
13862         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
13863         esac
13864 done
13865 $rm -f try.c
13866 EOS
13867 postprocess_cc_v=''
13868 chmod +x ccsym
13869 $eunicefix ccsym
13870 ./ccsym > ccsym1.raw
13871 if $test -s ccsym1.raw; then
13872        $sort ccsym1.raw | $uniq >ccsym.raw
13873 else
13874        mv ccsym1.raw ccsym.raw
13875 fi
13876
13877 $awk '/\=/ { print $0; next }
13878         { print $0"=1" }' ccsym.raw >ccsym.list
13879 $awk '/\=/ { print $0; next }
13880         { print $0"=1" }' Cppsym.true >ccsym.true
13881 $comm -13 ccsym.true ccsym.list >ccsym.own
13882 $comm -12 ccsym.true ccsym.list >ccsym.com
13883 $comm -23 ccsym.true ccsym.list >ccsym.cpp
13884 also=''
13885 if $test -z ccsym.raw; then
13886         echo "Your C compiler doesn't seem to define any symbols!" >&4
13887         echo " "
13888         echo "However, your C preprocessor defines the following symbols:"
13889         $cat Cppsym.true
13890         ccsymbols=''
13891         cppsymbols=`$cat Cppsym.true`
13892         cppsymbols=`echo $cppsymbols`
13893         cppccsymbols="$cppsymbols"
13894 else
13895         if $test -s ccsym.com; then
13896                 echo "Your C compiler and pre-processor define these symbols:"
13897                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
13898                 also='also '
13899                 symbols='ones'
13900                 cppccsymbols=`$cat ccsym.com`
13901                 cppccsymbols=`echo $cppccsymbols`
13902                 $test "$silent" || sleep 1
13903         fi
13904         if $test -s ccsym.cpp; then
13905                 $test "$also" && echo " "
13906                 echo "Your C pre-processor ${also}defines the following symbols:"
13907                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
13908                 also='further '
13909                 cppsymbols=`$cat ccsym.cpp`
13910                 cppsymbols=`echo $cppsymbols`
13911                 $test "$silent" || sleep 1
13912         fi
13913         if $test -s ccsym.own; then
13914                 $test "$also" && echo " "
13915                 echo "Your C compiler ${also}defines the following cpp symbols:"
13916                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
13917                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
13918                 ccsymbols=`$cat ccsym.own`
13919                 ccsymbols=`echo $ccsymbols`
13920                 $test "$silent" || sleep 1
13921         fi
13922 fi
13923 $rm -f ccsym*
13924
13925 : see if this is a termio system
13926 val="$undef"
13927 val2="$undef"
13928 val3="$undef"
13929 if $test `./findhdr termios.h`; then
13930         set tcsetattr i_termios
13931         eval $inlibc
13932         val3="$i_termios"
13933 fi
13934 echo " "
13935 case "$val3" in
13936 "$define") echo "You have POSIX termios.h... good!" >&4;;
13937 *) if ./Cppsym pyr; then
13938                 case "`/bin/universe`" in
13939                 ucb) if $test `./findhdr sgtty.h`; then
13940                                 val2="$define"
13941                                 echo "<sgtty.h> found." >&4
13942                         else
13943                                 echo "System is pyramid with BSD universe."
13944                                 echo "<sgtty.h> not found--you could have problems." >&4
13945                         fi;;
13946                 *) if $test `./findhdr termio.h`; then
13947                                 val="$define"
13948                                 echo "<termio.h> found." >&4
13949                         else
13950                                 echo "System is pyramid with USG universe."
13951                                 echo "<termio.h> not found--you could have problems." >&4
13952                         fi;;
13953                 esac
13954         elif ./usg; then
13955                 if $test `./findhdr termio.h`; then
13956                         echo "<termio.h> found." >&4
13957                         val="$define"
13958                 elif $test `./findhdr sgtty.h`; then
13959                         echo "<sgtty.h> found." >&4
13960                         val2="$define"
13961                 else
13962 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
13963                 fi
13964         else
13965                 if $test `./findhdr sgtty.h`; then
13966                         echo "<sgtty.h> found." >&4
13967                         val2="$define"
13968                 elif $test `./findhdr termio.h`; then
13969                         echo "<termio.h> found." >&4
13970                         val="$define"
13971                 else
13972 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
13973                 fi
13974         fi;;
13975 esac
13976 set i_termio; eval $setvar
13977 val=$val2; set i_sgtty; eval $setvar
13978 val=$val3; set i_termios; eval $setvar
13979
13980 : see if this is a shadow.h system
13981 set shadow.h i_shadow
13982 eval $inhdr
13983
13984 : see if this is a socks.h system
13985 set socks.h i_socks
13986 eval $inhdr
13987
13988 : see if stdarg is available
13989 echo " "
13990 if $test `./findhdr stdarg.h`; then
13991         echo "<stdarg.h> found." >&4
13992         valstd="$define"
13993 else
13994         echo "<stdarg.h> NOT found." >&4
13995         valstd="$undef"
13996 fi
13997
13998 : see if varags is available
13999 echo " "
14000 if $test `./findhdr varargs.h`; then
14001         echo "<varargs.h> found." >&4
14002 else
14003         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14004 fi
14005
14006 : set up the varargs testing programs
14007 $cat > varargs.c <<EOP
14008 #ifdef I_STDARG
14009 #include <stdarg.h>
14010 #endif
14011 #ifdef I_VARARGS
14012 #include <varargs.h>
14013 #endif
14014
14015 #ifdef I_STDARG
14016 int f(char *p, ...)
14017 #else
14018 int f(va_alist)
14019 va_dcl
14020 #endif
14021 {
14022         va_list ap;
14023 #ifndef I_STDARG
14024         char *p;
14025 #endif
14026 #ifdef I_STDARG
14027         va_start(ap,p);
14028 #else
14029         va_start(ap);
14030         p = va_arg(ap, char *);
14031 #endif
14032         va_end(ap);
14033 }
14034 EOP
14035 $cat > varargs <<EOP
14036 $startsh
14037 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14038         echo "true"
14039 else
14040         echo "false"
14041 fi
14042 $rm -f varargs$_o
14043 EOP
14044 chmod +x varargs
14045
14046 : now check which varargs header should be included
14047 echo " "
14048 i_varhdr=''
14049 case "$valstd" in
14050 "$define")
14051         if `./varargs I_STDARG`; then
14052                 val='stdarg.h'
14053         elif `./varargs I_VARARGS`; then
14054                 val='varargs.h'
14055         fi
14056         ;;
14057 *)
14058         if `./varargs I_VARARGS`; then
14059                 val='varargs.h'
14060         fi
14061         ;;
14062 esac
14063 case "$val" in
14064 '')
14065 echo "I could not find the definition for va_dcl... You have problems..." >&4
14066         val="$undef"; set i_stdarg; eval $setvar
14067         val="$undef"; set i_varargs; eval $setvar
14068         ;;
14069 *) 
14070         set i_varhdr
14071         eval $setvar
14072         case "$i_varhdr" in
14073         stdarg.h)
14074                 val="$define"; set i_stdarg; eval $setvar
14075                 val="$undef"; set i_varargs; eval $setvar
14076                 ;;
14077         varargs.h)
14078                 val="$undef"; set i_stdarg; eval $setvar
14079                 val="$define"; set i_varargs; eval $setvar
14080                 ;;
14081         esac
14082         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14083 esac
14084 $rm -f varargs*
14085
14086 : see if stddef is available
14087 set stddef.h i_stddef
14088 eval $inhdr
14089
14090 : see if sys/access.h is available
14091 set sys/access.h i_sysaccess
14092 eval $inhdr
14093
14094 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14095 set sys/filio.h i_sysfilio
14096 eval $inhdr
14097 echo " "
14098 if $test `./findhdr sys/ioctl.h`; then
14099         val="$define"
14100         echo '<sys/ioctl.h> found.' >&4
14101 else
14102         val="$undef"
14103         if $test $i_sysfilio = "$define"; then
14104             echo '<sys/ioctl.h> NOT found.' >&4
14105         else
14106                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14107                 $test $i_termio = "$define" && xxx="termio.h"
14108                 $test $i_termios = "$define" && xxx="termios.h"
14109 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14110         fi
14111 fi
14112 set i_sysioctl
14113 eval $setvar
14114
14115
14116 : see if this is a syslog.h system
14117 set syslog.h i_syslog
14118 eval $inhdr
14119
14120
14121 : see if this is a sys/mode.h system
14122 set sys/mode.h i_sysmode
14123 eval $inhdr
14124
14125 : see if sys/resource.h has to be included
14126 set sys/resource.h i_sysresrc
14127 eval $inhdr
14128
14129 : see if sys/security.h is available
14130 set sys/security.h i_syssecrt
14131 eval $inhdr
14132
14133 : see if this is a sys/statvfs.h system
14134 set sys/statvfs.h i_sysstatvfs
14135 eval $inhdr
14136
14137 : see if this is a sys/uio.h system
14138 set sys/uio.h i_sysuio
14139 eval $inhdr
14140
14141 : see if this is a sys/un.h system
14142 set sys/un.h i_sysun
14143 eval $inhdr
14144
14145
14146 : see if this is a sys/utsname.h system
14147 set sys/utsname.h i_sysutsname
14148 eval $inhdr
14149
14150 : see if this is a syswait system
14151 set sys/wait.h i_syswait
14152 eval $inhdr
14153
14154 : see if this is a ustat.h system
14155 set ustat.h i_ustat
14156 eval $inhdr
14157
14158 : see if this is an utime system
14159 set utime.h i_utime
14160 eval $inhdr
14161
14162 : see if this is a values.h system
14163 set values.h i_values
14164 eval $inhdr
14165
14166 : see if this is a vfork system
14167 case "$d_vfork" in
14168 "$define")
14169         set vfork.h i_vfork
14170         eval $inhdr
14171         ;;
14172 *)
14173         i_vfork="$undef"
14174         ;;
14175 esac
14176
14177 : see if gdbm.h is available
14178 set gdbm.h t_gdbm
14179 eval $inhdr
14180 case "$t_gdbm" in
14181 $define)
14182         : see if gdbm_open exists
14183         set gdbm_open d_gdbm_open
14184         eval $inlibc
14185         case "$d_gdbm_open" in
14186         $undef)
14187                 t_gdbm="$undef"
14188                 echo "We won't be including <gdbm.h>"
14189                 ;;
14190         esac
14191         ;;
14192 esac
14193 val="$t_gdbm"
14194 set i_gdbm
14195 eval $setvar
14196
14197 echo " "
14198 echo "Looking for extensions..." >&4
14199 : If we are using the old config.sh, known_extensions may contain
14200 : old or inaccurate or duplicate values.
14201 known_extensions=''
14202 nonxs_extensions=''
14203 : We do not use find because it might not be available.
14204 : We do not just use MANIFEST because the user may have dropped
14205 : some additional extensions into the source tree and expect them
14206 : to be built.
14207
14208 : Function to recursively find available extensions, ignoring DynaLoader
14209 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14210 find_extensions='
14211     for xxx in *; do
14212        case "$xxx" in
14213            DynaLoader|dynaload) ;;
14214            *)
14215            if $test -f $xxx/$xxx.xs; then
14216                known_extensions="$known_extensions $1$xxx";
14217            elif $test -f $xxx/Makefile.PL; then
14218                nonxs_extensions="$nonxs_extensions $1$xxx";
14219            else
14220                if $test -d $xxx -a $# -lt 10; then
14221                    set $1$xxx/ $*;
14222                    cd $xxx;
14223                    eval $find_extensions;
14224                    cd ..;
14225                    shift;
14226                fi;
14227            fi
14228            ;;
14229        esac;
14230     done'
14231 tdir=`pwd`
14232 cd $rsrc/ext
14233 set X
14234 shift
14235 eval $find_extensions
14236 set X $nonxs_extensions
14237 shift
14238 nonxs_extensions="$*"
14239 set X $known_extensions
14240 shift
14241 known_extensions="$*"
14242 cd $tdir
14243
14244 : Now see which are supported on this system.
14245 avail_ext=''
14246 for xxx in $known_extensions ; do
14247         case "$xxx" in
14248         DB_File|db_file)
14249                 case "$i_db" in
14250                 $define) avail_ext="$avail_ext $xxx" ;;
14251                 esac
14252                 ;;
14253         GDBM_File|gdbm_fil)
14254                 case "$i_gdbm" in 
14255                 $define) avail_ext="$avail_ext $xxx" ;;
14256                 esac
14257                 ;;
14258         NDBM_File|ndbm_fil)
14259                 case "$i_ndbm" in
14260                 $define)
14261                     case "$osname-$use64bits" in
14262                     hpux-define)
14263                         case "$libs" in
14264                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14265                         esac
14266                         ;;
14267                     *) avail_ext="$avail_ext $xxx" ;;
14268                     esac
14269                     ;;
14270                 esac
14271                 ;;
14272         ODBM_File|odbm_fil) 
14273                 case "${i_dbm}${i_rpcsvcdbm}" in
14274                 *"${define}"*)
14275                     case "$osname-$use64bits" in
14276                     hpux-define)
14277                         case "$libs" in
14278                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14279                         esac
14280                         ;;
14281                     *) avail_ext="$avail_ext $xxx" ;;
14282                     esac
14283                     ;;
14284                 esac
14285                 ;;
14286         POSIX|posix)
14287                 case "$useposix" in
14288                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14289                 esac
14290                 ;;
14291         Opcode|opcode)
14292                 case "$useopcode" in
14293                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14294                 esac
14295                 ;;
14296         Socket|socket)
14297                 case "$d_socket" in 
14298                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14299                 esac
14300                 ;;
14301         Thread|thread)
14302                 case "$usethreads" in 
14303                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14304                 esac
14305                 ;;
14306         IPC/SysV|ipc/sysv)
14307                 : XXX Do we need a useipcsysv variable here
14308                 case "${d_msg}${d_sem}${d_shm}" in 
14309                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14310                 esac
14311                 ;;
14312         *)      avail_ext="$avail_ext $xxx"
14313                 ;;
14314         esac
14315 done
14316
14317 set X $avail_ext
14318 shift
14319 avail_ext="$*"
14320
14321 : Now see which nonxs extensions are supported on this system.
14322 : For now assume all are.
14323 nonxs_ext=''
14324 for xxx in $nonxs_extensions ; do
14325         case "$xxx" in
14326         *)      nonxs_ext="$nonxs_ext $xxx"
14327                 ;;
14328         esac
14329 done
14330
14331 set X $nonxs_ext
14332 shift
14333 nonxs_ext="$*"
14334
14335 case $usedl in
14336 $define)
14337         $cat <<EOM
14338 A number of extensions are supplied with $package.  You may choose to
14339 compile these extensions for dynamic loading (the default), compile
14340 them into the $package executable (static loading), or not include
14341 them at all.  Answer "none" to include no extensions.
14342 Note that DynaLoader is always built and need not be mentioned here.
14343
14344 EOM
14345         case "$dynamic_ext" in
14346         '') dflt="$avail_ext" ;;
14347         *)      dflt="$dynamic_ext"
14348                 # Perhaps we are reusing an old out-of-date config.sh.
14349                 case "$hint" in
14350                 previous)
14351                         if test X"$dynamic_ext" != X"$avail_ext"; then
14352                                 $cat <<EOM
14353 NOTICE:  Your previous config.sh list may be incorrect. 
14354 The extensions now available to you are 
14355         ${avail_ext}
14356 but the default list from your previous config.sh is
14357         ${dynamic_ext} 
14358
14359 EOM
14360                         fi
14361                         ;;
14362                 esac
14363                 ;;
14364         esac
14365         case "$dflt" in
14366         '')     dflt=none;;
14367         esac
14368         rp="What extensions do you wish to load dynamically?"
14369         . ./myread
14370         case "$ans" in
14371         none) dynamic_ext=' ' ;;
14372         *) dynamic_ext="$ans" ;;
14373         esac
14374
14375         case "$static_ext" in
14376         '')
14377                 : Exclude those already listed in dynamic linking
14378                 dflt=''
14379                 for xxx in $avail_ext; do
14380                         case " $dynamic_ext " in
14381                         *" $xxx "*) ;;
14382                         *) dflt="$dflt $xxx" ;;
14383                         esac
14384                 done
14385                 set X $dflt
14386                 shift
14387                 dflt="$*"
14388                 ;;
14389         *)  dflt="$static_ext" 
14390                 ;;
14391         esac
14392
14393         case "$dflt" in
14394         '')     dflt=none;;
14395         esac
14396         rp="What extensions do you wish to load statically?"
14397         . ./myread
14398         case "$ans" in
14399         none) static_ext=' ' ;;
14400         *) static_ext="$ans" ;;
14401         esac
14402         ;;
14403 *)
14404         $cat <<EOM
14405 A number of extensions are supplied with $package.  Answer "none" 
14406 to include no extensions. 
14407 Note that DynaLoader is always built and need not be mentioned here.
14408
14409 EOM
14410         case "$static_ext" in
14411         '') dflt="$avail_ext" ;;
14412         *)      dflt="$static_ext"
14413                 # Perhaps we are reusing an old out-of-date config.sh.
14414                 case "$hint" in
14415                 previous)
14416                         if test X"$static_ext" != X"$avail_ext"; then
14417                                 $cat <<EOM
14418 NOTICE:  Your previous config.sh list may be incorrect. 
14419 The extensions now available to you are 
14420         ${avail_ext}
14421 but the default list from your previous config.sh is
14422         ${static_ext} 
14423
14424 EOM
14425                         fi
14426                         ;;
14427                 esac
14428                 ;;
14429         esac
14430         : Exclude those that are not xs extensions
14431         case "$dflt" in
14432         '')     dflt=none;;
14433         esac
14434         rp="What extensions do you wish to include?"
14435         . ./myread
14436         case "$ans" in
14437         none) static_ext=' ' ;;
14438         *) static_ext="$ans" ;;
14439         esac
14440         ;;
14441 esac
14442
14443 set X $dynamic_ext $static_ext $nonxs_ext
14444 shift
14445 extensions="$*"
14446
14447 : Remove build directory name from cppstdin so it can be used from
14448 : either the present location or the final installed location.
14449 echo " "
14450 : Get out of the UU directory to get correct path name.
14451 cd ..
14452 case "$cppstdin" in
14453 `pwd`/cppstdin)
14454         echo "Stripping down cppstdin path name"
14455         cppstdin=cppstdin
14456         ;;
14457 esac
14458 cd UU
14459
14460 : end of configuration questions
14461 echo " "
14462 echo "End of configuration questions."
14463 echo " "
14464
14465 : back to where it started
14466 if test -d ../UU; then
14467         cd ..
14468 fi
14469
14470 : configuration may be patched via a 'config.over' file
14471 if $test -f config.over; then
14472         echo " "
14473         dflt=y
14474         rp='I see a config.over file.  Do you wish to load it?'
14475         . UU/myread
14476         case "$ans" in
14477         n*) echo "OK, I'll ignore it.";;
14478         *)      . ./config.over
14479                 echo "Configuration override changes have been loaded."
14480                 ;;
14481         esac
14482 fi
14483
14484 : in case they want portability, strip down executable paths
14485 case "$d_portable" in
14486 "$define")
14487         echo " "
14488         echo "Stripping down executable paths..." >&4
14489         for file in $loclist $trylist; do
14490                 eval temp=\$$file
14491                 eval $file=`basename $temp`
14492         done
14493         ;;
14494 esac
14495
14496 : create config.sh file
14497 echo " "
14498 echo "Creating config.sh..." >&4
14499 $spitshell <<EOT >config.sh
14500 $startsh
14501 #
14502 # This file was produced by running the Configure script. It holds all the
14503 # definitions figured out by Configure. Should you modify one of these values,
14504 # do not forget to propagate your changes by running "Configure -der". You may
14505 # instead choose to run each of the .SH files by yourself, or "Configure -S".
14506 #
14507
14508 # Package name      : $package
14509 # Source directory  : $src
14510 # Configuration time: $cf_time
14511 # Configured by     : $cf_by
14512 # Target system     : $myuname
14513
14514 Author='$Author'
14515 Date='$Date'
14516 Header='$Header'
14517 Id='$Id'
14518 Locker='$Locker'
14519 Log='$Log'
14520 Mcc='$Mcc'
14521 RCSfile='$RCSfile'
14522 Revision='$Revision'
14523 Source='$Source'
14524 State='$State'
14525 _a='$_a'
14526 _exe='$_exe'
14527 _o='$_o'
14528 afs='$afs'
14529 alignbytes='$alignbytes'
14530 ansi2knr='$ansi2knr'
14531 aphostname='$aphostname'
14532 api_revision='$api_revision'
14533 api_subversion='$api_subversion'
14534 api_version='$api_version'
14535 api_versionstring='$api_versionstring'
14536 ar='$ar'
14537 archlib='$archlib'
14538 archlibexp='$archlibexp'
14539 archname64='$archname64'
14540 archname='$archname'
14541 archobjs='$archobjs'
14542 awk='$awk'
14543 baserev='$baserev'
14544 bash='$bash'
14545 bin='$bin'
14546 bincompat5005='$bincompat5005'
14547 binexp='$binexp'
14548 bison='$bison'
14549 byacc='$byacc'
14550 byteorder='$byteorder'
14551 c='$c'
14552 castflags='$castflags'
14553 cat='$cat'
14554 cc='$cc'
14555 cccdlflags='$cccdlflags'
14556 ccdlflags='$ccdlflags'
14557 ccflags='$ccflags'
14558 ccsymbols='$ccsymbols'
14559 cf_by='$cf_by'
14560 cf_email='$cf_email'
14561 cf_time='$cf_time'
14562 charsize='$charsize'
14563 chgrp='$chgrp'
14564 chmod='$chmod'
14565 chown='$chown'
14566 clocktype='$clocktype'
14567 comm='$comm'
14568 compress='$compress'
14569 contains='$contains'
14570 cp='$cp'
14571 cpio='$cpio'
14572 cpp='$cpp'
14573 cpp_stuff='$cpp_stuff'
14574 cppccsymbols='$cppccsymbols'
14575 cppflags='$cppflags'
14576 cpplast='$cpplast'
14577 cppminus='$cppminus'
14578 cpprun='$cpprun'
14579 cppstdin='$cppstdin'
14580 cppsymbols='$cppsymbols'
14581 crosscompile='$crosscompile'
14582 cryptlib='$cryptlib'
14583 csh='$csh'
14584 d_Gconvert='$d_Gconvert'
14585 d_PRIEldbl='$d_PRIEldbl'
14586 d_PRIFldbl='$d_PRIFldbl'
14587 d_PRIGldbl='$d_PRIGldbl'
14588 d_PRIX64='$d_PRIX64'
14589 d_PRId64='$d_PRId64'
14590 d_PRIeldbl='$d_PRIeldbl'
14591 d_PRIfldbl='$d_PRIfldbl'
14592 d_PRIgldbl='$d_PRIgldbl'
14593 d_PRIi64='$d_PRIi64'
14594 d_PRIo64='$d_PRIo64'
14595 d_PRIu64='$d_PRIu64'
14596 d_PRIx64='$d_PRIx64'
14597 d_access='$d_access'
14598 d_accessx='$d_accessx'
14599 d_alarm='$d_alarm'
14600 d_archlib='$d_archlib'
14601 d_atolf='$d_atolf'
14602 d_atoll='$d_atoll'
14603 d_attribut='$d_attribut'
14604 d_bcmp='$d_bcmp'
14605 d_bcopy='$d_bcopy'
14606 d_bincompat5005='$d_bincompat5005'
14607 d_bsd='$d_bsd'
14608 d_bsdgetpgrp='$d_bsdgetpgrp'
14609 d_bsdsetpgrp='$d_bsdsetpgrp'
14610 d_bzero='$d_bzero'
14611 d_casti32='$d_casti32'
14612 d_castneg='$d_castneg'
14613 d_charvspr='$d_charvspr'
14614 d_chown='$d_chown'
14615 d_chroot='$d_chroot'
14616 d_chsize='$d_chsize'
14617 d_closedir='$d_closedir'
14618 d_const='$d_const'
14619 d_crypt='$d_crypt'
14620 d_csh='$d_csh'
14621 d_cuserid='$d_cuserid'
14622 d_dbl_dig='$d_dbl_dig'
14623 d_difftime='$d_difftime'
14624 d_dirnamlen='$d_dirnamlen'
14625 d_dlerror='$d_dlerror'
14626 d_dlopen='$d_dlopen'
14627 d_dlsymun='$d_dlsymun'
14628 d_dosuid='$d_dosuid'
14629 d_drand48proto='$d_drand48proto'
14630 d_dup2='$d_dup2'
14631 d_eaccess='$d_eaccess'
14632 d_endgrent='$d_endgrent'
14633 d_endhent='$d_endhent'
14634 d_endnent='$d_endnent'
14635 d_endpent='$d_endpent'
14636 d_endpwent='$d_endpwent'
14637 d_endsent='$d_endsent'
14638 d_endspent='$d_endspent'
14639 d_eofnblk='$d_eofnblk'
14640 d_eunice='$d_eunice'
14641 d_fchmod='$d_fchmod'
14642 d_fchown='$d_fchown'
14643 d_fcntl='$d_fcntl'
14644 d_fd_macros='$d_fd_macros'
14645 d_fd_set='$d_fd_set'
14646 d_fds_bits='$d_fds_bits'
14647 d_fgetpos='$d_fgetpos'
14648 d_flexfnam='$d_flexfnam'
14649 d_flock='$d_flock'
14650 d_fork='$d_fork'
14651 d_fpathconf='$d_fpathconf'
14652 d_fpos64_t='$d_fpos64_t'
14653 d_fs_data_s='$d_fs_data_s'
14654 d_fseeko='$d_fseeko'
14655 d_fsetpos='$d_fsetpos'
14656 d_fstatfs='$d_fstatfs'
14657 d_fstatvfs='$d_fstatvfs'
14658 d_ftello='$d_ftello'
14659 d_ftime='$d_ftime'
14660 d_getcwd='$d_getcwd'
14661 d_getgrent='$d_getgrent'
14662 d_getgrps='$d_getgrps'
14663 d_gethbyaddr='$d_gethbyaddr'
14664 d_gethbyname='$d_gethbyname'
14665 d_gethent='$d_gethent'
14666 d_gethname='$d_gethname'
14667 d_gethostprotos='$d_gethostprotos'
14668 d_getlogin='$d_getlogin'
14669 d_getmnt='$d_getmnt'
14670 d_getmntent='$d_getmntent'
14671 d_getnbyaddr='$d_getnbyaddr'
14672 d_getnbyname='$d_getnbyname'
14673 d_getnent='$d_getnent'
14674 d_getnetprotos='$d_getnetprotos'
14675 d_getpbyname='$d_getpbyname'
14676 d_getpbynumber='$d_getpbynumber'
14677 d_getpent='$d_getpent'
14678 d_getpgid='$d_getpgid'
14679 d_getpgrp2='$d_getpgrp2'
14680 d_getpgrp='$d_getpgrp'
14681 d_getppid='$d_getppid'
14682 d_getprior='$d_getprior'
14683 d_getprotoprotos='$d_getprotoprotos'
14684 d_getpwent='$d_getpwent'
14685 d_getsbyname='$d_getsbyname'
14686 d_getsbyport='$d_getsbyport'
14687 d_getsent='$d_getsent'
14688 d_getservprotos='$d_getservprotos'
14689 d_getspent='$d_getspent'
14690 d_getspnam='$d_getspnam'
14691 d_gettimeod='$d_gettimeod'
14692 d_gnulibc='$d_gnulibc'
14693 d_grpasswd='$d_grpasswd'
14694 d_hasmntopt='$d_hasmntopt'
14695 d_htonl='$d_htonl'
14696 d_iconv='$d_iconv'
14697 d_index='$d_index'
14698 d_inetaton='$d_inetaton'
14699 d_int64t='$d_int64t'
14700 d_isascii='$d_isascii'
14701 d_killpg='$d_killpg'
14702 d_lchown='$d_lchown'
14703 d_ldbl_dig='$d_ldbl_dig'
14704 d_link='$d_link'
14705 d_locconv='$d_locconv'
14706 d_lockf='$d_lockf'
14707 d_longdbl='$d_longdbl'
14708 d_longlong='$d_longlong'
14709 d_lstat='$d_lstat'
14710 d_mblen='$d_mblen'
14711 d_mbstowcs='$d_mbstowcs'
14712 d_mbtowc='$d_mbtowc'
14713 d_memchr='$d_memchr'
14714 d_memcmp='$d_memcmp'
14715 d_memcpy='$d_memcpy'
14716 d_memmove='$d_memmove'
14717 d_memset='$d_memset'
14718 d_mkdir='$d_mkdir'
14719 d_mkdtemp='$d_mkdtemp'
14720 d_mkfifo='$d_mkfifo'
14721 d_mkstemp='$d_mkstemp'
14722 d_mkstemps='$d_mkstemps'
14723 d_mktime='$d_mktime'
14724 d_mmap='$d_mmap'
14725 d_mprotect='$d_mprotect'
14726 d_msg='$d_msg'
14727 d_msg_ctrunc='$d_msg_ctrunc'
14728 d_msg_dontroute='$d_msg_dontroute'
14729 d_msg_oob='$d_msg_oob'
14730 d_msg_peek='$d_msg_peek'
14731 d_msg_proxy='$d_msg_proxy'
14732 d_msgctl='$d_msgctl'
14733 d_msgget='$d_msgget'
14734 d_msgrcv='$d_msgrcv'
14735 d_msgsnd='$d_msgsnd'
14736 d_msync='$d_msync'
14737 d_munmap='$d_munmap'
14738 d_mymalloc='$d_mymalloc'
14739 d_nice='$d_nice'
14740 d_nv_preserves_uv='$d_nv_preserves_uv'
14741 d_off64_t='$d_off64_t'
14742 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
14743 d_oldpthreads='$d_oldpthreads'
14744 d_oldsock='$d_oldsock'
14745 d_open3='$d_open3'
14746 d_pathconf='$d_pathconf'
14747 d_pause='$d_pause'
14748 d_phostname='$d_phostname'
14749 d_pipe='$d_pipe'
14750 d_poll='$d_poll'
14751 d_portable='$d_portable'
14752 d_pthread_yield='$d_pthread_yield'
14753 d_pwage='$d_pwage'
14754 d_pwchange='$d_pwchange'
14755 d_pwclass='$d_pwclass'
14756 d_pwcomment='$d_pwcomment'
14757 d_pwexpire='$d_pwexpire'
14758 d_pwgecos='$d_pwgecos'
14759 d_pwpasswd='$d_pwpasswd'
14760 d_pwquota='$d_pwquota'
14761 d_quad='$d_quad'
14762 d_readdir='$d_readdir'
14763 d_readlink='$d_readlink'
14764 d_rename='$d_rename'
14765 d_rewinddir='$d_rewinddir'
14766 d_rmdir='$d_rmdir'
14767 d_safebcpy='$d_safebcpy'
14768 d_safemcpy='$d_safemcpy'
14769 d_sanemcmp='$d_sanemcmp'
14770 d_sched_yield='$d_sched_yield'
14771 d_scm_rights='$d_scm_rights'
14772 d_seekdir='$d_seekdir'
14773 d_select='$d_select'
14774 d_sem='$d_sem'
14775 d_semctl='$d_semctl'
14776 d_semctl_semid_ds='$d_semctl_semid_ds'
14777 d_semctl_semun='$d_semctl_semun'
14778 d_semget='$d_semget'
14779 d_semop='$d_semop'
14780 d_setegid='$d_setegid'
14781 d_seteuid='$d_seteuid'
14782 d_setgrent='$d_setgrent'
14783 d_setgrps='$d_setgrps'
14784 d_sethent='$d_sethent'
14785 d_setlinebuf='$d_setlinebuf'
14786 d_setlocale='$d_setlocale'
14787 d_setnent='$d_setnent'
14788 d_setpent='$d_setpent'
14789 d_setpgid='$d_setpgid'
14790 d_setpgrp2='$d_setpgrp2'
14791 d_setpgrp='$d_setpgrp'
14792 d_setprior='$d_setprior'
14793 d_setpwent='$d_setpwent'
14794 d_setregid='$d_setregid'
14795 d_setresgid='$d_setresgid'
14796 d_setresuid='$d_setresuid'
14797 d_setreuid='$d_setreuid'
14798 d_setrgid='$d_setrgid'
14799 d_setruid='$d_setruid'
14800 d_setsent='$d_setsent'
14801 d_setsid='$d_setsid'
14802 d_setspent='$d_setspent'
14803 d_setvbuf='$d_setvbuf'
14804 d_sfio='$d_sfio'
14805 d_shm='$d_shm'
14806 d_shmat='$d_shmat'
14807 d_shmatprototype='$d_shmatprototype'
14808 d_shmctl='$d_shmctl'
14809 d_shmdt='$d_shmdt'
14810 d_shmget='$d_shmget'
14811 d_sigaction='$d_sigaction'
14812 d_sigsetjmp='$d_sigsetjmp'
14813 d_socket='$d_socket'
14814 d_sockpair='$d_sockpair'
14815 d_sqrtl='$d_sqrtl'
14816 d_statblks='$d_statblks'
14817 d_statfs_f_flags='$d_statfs_f_flags'
14818 d_statfs_s='$d_statfs_s'
14819 d_statvfs='$d_statvfs'
14820 d_stdio_cnt_lval='$d_stdio_cnt_lval'
14821 d_stdio_ptr_lval='$d_stdio_ptr_lval'
14822 d_stdio_stream_array='$d_stdio_stream_array'
14823 d_stdiobase='$d_stdiobase'
14824 d_stdstdio='$d_stdstdio'
14825 d_strchr='$d_strchr'
14826 d_strcoll='$d_strcoll'
14827 d_strctcpy='$d_strctcpy'
14828 d_strerrm='$d_strerrm'
14829 d_strerror='$d_strerror'
14830 d_strtod='$d_strtod'
14831 d_strtol='$d_strtol'
14832 d_strtold='$d_strtold'
14833 d_strtoll='$d_strtoll'
14834 d_strtoul='$d_strtoul'
14835 d_strtoull='$d_strtoull'
14836 d_strtouq='$d_strtouq'
14837 d_strxfrm='$d_strxfrm'
14838 d_suidsafe='$d_suidsafe'
14839 d_symlink='$d_symlink'
14840 d_syscall='$d_syscall'
14841 d_sysconf='$d_sysconf'
14842 d_sysernlst='$d_sysernlst'
14843 d_syserrlst='$d_syserrlst'
14844 d_system='$d_system'
14845 d_tcgetpgrp='$d_tcgetpgrp'
14846 d_tcsetpgrp='$d_tcsetpgrp'
14847 d_telldir='$d_telldir'
14848 d_telldirproto='$d_telldirproto'
14849 d_time='$d_time'
14850 d_times='$d_times'
14851 d_truncate='$d_truncate'
14852 d_tzname='$d_tzname'
14853 d_umask='$d_umask'
14854 d_uname='$d_uname'
14855 d_union_semun='$d_union_semun'
14856 d_ustat='$d_ustat'
14857 d_vendorbin='$d_vendorbin'
14858 d_vendorlib='$d_vendorlib'
14859 d_vfork='$d_vfork'
14860 d_void_closedir='$d_void_closedir'
14861 d_voidsig='$d_voidsig'
14862 d_voidtty='$d_voidtty'
14863 d_volatile='$d_volatile'
14864 d_vprintf='$d_vprintf'
14865 d_wait4='$d_wait4'
14866 d_waitpid='$d_waitpid'
14867 d_wcstombs='$d_wcstombs'
14868 d_wctomb='$d_wctomb'
14869 d_xenix='$d_xenix'
14870 date='$date'
14871 db_hashtype='$db_hashtype'
14872 db_prefixtype='$db_prefixtype'
14873 defvoidused='$defvoidused'
14874 direntrytype='$direntrytype'
14875 dlext='$dlext'
14876 dlsrc='$dlsrc'
14877 doublesize='$doublesize'
14878 drand01='$drand01'
14879 dynamic_ext='$dynamic_ext'
14880 eagain='$eagain'
14881 ebcdic='$ebcdic'
14882 echo='$echo'
14883 egrep='$egrep'
14884 emacs='$emacs'
14885 eunicefix='$eunicefix'
14886 exe_ext='$exe_ext'
14887 expr='$expr'
14888 extensions='$extensions'
14889 fflushNULL='$fflushNULL'
14890 fflushall='$fflushall'
14891 find='$find'
14892 firstmakefile='$firstmakefile'
14893 flex='$flex'
14894 fpossize='$fpossize'
14895 fpostype='$fpostype'
14896 freetype='$freetype'
14897 full_ar='$full_ar'
14898 full_csh='$full_csh'
14899 full_sed='$full_sed'
14900 gccversion='$gccversion'
14901 gidformat='$gidformat'
14902 gidsign='$gidsign'
14903 gidsize='$gidsize'
14904 gidtype='$gidtype'
14905 glibpth='$glibpth'
14906 grep='$grep'
14907 groupcat='$groupcat'
14908 groupstype='$groupstype'
14909 gzip='$gzip'
14910 h_fcntl='$h_fcntl'
14911 h_sysfile='$h_sysfile'
14912 hint='$hint'
14913 hostcat='$hostcat'
14914 huge='$huge'
14915 i16size='$i16size'
14916 i16type='$i16type'
14917 i32size='$i32size'
14918 i32type='$i32type'
14919 i64size='$i64size'
14920 i64type='$i64type'
14921 i8size='$i8size'
14922 i8type='$i8type'
14923 i_arpainet='$i_arpainet'
14924 i_bsdioctl='$i_bsdioctl'
14925 i_db='$i_db'
14926 i_dbm='$i_dbm'
14927 i_dirent='$i_dirent'
14928 i_dld='$i_dld'
14929 i_dlfcn='$i_dlfcn'
14930 i_fcntl='$i_fcntl'
14931 i_float='$i_float'
14932 i_gdbm='$i_gdbm'
14933 i_grp='$i_grp'
14934 i_iconv='$i_iconv'
14935 i_inttypes='$i_inttypes'
14936 i_limits='$i_limits'
14937 i_locale='$i_locale'
14938 i_machcthr='$i_machcthr'
14939 i_malloc='$i_malloc'
14940 i_math='$i_math'
14941 i_memory='$i_memory'
14942 i_mntent='$i_mntent'
14943 i_ndbm='$i_ndbm'
14944 i_netdb='$i_netdb'
14945 i_neterrno='$i_neterrno'
14946 i_netinettcp='$i_netinettcp'
14947 i_niin='$i_niin'
14948 i_poll='$i_poll'
14949 i_pthread='$i_pthread'
14950 i_pwd='$i_pwd'
14951 i_rpcsvcdbm='$i_rpcsvcdbm'
14952 i_sfio='$i_sfio'
14953 i_sgtty='$i_sgtty'
14954 i_shadow='$i_shadow'
14955 i_socks='$i_socks'
14956 i_stdarg='$i_stdarg'
14957 i_stddef='$i_stddef'
14958 i_stdlib='$i_stdlib'
14959 i_string='$i_string'
14960 i_sysaccess='$i_sysaccess'
14961 i_sysdir='$i_sysdir'
14962 i_sysfile='$i_sysfile'
14963 i_sysfilio='$i_sysfilio'
14964 i_sysin='$i_sysin'
14965 i_sysioctl='$i_sysioctl'
14966 i_syslog='$i_syslog'
14967 i_sysmman='$i_sysmman'
14968 i_sysmode='$i_sysmode'
14969 i_sysmount='$i_sysmount'
14970 i_sysndir='$i_sysndir'
14971 i_sysparam='$i_sysparam'
14972 i_sysresrc='$i_sysresrc'
14973 i_syssecrt='$i_syssecrt'
14974 i_sysselct='$i_sysselct'
14975 i_syssockio='$i_syssockio'
14976 i_sysstat='$i_sysstat'
14977 i_sysstatfs='$i_sysstatfs'
14978 i_sysstatvfs='$i_sysstatvfs'
14979 i_systime='$i_systime'
14980 i_systimek='$i_systimek'
14981 i_systimes='$i_systimes'
14982 i_systypes='$i_systypes'
14983 i_sysuio='$i_sysuio'
14984 i_sysun='$i_sysun'
14985 i_sysutsname='$i_sysutsname'
14986 i_sysvfs='$i_sysvfs'
14987 i_syswait='$i_syswait'
14988 i_termio='$i_termio'
14989 i_termios='$i_termios'
14990 i_time='$i_time'
14991 i_unistd='$i_unistd'
14992 i_ustat='$i_ustat'
14993 i_utime='$i_utime'
14994 i_values='$i_values'
14995 i_varargs='$i_varargs'
14996 i_varhdr='$i_varhdr'
14997 i_vfork='$i_vfork'
14998 ignore_versioned_solibs='$ignore_versioned_solibs'
14999 inc_version_list='$inc_version_list'
15000 inc_version_list_init='$inc_version_list_init'
15001 incpath='$incpath'
15002 inews='$inews'
15003 installarchlib='$installarchlib'
15004 installbin='$installbin'
15005 installman1dir='$installman1dir'
15006 installman3dir='$installman3dir'
15007 installprefix='$installprefix'
15008 installprefixexp='$installprefixexp'
15009 installprivlib='$installprivlib'
15010 installscript='$installscript'
15011 installsitearch='$installsitearch'
15012 installsitebin='$installsitebin'
15013 installsitelib='$installsitelib'
15014 installstyle='$installstyle'
15015 installusrbinperl='$installusrbinperl'
15016 installvendorbin='$installvendorbin'
15017 installvendorlib='$installvendorlib'
15018 intsize='$intsize'
15019 ivdformat='$ivdformat'
15020 ivsize='$ivsize'
15021 ivtype='$ivtype'
15022 known_extensions='$known_extensions'
15023 ksh='$ksh'
15024 large='$large'
15025 ld='$ld'
15026 lddlflags='$lddlflags'
15027 ldflags='$ldflags'
15028 ldlibpthname='$ldlibpthname'
15029 less='$less'
15030 lib_ext='$lib_ext'
15031 libc='$libc'
15032 libperl='$libperl'
15033 libpth='$libpth'
15034 libs='$libs'
15035 libsdirs='$libsdirs'
15036 libsfiles='$libsfiles'
15037 libsfound='$libsfound'
15038 libswanted='$libswanted'
15039 line='$line'
15040 lint='$lint'
15041 lkflags='$lkflags'
15042 ln='$ln'
15043 lns='$lns'
15044 locincpth='$locincpth'
15045 loclibpth='$loclibpth'
15046 longdblsize='$longdblsize'
15047 longlongsize='$longlongsize'
15048 longsize='$longsize'
15049 lp='$lp'
15050 lpr='$lpr'
15051 ls='$ls'
15052 lseeksize='$lseeksize'
15053 lseektype='$lseektype'
15054 mail='$mail'
15055 mailx='$mailx'
15056 make='$make'
15057 make_set_make='$make_set_make'
15058 mallocobj='$mallocobj'
15059 mallocsrc='$mallocsrc'
15060 malloctype='$malloctype'
15061 man1dir='$man1dir'
15062 man1direxp='$man1direxp'
15063 man1ext='$man1ext'
15064 man3dir='$man3dir'
15065 man3direxp='$man3direxp'
15066 man3ext='$man3ext'
15067 medium='$medium'
15068 mips_type='$mips_type'
15069 mkdir='$mkdir'
15070 mmaptype='$mmaptype'
15071 models='$models'
15072 modetype='$modetype'
15073 more='$more'
15074 multiarch='$multiarch'
15075 mv='$mv'
15076 myarchname='$myarchname'
15077 mydomain='$mydomain'
15078 myhostname='$myhostname'
15079 myuname='$myuname'
15080 n='$n'
15081 netdb_hlen_type='$netdb_hlen_type'
15082 netdb_host_type='$netdb_host_type'
15083 netdb_name_type='$netdb_name_type'
15084 netdb_net_type='$netdb_net_type'
15085 nm='$nm'
15086 nm_opt='$nm_opt'
15087 nm_so_opt='$nm_so_opt'
15088 nonxs_ext='$nonxs_ext'
15089 nroff='$nroff'
15090 nvsize='$nvsize'
15091 nvtype='$nvtype'
15092 o_nonblock='$o_nonblock'
15093 obj_ext='$obj_ext'
15094 old_pthread_create_joinable='$old_pthread_create_joinable'
15095 optimize='$optimize'
15096 orderlib='$orderlib'
15097 osname='$osname'
15098 osvers='$osvers'
15099 package='$package'
15100 pager='$pager'
15101 passcat='$passcat'
15102 patchlevel='$patchlevel'
15103 path_sep='$path_sep'
15104 perl='$perl'
15105 perladmin='$perladmin'
15106 perlpath='$perlpath'
15107 pg='$pg'
15108 phostname='$phostname'
15109 pidtype='$pidtype'
15110 plibpth='$plibpth'
15111 pm_apiversion='$pm_apiversion'
15112 pmake='$pmake'
15113 pr='$pr'
15114 prefix='$prefix'
15115 prefixexp='$prefixexp'
15116 privlib='$privlib'
15117 privlibexp='$privlibexp'
15118 prototype='$prototype'
15119 ptrsize='$ptrsize'
15120 quadkind='$quadkind'
15121 quadtype='$quadtype'
15122 randbits='$randbits'
15123 randfunc='$randfunc'
15124 randseedtype='$randseedtype'
15125 ranlib='$ranlib'
15126 rd_nodata='$rd_nodata'
15127 rm='$rm'
15128 rmail='$rmail'
15129 runnm='$runnm'
15130 sPRIEldbl='$sPRIEldbl'
15131 sPRIFldbl='$sPRIFldbl'
15132 sPRIGldbl='$sPRIGldbl'
15133 sPRIX64='$sPRIX64'
15134 sPRId64='$sPRId64'
15135 sPRIeldbl='$sPRIeldbl'
15136 sPRIfldbl='$sPRIfldbl'
15137 sPRIgldbl='$sPRIgldbl'
15138 sPRIi64='$sPRIi64'
15139 sPRIo64='$sPRIo64'
15140 sPRIu64='$sPRIu64'
15141 sPRIx64='$sPRIx64'
15142 sched_yield='$sched_yield'
15143 scriptdir='$scriptdir'
15144 scriptdirexp='$scriptdirexp'
15145 sed='$sed'
15146 seedfunc='$seedfunc'
15147 selectminbits='$selectminbits'
15148 selecttype='$selecttype'
15149 sendmail='$sendmail'
15150 sh='$sh'
15151 shar='$shar'
15152 sharpbang='$sharpbang'
15153 shmattype='$shmattype'
15154 shortsize='$shortsize'
15155 shrpenv='$shrpenv'
15156 shsharp='$shsharp'
15157 sig_count='$sig_count'
15158 sig_name='$sig_name'
15159 sig_name_init='$sig_name_init'
15160 sig_num='$sig_num'
15161 sig_num_init='$sig_num_init'
15162 signal_t='$signal_t'
15163 sitearch='$sitearch'
15164 sitearchexp='$sitearchexp'
15165 sitebin='$sitebin'
15166 sitebinexp='$sitebinexp'
15167 sitelib='$sitelib'
15168 sitelibexp='$sitelibexp'
15169 siteprefix='$siteprefix'
15170 siteprefixexp='$siteprefixexp'
15171 sizetype='$sizetype'
15172 sleep='$sleep'
15173 smail='$smail'
15174 small='$small'
15175 so='$so'
15176 sockethdr='$sockethdr'
15177 socketlib='$socketlib'
15178 sort='$sort'
15179 spackage='$spackage'
15180 spitshell='$spitshell'
15181 split='$split'
15182 src='$src'
15183 ssizetype='$ssizetype'
15184 startperl='$startperl'
15185 startsh='$startsh'
15186 static_ext='$static_ext'
15187 stdchar='$stdchar'
15188 stdio_base='$stdio_base'
15189 stdio_bufsiz='$stdio_bufsiz'
15190 stdio_cnt='$stdio_cnt'
15191 stdio_filbuf='$stdio_filbuf'
15192 stdio_ptr='$stdio_ptr'
15193 stdio_stream_array='$stdio_stream_array'
15194 strings='$strings'
15195 submit='$submit'
15196 subversion='$subversion'
15197 sysman='$sysman'
15198 tail='$tail'
15199 tar='$tar'
15200 tbl='$tbl'
15201 tee='$tee'
15202 test='$test'
15203 timeincl='$timeincl'
15204 timetype='$timetype'
15205 touch='$touch'
15206 tr='$tr'
15207 trnl='$trnl'
15208 troff='$troff'
15209 u16size='$u16size'
15210 u16type='$u16type'
15211 u32size='$u32size'
15212 u32type='$u32type'
15213 u64size='$u64size'
15214 u64type='$u64type'
15215 u8size='$u8size'
15216 u8type='$u8type'
15217 uidformat='$uidformat'
15218 uidsign='$uidsign'
15219 uidsize='$uidsize'
15220 uidtype='$uidtype'
15221 uname='$uname'
15222 uniq='$uniq'
15223 uquadtype='$uquadtype'
15224 use5005threads='$use5005threads'
15225 use64bits='$use64bits'
15226 usedl='$usedl'
15227 useithreads='$useithreads'
15228 uselargefiles='$uselargefiles'
15229 uselongdouble='$uselongdouble'
15230 usemorebits='$usemorebits'
15231 usemultiplicity='$usemultiplicity'
15232 usemymalloc='$usemymalloc'
15233 usenm='$usenm'
15234 useopcode='$useopcode'
15235 useperlio='$useperlio'
15236 useposix='$useposix'
15237 usesfio='$usesfio'
15238 useshrplib='$useshrplib'
15239 usesocks='$usesocks'
15240 usethreads='$usethreads'
15241 usevendorprefix='$usevendorprefix'
15242 usevfork='$usevfork'
15243 usrinc='$usrinc'
15244 uuname='$uuname'
15245 uvoformat='$uvoformat'
15246 uvsize='$uvsize'
15247 uvtype='$uvtype'
15248 uvuformat='$uvuformat'
15249 uvxformat='$uvxformat'
15250 vendorbin='$vendorbin'
15251 vendorbinexp='$vendorbinexp'
15252 vendorlib='$vendorlib'
15253 vendorlibexp='$vendorlibexp'
15254 vendorprefix='$vendorprefix'
15255 vendorprefixexp='$vendorprefixexp'
15256 version='$version'
15257 vi='$vi'
15258 voidflags='$voidflags'
15259 xlibpth='$xlibpth'
15260 xs_apiversion='$xs_apiversion'
15261 zcat='$zcat'
15262 zip='$zip'
15263 EOT
15264
15265 : Add in command line options if available
15266 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15267
15268 : add special variables
15269 $test -f $src/patchlevel.h && \
15270 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15271 echo "CONFIGDOTSH=true" >>config.sh
15272
15273 : propagate old symbols
15274 if $test -f UU/config.sh; then
15275         <UU/config.sh sort | uniq >UU/oldconfig.sh
15276         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15277         sort | uniq -u >UU/oldsyms
15278         set X `cat UU/oldsyms`
15279         shift
15280         case $# in
15281         0) ;;
15282         *)
15283                 cat <<EOM
15284 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15285 EOM
15286                 echo "# Variables propagated from previous config.sh file." >>config.sh
15287                 for sym in `cat UU/oldsyms`; do
15288                         echo "    Propagating $hint variable "'$'"$sym..."
15289                         eval 'tmp="$'"${sym}"'"'
15290                         echo "$tmp" | \
15291                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15292                 done
15293                 ;;
15294         esac
15295 fi
15296
15297 : Finish up by extracting the .SH files
15298 case "$alldone" in
15299 exit)
15300         $rm -rf UU
15301         echo "Done."
15302         exit 0
15303         ;;
15304 cont)
15305         ;;
15306 '')
15307         dflt=''
15308         nostick=true
15309         $cat <<EOM
15310
15311 If you'd like to make any changes to the config.sh file before I begin
15312 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15313
15314 EOM
15315         rp="Press return or use a shell escape to edit config.sh:"
15316         . UU/myread
15317         nostick=''
15318         case "$ans" in
15319         '') ;;
15320         *) : in case they cannot read
15321                 sh 1>&4 -c "$ans";;
15322         esac
15323         ;;
15324 esac
15325
15326 : if this fails, just run all the .SH files by hand
15327 . ./config.sh
15328
15329 echo " "
15330 exec 1>&4
15331 . ./UU/extract
15332
15333 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15334         dflt=y
15335         case "$silent" in
15336         true) ;;
15337         *)
15338                 $cat <<EOM
15339
15340 Now you need to generate make dependencies by running "$make depend".
15341 You might prefer to run it in background: "$make depend > makedepend.out &"
15342 It can take a while, so you might not want to run it right now.
15343
15344 EOM
15345                 ;;
15346         esac
15347         rp="Run $make depend now?"
15348         . UU/myread
15349         case "$ans" in
15350         y*)
15351                 $make depend && echo "Now you must run a $make."
15352                 ;;
15353         *)
15354                 echo "You must run '$make depend' then '$make'."
15355                 ;;
15356         esac
15357 elif test -f [Mm]akefile; then
15358         echo " "
15359         echo "Now you must run a $make."
15360 else
15361         echo "Done."
15362 fi
15363
15364 if $test -f Policy.sh; then
15365     $cat <<EOM
15366
15367 If you compile $package on a different machine or from a different object
15368 directory, copy the Policy.sh file from this object directory to the
15369 new one before you run Configure -- this will help you with most of
15370 the policy defaults.
15371
15372 EOM
15373 fi
15374 if $test -f config.msg; then
15375     echo "Hmm.  I also noted the following information while running:"
15376     echo " "
15377     $cat config.msg >&4
15378     $rm -f config.msg
15379 fi
15380 $rm -f kit*isdone ark*isdone
15381 $rm -rf UU
15382
15383 : End of Configure
15384