HP-UX gcc fix; detypo in use64bits.
[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 29 18:49:00 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_fpos64_t=''
358 d_fs_data_s=''
359 d_fseeko=''
360 d_fsetpos=''
361 d_fstatfs=''
362 d_ftello=''
363 d_ftime=''
364 d_gettimeod=''
365 d_Gconvert=''
366 d_getcwd=''
367 d_getfsstat=''
368 d_getgrent=''
369 d_getgrps=''
370 d_gethbyaddr=''
371 d_gethbyname=''
372 d_gethent=''
373 aphostname=''
374 d_gethname=''
375 d_phostname=''
376 d_uname=''
377 d_gethostprotos=''
378 d_getlogin=''
379 d_getmnt=''
380 d_getmntent=''
381 d_getnbyaddr=''
382 d_getnbyname=''
383 d_getnent=''
384 d_getnetprotos=''
385 d_getpent=''
386 d_getpgid=''
387 d_getpgrp2=''
388 d_bsdgetpgrp=''
389 d_getpgrp=''
390 d_getppid=''
391 d_getprior=''
392 d_getpbyname=''
393 d_getpbynumber=''
394 d_getprotoprotos=''
395 d_getpwent=''
396 d_getsent=''
397 d_getservprotos=''
398 d_getspent=''
399 d_getspnam=''
400 d_getsbyname=''
401 d_getsbyport=''
402 d_gnulibc=''
403 d_hasmntopt=''
404 d_htonl=''
405 d_iconv=''
406 d_inetaton=''
407 d_int64_t=''
408 d_isascii=''
409 d_killpg=''
410 d_lchown=''
411 d_ldbl_dig=''
412 d_link=''
413 d_locconv=''
414 d_lockf=''
415 d_longdbl=''
416 longdblsize=''
417 d_longlong=''
418 longlongsize=''
419 d_lseekproto=''
420 d_lstat=''
421 d_madvise=''
422 d_mblen=''
423 d_mbstowcs=''
424 d_mbtowc=''
425 d_memchr=''
426 d_memcmp=''
427 d_memcpy=''
428 d_memmove=''
429 d_memset=''
430 d_mkdir=''
431 d_mkdtemp=''
432 d_mkfifo=''
433 d_mkstemp=''
434 d_mkstemps=''
435 d_mktime=''
436 d_mmap=''
437 mmaptype=''
438 d_mprotect=''
439 d_msg=''
440 d_msgctl=''
441 d_msgget=''
442 d_msgrcv=''
443 d_msgsnd=''
444 d_msync=''
445 d_munmap=''
446 d_nice=''
447 d_off64_t=''
448 d_open3=''
449 d_fpathconf=''
450 d_pathconf=''
451 d_pause=''
452 d_pipe=''
453 d_poll=''
454 d_portable=''
455 d_old_pthread_create_joinable=''
456 old_pthread_create_joinable=''
457 d_pthread_yield=''
458 d_sched_yield=''
459 sched_yield=''
460 d_readdir=''
461 d_rewinddir=''
462 d_seekdir=''
463 d_telldir=''
464 d_readlink=''
465 d_rename=''
466 d_rmdir=''
467 d_safebcpy=''
468 d_safemcpy=''
469 d_sanemcmp=''
470 d_select=''
471 d_sem=''
472 d_semctl=''
473 d_semget=''
474 d_semop=''
475 d_setegid=''
476 d_seteuid=''
477 d_setgrent=''
478 d_setgrps=''
479 d_sethent=''
480 d_setlinebuf=''
481 d_setlocale=''
482 d_setnent=''
483 d_setpent=''
484 d_setpgid=''
485 d_setpgrp2=''
486 d_bsdsetpgrp=''
487 d_setpgrp=''
488 d_setprior=''
489 d_setpwent=''
490 d_setregid=''
491 d_setresgid=''
492 d_setresuid=''
493 d_setreuid=''
494 d_setrgid=''
495 d_setruid=''
496 d_setsent=''
497 d_setsid=''
498 d_setspent=''
499 d_setvbuf=''
500 d_sfio=''
501 usesfio=''
502 d_shm=''
503 d_shmat=''
504 d_shmatprototype=''
505 shmattype=''
506 d_shmctl=''
507 d_shmdt=''
508 d_shmget=''
509 d_sigaction=''
510 d_sigsetjmp=''
511 d_msg_ctrunc=''
512 d_msg_dontroute=''
513 d_msg_oob=''
514 d_msg_peek=''
515 d_msg_proxy=''
516 d_oldsock=''
517 d_scm_rights=''
518 d_socket=''
519 d_sockpair=''
520 sockethdr=''
521 socketlib=''
522 d_socklen_t=''
523 d_sqrtl=''
524 d_statblks=''
525 d_statfs_f_flags=''
526 d_statfs_s=''
527 d_fstatvfs=''
528 d_statvfs=''
529 d_stdio_cnt_lval=''
530 d_stdio_ptr_lval=''
531 d_stdiobase=''
532 d_stdstdio=''
533 stdio_base=''
534 stdio_bufsiz=''
535 stdio_cnt=''
536 stdio_filbuf=''
537 stdio_ptr=''
538 d_index=''
539 d_strchr=''
540 d_strcoll=''
541 d_strctcpy=''
542 d_strerrm=''
543 d_strerror=''
544 d_sysernlst=''
545 d_syserrlst=''
546 d_strtod=''
547 d_strtol=''
548 d_strtold=''
549 d_strtoll=''
550 d_strtoul=''
551 d_strtoull=''
552 d_strtouq=''
553 d_strxfrm=''
554 d_symlink=''
555 d_syscall=''
556 d_sysconf=''
557 d_system=''
558 d_tcgetpgrp=''
559 d_tcsetpgrp=''
560 d_telldirproto=''
561 d_time=''
562 timetype=''
563 clocktype=''
564 d_times=''
565 d_truncate=''
566 d_tzname=''
567 d_umask=''
568 d_semctl_semid_ds=''
569 d_semctl_semun=''
570 d_union_semun=''
571 d_ustat=''
572 d_vfork=''
573 usevfork=''
574 d_voidsig=''
575 signal_t=''
576 d_volatile=''
577 d_charvspr=''
578 d_vprintf=''
579 d_wait4=''
580 d_waitpid=''
581 d_wcstombs=''
582 d_wctomb=''
583 dlext=''
584 cccdlflags=''
585 ccdlflags=''
586 dlsrc=''
587 ld=''
588 lddlflags=''
589 usedl=''
590 doublesize=''
591 ebcdic=''
592 fflushNULL=''
593 fflushall=''
594 fpossize=''
595 fpostype=''
596 gidformat=''
597 gidsign=''
598 gidsize=''
599 gidtype=''
600 groupstype=''
601 h_fcntl=''
602 h_sysfile=''
603 i_arpainet=''
604 db_hashtype=''
605 db_prefixtype=''
606 i_db=''
607 i_dbm=''
608 i_rpcsvcdbm=''
609 d_dirnamlen=''
610 direntrytype=''
611 i_dirent=''
612 i_dld=''
613 i_dlfcn=''
614 i_fcntl=''
615 i_float=''
616 i_gdbm=''
617 d_grpasswd=''
618 i_grp=''
619 i_iconv=''
620 i_inttypes=''
621 i_limits=''
622 i_locale=''
623 i_machcthr=''
624 i_malloc=''
625 i_math=''
626 i_memory=''
627 i_mntent=''
628 i_ndbm=''
629 i_netdb=''
630 i_neterrno=''
631 i_netinettcp=''
632 i_niin=''
633 i_sysin=''
634 i_poll=''
635 i_pthread=''
636 d_pwage=''
637 d_pwchange=''
638 d_pwclass=''
639 d_pwcomment=''
640 d_pwexpire=''
641 d_pwgecos=''
642 d_pwpasswd=''
643 d_pwquota=''
644 i_pwd=''
645 i_sfio=''
646 i_shadow=''
647 i_socks=''
648 i_stddef=''
649 i_stdlib=''
650 i_string=''
651 strings=''
652 i_sysaccess=''
653 i_sysdir=''
654 i_sysfile=''
655 d_voidtty=''
656 i_bsdioctl=''
657 i_sysfilio=''
658 i_sysioctl=''
659 i_syssockio=''
660 i_syslog=''
661 i_sysmman=''
662 i_sysmode=''
663 i_sysmount=''
664 i_sysndir=''
665 i_sysparam=''
666 i_sysresrc=''
667 i_syssecrt=''
668 i_sysselct=''
669 i_sysstat=''
670 i_sysstatfs=''
671 i_sysstatvfs=''
672 i_systimes=''
673 i_systypes=''
674 i_sysuio=''
675 i_sysun=''
676 i_sysutsname=''
677 i_sysvfs=''
678 i_syswait=''
679 i_sgtty=''
680 i_termio=''
681 i_termios=''
682 i_systime=''
683 i_systimek=''
684 i_time=''
685 timeincl=''
686 i_unistd=''
687 i_ustat=''
688 i_utime=''
689 i_values=''
690 i_stdarg=''
691 i_varargs=''
692 i_varhdr=''
693 i_vfork=''
694 inc_version_list=''
695 inc_version_list_init=''
696 installprefix=''
697 installprefixexp=''
698 installstyle=''
699 installusrbinperl=''
700 intsize=''
701 longsize=''
702 shortsize=''
703 libc=''
704 ldlibpthname=''
705 libperl=''
706 shrpenv=''
707 useshrplib=''
708 glibpth=''
709 libpth=''
710 loclibpth=''
711 plibpth=''
712 xlibpth=''
713 ignore_versioned_solibs=''
714 libs=''
715 libsdirs=''
716 libsfiles=''
717 libsfound=''
718 libspath=''
719 lns=''
720 d_PRIEldbl=''
721 d_PRIFldbl=''
722 d_PRIGldbl=''
723 d_PRIeldbl=''
724 d_PRIfldbl=''
725 d_PRIgldbl=''
726 sPRIEldbl=''
727 sPRIFldbl=''
728 sPRIGldbl=''
729 sPRIeldbl=''
730 sPRIfldbl=''
731 sPRIgldbl=''
732 lseeksize=''
733 lseektype=''
734 make_set_make=''
735 d_mymalloc=''
736 freetype=''
737 mallocobj=''
738 mallocsrc=''
739 malloctype=''
740 usemymalloc=''
741 installman1dir=''
742 man1dir=''
743 man1direxp=''
744 man1ext=''
745 installman3dir=''
746 man3dir=''
747 man3direxp=''
748 man3ext=''
749 huge=''
750 large=''
751 medium=''
752 models=''
753 small=''
754 split=''
755 modetype=''
756 multiarch=''
757 mydomain=''
758 myhostname=''
759 phostname=''
760 c=''
761 n=''
762 d_eofnblk=''
763 eagain=''
764 o_nonblock=''
765 rd_nodata=''
766 netdb_hlen_type=''
767 netdb_host_type=''
768 netdb_name_type=''
769 netdb_net_type=''
770 groupcat=''
771 hostcat=''
772 passcat=''
773 orderlib=''
774 ranlib=''
775 package=''
776 spackage=''
777 pager=''
778 api_revision=''
779 api_subversion=''
780 api_version=''
781 api_versionstring=''
782 patchlevel=''
783 revision=''
784 subversion=''
785 version=''
786 perl5=''
787 perladmin=''
788 perlpath=''
789 d_nv_preserves_uv=''
790 i16size=''
791 i16type=''
792 i32size=''
793 i32type=''
794 i64size=''
795 i64type=''
796 i8size=''
797 i8type=''
798 ivsize=''
799 ivtype=''
800 nvsize=''
801 nvtype=''
802 u16size=''
803 u16type=''
804 u32size=''
805 u32type=''
806 u64size=''
807 u64type=''
808 u8size=''
809 u8type=''
810 uvsize=''
811 uvtype=''
812 ivdformat=''
813 uvoformat=''
814 uvuformat=''
815 uvxformat=''
816 pidtype=''
817 prefix=''
818 prefixexp=''
819 installprivlib=''
820 privlib=''
821 privlibexp=''
822 prototype=''
823 ptrsize=''
824 d_PRIX64=''
825 d_PRId64=''
826 d_PRIi64=''
827 d_PRIo64=''
828 d_PRIu64=''
829 d_PRIx64=''
830 sPRIX64=''
831 sPRId64=''
832 sPRIi64=''
833 sPRIo64=''
834 sPRIu64=''
835 sPRIx64=''
836 d_quad=''
837 quadkind=''
838 quadtype=''
839 uquadtype=''
840 drand01=''
841 randbits=''
842 randfunc=''
843 randseedtype=''
844 seedfunc=''
845 installscript=''
846 scriptdir=''
847 scriptdirexp=''
848 selectminbits=''
849 selecttype=''
850 sh=''
851 sig_count=''
852 sig_name=''
853 sig_name_init=''
854 sig_num=''
855 sig_num_init=''
856 installsitearch=''
857 sitearch=''
858 sitearchexp=''
859 installsitebin=''
860 sitebin=''
861 sitebinexp=''
862 installsitelib=''
863 sitelib=''
864 sitelibexp=''
865 siteprefix=''
866 siteprefixexp=''
867 sizetype=''
868 so=''
869 socksizetype=''
870 sharpbang=''
871 shsharp=''
872 spitshell=''
873 src=''
874 ssizetype=''
875 startperl=''
876 startsh=''
877 stdchar=''
878 d_stdio_stream_array=''
879 stdio_stream_array=''
880 sysman=''
881 trnl=''
882 uidformat=''
883 uidsign=''
884 uidsize=''
885 uidtype=''
886 archname64=''
887 use64bitall=''
888 use64bitint=''
889 uselargefiles=''
890 uselongdouble=''
891 usemorebits=''
892 usemultiplicity=''
893 nm_opt=''
894 nm_so_opt=''
895 runnm=''
896 usenm=''
897 useperlio=''
898 usesocks=''
899 d_oldpthreads=''
900 use5005threads=''
901 useithreads=''
902 usethreads=''
903 incpath=''
904 mips_type=''
905 usrinc=''
906 d_vendorbin=''
907 installvendorbin=''
908 vendorbin=''
909 vendorbinexp=''
910 d_vendorlib=''
911 installvendorlib=''
912 vendorlib=''
913 vendorlibexp=''
914 usevendorprefix=''
915 vendorprefix=''
916 vendorprefixexp=''
917 defvoidused=''
918 voidflags=''
919 pm_apiversion=''
920 xs_apiversion=''
921 CONFIG=''
922
923 define='define'
924 undef='undef'
925 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
926 rmlist=''
927
928 : We must find out about Eunice early
929 eunicefix=':'
930 if test -f /etc/unixtovms; then
931         eunicefix=/etc/unixtovms
932 fi
933 if test -f /etc/unixtovms.exe; then
934         eunicefix=/etc/unixtovms.exe
935 fi
936
937 i_whoami=''
938 : set useposix=false in your hint file to disable the POSIX extension.
939 useposix=true
940 : set useopcode=false in your hint file to disable the Opcode extension.
941 useopcode=true
942 : Trailing extension.  Override this in a hint file, if needed.
943 _exe=''
944 : Extra object files, if any, needed on this platform.
945 archobjs=''
946 : Possible local include directories to search.
947 : Set locincpth to "" in a hint file to defeat local include searches.
948 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
949 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
950 :
951 : no include file wanted by default
952 inclwanted=''
953
954 groupstype=''
955 : change the next line if compiling for Xenix/286 on Xenix/386
956 xlibpth='/usr/lib/386 /lib/386'
957 : Possible local library directories to search.
958 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
959 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
960
961 : general looking path for locating libraries
962 glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
963 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
964 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
965 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
966 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
967
968 : Private path used by Configure to find libraries.  Its value
969 : is prepended to libpth. This variable takes care of special
970 : machines, like the mips.  Usually, it should be empty.
971 plibpth=''
972
973 : default library list
974 libswanted=''
975 : some systems want to use only the non-versioned libso:s
976 ignore_versioned_solibs=''
977 : set usemultiplicity on the Configure command line to enable multiplicity.
978 : set usesocks on the Configure command line to enable socks.
979 : set usethreads on the Configure command line to enable threads.
980 : full support for void wanted by default
981 defvoidused=15
982
983 : List of libraries we want.
984 : If anyone needs -lnet, put it in a hint file.
985 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
986 libswanted="$libswanted dld ld sun m c cposix posix"
987 libswanted="$libswanted ndir dir crypt sec"
988 libswanted="$libswanted ucb bsd BSD PW x iconv"
989 : We probably want to search /usr/shlib before most other libraries.
990 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
991 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
992 glibpth="/usr/shlib $glibpth"
993 : Do not use vfork unless overridden by a hint file.
994 usevfork=false
995
996 : Find the basic shell for Bourne shell scripts
997 case "$sh" in
998 '')
999         case "$SYSTYPE" in
1000         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1001         *) xxx='/bin/sh';;
1002         esac
1003         if test -f "$xxx"; then
1004                 sh="$xxx"
1005         else
1006                 : Build up a list and do a single loop so we can 'break' out.
1007                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1008                 for xxx in sh bash ksh pdksh ash; do
1009                         for p in $pth; do
1010                                 try="$try ${p}/${xxx}"
1011                         done
1012                 done
1013                 for xxx in $try; do
1014                         if test -f "$xxx"; then
1015                                 sh="$xxx";
1016                                 break
1017                         elif test -f "$xxx.exe"; then
1018                                 sh="$xxx";
1019                                 break
1020                         fi
1021                 done
1022         fi
1023         ;;
1024 esac
1025
1026 case "$sh" in
1027 '')     cat <<EOM >&2
1028 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1029
1030 Usually it's in /bin/sh.  How did you even get this far?
1031 Please contact me (Perl Maintainers) at perlbug@perl.com and 
1032 we'll try to straighten this all out.
1033 EOM
1034         exit 1
1035         ;;
1036 esac
1037
1038 : see if sh knows # comments
1039 if `$sh -c '#' >/dev/null 2>&1`; then
1040         shsharp=true
1041         spitshell=cat
1042         xcat=/bin/cat
1043         test -f $xcat || xcat=/usr/bin/cat
1044         echo "#!$xcat" >try
1045         $eunicefix try
1046         chmod +x try
1047         ./try > today
1048         if test -s today; then
1049                 sharpbang='#!'
1050         else
1051                 echo "#! $xcat" > try
1052                 $eunicefix try
1053                 chmod +x try
1054                 ./try > today
1055                 if test -s today; then
1056                         sharpbang='#! '
1057                 else
1058                         sharpbang=': use '
1059                 fi
1060         fi
1061 else
1062         echo " "
1063         echo "Your $sh doesn't grok # comments--I will strip them later on."
1064         shsharp=false
1065         cd ..
1066         echo "exec grep -v '^[  ]*#'" >spitshell
1067         chmod +x spitshell
1068         $eunicefix spitshell
1069         spitshell=`pwd`/spitshell
1070         cd UU
1071         echo "I presume that if # doesn't work, #! won't work either!"
1072         sharpbang=': use '
1073 fi
1074 rm -f try today
1075
1076 : figure out how to guarantee sh startup
1077 case "$startsh" in
1078 '') startsh=${sharpbang}${sh} ;;
1079 *)
1080 esac
1081 cat >try <<EOSS
1082 $startsh
1083 set abc
1084 test "$?abc" != 1
1085 EOSS
1086
1087 chmod +x try
1088 $eunicefix try
1089 if ./try; then
1090         : echo "Yup, it does."
1091 else
1092         echo "Hmm... '$startsh' does not guarantee sh startup..."
1093         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1094 fi
1095 rm -f try
1096
1097
1098 : Save command line options in file UU/cmdline.opt for later use in
1099 : generating config.sh.
1100 cat > cmdline.opt <<EOSH
1101 # Configure command line arguments.
1102 config_arg0='$0'
1103 config_args='$*'
1104 config_argc=$#
1105 EOSH
1106 argn=1
1107 for arg in "$@"; do
1108         cat >>cmdline.opt <<EOSH
1109 config_arg$argn='$arg'
1110 EOSH
1111         argn=`expr $argn + 1`
1112 done
1113
1114 : produce awk script to parse command line options
1115 cat >options.awk <<'EOF'
1116 BEGIN {
1117         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1118
1119         len = length(optstr);
1120         for (i = 1; i <= len; i++) {
1121                 c = substr(optstr, i, 1);
1122                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1123                 if (a == ":") {
1124                         arg[c] = 1;
1125                         i++;
1126                 }
1127                 opt[c] = 1;
1128         }
1129 }
1130 {
1131         expect = 0;
1132         str = $0;
1133         if (substr(str, 1, 1) != "-") {
1134                 printf("'%s'\n", str);
1135                 next;
1136         }
1137         len = length($0);
1138         for (i = 2; i <= len; i++) {
1139                 c = substr(str, i, 1);
1140                 if (!opt[c]) {
1141                         printf("-%s\n", substr(str, i));
1142                         next;
1143                 }
1144                 printf("-%s\n", c);
1145                 if (arg[c]) {
1146                         if (i < len)
1147                                 printf("'%s'\n", substr(str, i + 1));
1148                         else
1149                                 expect = 1;
1150                         next;
1151                 }
1152         }
1153 }
1154 END {
1155         if (expect)
1156                 print "?";
1157 }
1158 EOF
1159
1160 : process the command line options
1161 set X `for arg in "$@"; do echo "X$arg"; done |
1162         sed -e s/X// | awk -f options.awk`
1163 eval "set $*"
1164 shift
1165 rm -f options.awk
1166
1167 : set up default values
1168 fastread=''
1169 reuseval=false
1170 config_sh=''
1171 alldone=''
1172 error=''
1173 silent=''
1174 extractsh=''
1175 override=''
1176 knowitall=''
1177 rm -f optdef.sh posthint.sh
1178 cat >optdef.sh <<EOS
1179 $startsh
1180 EOS
1181
1182
1183 : option parsing
1184 while test $# -gt 0; do
1185         case "$1" in
1186         -d) shift; fastread=yes;;
1187         -e) shift; alldone=cont;;
1188         -f)
1189                 shift
1190                 cd ..
1191                 if test -r "$1"; then
1192                         config_sh="$1"
1193                 else
1194                         echo "$me: cannot read config file $1." >&2
1195                         error=true
1196                 fi
1197                 cd UU
1198                 shift;;
1199         -h) shift; error=true;;
1200         -r) shift; reuseval=true;;
1201         -s) shift; silent=true; realsilent=true;;
1202         -E) shift; alldone=exit;;
1203         -K) shift; knowitall=true;;
1204         -O) shift; override=true;;
1205         -S) shift; silent=true; extractsh=true;;
1206         -D)
1207                 shift
1208                 case "$1" in
1209                 *=)
1210                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1211                         echo "$me: ignoring -D $1" >&2
1212                         ;;
1213                 *=*) echo "$1" | \
1214                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1215                 *) echo "$1='define'" >> optdef.sh;;
1216                 esac
1217                 shift
1218                 ;;
1219         -U)
1220                 shift
1221                 case "$1" in
1222                 *=) echo "$1" >> optdef.sh;;
1223                 *=*)
1224                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1225                         echo "$me: ignoring -U $1" >&2
1226                         ;;
1227                 *) echo "$1='undef'" >> optdef.sh;;
1228                 esac
1229                 shift
1230                 ;;
1231         -A)
1232             shift
1233             xxx=''
1234             yyy="$1"
1235             zzz=''
1236             uuu=undef
1237             case "$yyy" in
1238             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1239                  case "$zzz" in
1240                  *:*) zzz='' ;;
1241                  *)   xxx=append
1242                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1243                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1244                  esac
1245                  ;;
1246             esac
1247             case "$xxx" in
1248             '')  case "$yyy" in
1249                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1250                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1251                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1252                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1253                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1254                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1255                  esac
1256                  ;;       
1257             esac
1258             case "$xxx" in
1259             append)
1260                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1261             clear)
1262                 echo "$yyy=''"                  >> posthint.sh ;;
1263             define)
1264                 case "$zzz" in
1265                 '') zzz=define ;;
1266                 esac
1267                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1268             eval)
1269                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1270             prepend)
1271                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1272             undef)
1273                 case "$zzz" in
1274                 '') zzz="$uuu" ;;
1275                 esac
1276                 echo "$yyy=$zzz"                >> posthint.sh ;;
1277             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1278             esac
1279             shift
1280             ;;
1281         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1282             exit 0;;
1283         --) break;;
1284         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1285         *) break;;
1286         esac
1287 done
1288
1289 case "$error" in
1290 true)
1291         cat >&2 <<EOM
1292 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1293                  [-U symbol] [-U symbol=] [-A command:symbol...]
1294   -d : use defaults for all answers.
1295   -e : go on without questioning past the production of config.sh.
1296   -f : specify an alternate default configuration file.
1297   -h : print this help message and exit (with an error status).
1298   -r : reuse C symbols value if possible (skips costly nm extraction).
1299   -s : silent mode, only echoes questions and essential information.
1300   -D : define symbol to have some value:
1301          -D symbol         symbol gets the value 'define'
1302          -D symbol=value   symbol gets the value 'value'
1303   -E : stop at the end of questions, after having produced config.sh.
1304   -K : do not use unless you know what you are doing.
1305   -O : let -D and -U override definitions from loaded configuration file.
1306   -S : perform variable substitutions on all .SH files (can mix with -f)
1307   -U : undefine symbol:
1308          -U symbol    symbol gets the value 'undef'
1309          -U symbol=   symbol gets completely empty
1310   -A : manipulate symbol after the platform specific hints have been applied:
1311          -A symbol=value                append " "value to symbol
1312          -A append:symbol=value         append value to symbol
1313          -A define:symbol=value         define symbol to have value
1314          -A clear:symbol                define symbol to be ''
1315          -A define:symbol               define symbol to be 'define'
1316          -A eval:symbol=value           define symbol to be eval of value
1317          -A prepend:symbol=value        prepend value to symbol
1318          -A undef:symbol                define symbol to be 'undef'
1319          -A undef:symbol=               define symbol to be ''
1320   -V : print version number and exit (with a zero status).
1321 EOM
1322         exit 1
1323         ;;
1324 esac
1325
1326 : Sanity checks
1327 case "$fastread$alldone" in
1328 yescont|yesexit) ;;
1329 *)
1330         if test ! -t 0; then
1331                 echo "Say 'sh Configure', not 'sh <Configure'"
1332                 exit 1
1333         fi
1334         ;;
1335 esac
1336
1337 exec 4>&1
1338 case "$silent" in
1339 true) exec 1>/dev/null;;
1340 esac
1341
1342 : run the defines and the undefines, if any, but leave the file out there...
1343 touch optdef.sh
1344 . ./optdef.sh
1345 : create the posthint manipulation script and leave the file out there...
1346 touch posthint.sh
1347
1348 : set package name
1349 package=perl5
1350 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1351 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1352 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1353 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1354 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1355 esac
1356
1357 : Some greps do not return status, grrr.
1358 echo "grimblepritz" >grimble
1359 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1360         contains=contains
1361 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1362         contains=grep
1363 else
1364         contains=contains
1365 fi
1366 rm -f grimble
1367 : the following should work in any shell
1368 case "$contains" in
1369 contains*)
1370         echo " "
1371         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1372         cat >contains <<'EOSS'
1373 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1374 EOSS
1375 chmod +x contains
1376 esac
1377
1378 : Find the path to the source tree
1379 case "$src" in
1380 '') case "$0" in
1381     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1382          case "$src" in
1383          /*)    ;;
1384          *)     src=`cd ../$src && pwd` ;;
1385          esac
1386          ;;
1387     *)   src='.';;
1388     esac;;
1389 esac
1390 case "$src" in
1391 '')     src=/
1392         rsrc=/
1393         ;;
1394 /*) rsrc="$src";;
1395 *) rsrc="../$src";;
1396 esac
1397 if test -f $rsrc/Configure && \
1398         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1399 then
1400    : found it, so we are ok.
1401 else
1402         rsrc=''
1403         for src in . .. ../.. ../../.. ../../../..; do
1404                 if test -f ../$src/Configure && \
1405                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1406                 then
1407                         rsrc=../$src
1408                         break
1409                 fi
1410         done
1411 fi
1412 case "$rsrc" in
1413 '')
1414         cat <<EOM >&4
1415
1416 Sorry, I can't seem to locate the source dir for $package.  Please start
1417 Configure with an explicit path -- i.e. /some/path/Configure.
1418
1419 EOM
1420         exit 1
1421         ;;
1422 ../.)   rsrc='..';;
1423 *)
1424         echo " "
1425         echo "Sources for $package found in \"$src\"." >&4
1426         ;;
1427 esac
1428
1429 : script used to extract .SH files with variable substitutions
1430 cat >extract <<'EOS'
1431 CONFIGDOTSH=true
1432 echo "Doing variable substitutions on .SH files..."
1433 if test -f $src/MANIFEST; then
1434         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1435 else
1436         echo "(Looking for .SH files under the source directory.)"
1437         set x `(cd $src; find . -name "*.SH" -print)`
1438 fi
1439 shift
1440 case $# in
1441 0) set x `(cd $src; echo *.SH)`; shift;;
1442 esac
1443 if test ! -f $src/$1; then
1444         shift
1445 fi
1446 mkdir_p='
1447 name=$1;
1448 create="";
1449 while test $name; do
1450         if test ! -d "$name"; then
1451                 create="$name $create";
1452                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1453                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1454         else
1455                 name="";
1456         fi;
1457 done;
1458 for file in $create; do
1459         mkdir $file;
1460 done
1461 '
1462 for file in $*; do
1463         case "$src" in
1464         ".")
1465                 case "$file" in
1466                 */*)
1467                         dir=`expr X$file : 'X\(.*\)/'`
1468                         file=`expr X$file : 'X.*/\(.*\)'`
1469                         (cd $dir && . ./$file)
1470                         ;;
1471                 *)
1472                         . ./$file
1473                         ;;
1474                 esac
1475                 ;;
1476         *)
1477                 case "$file" in
1478                 */*)
1479                         dir=`expr X$file : 'X\(.*\)/'`
1480                         file=`expr X$file : 'X.*/\(.*\)'`
1481                         (set x $dir; shift; eval $mkdir_p)
1482                         sh <$src/$dir/$file
1483                         ;;
1484                 *)
1485                         sh <$src/$file
1486                         ;;
1487                 esac
1488                 ;;
1489         esac
1490 done
1491 if test -f $src/config_h.SH; then
1492         if test ! -f config.h; then
1493         : oops, they left it out of MANIFEST, probably, so do it anyway.
1494         . $src/config_h.SH
1495         fi
1496 fi
1497 EOS
1498
1499 : extract files and exit if asked to do so
1500 case "$extractsh" in
1501 true)
1502         case "$realsilent" in
1503         true) ;;
1504         *) exec 1>&4;;
1505         esac
1506         case "$config_sh" in
1507         '') config_sh='config.sh';;
1508         esac
1509         echo " "
1510         echo "Fetching answers from $config_sh..."
1511         cd ..
1512         . $config_sh
1513         test "$override" && . ./optdef.sh
1514         echo " "
1515         . UU/extract
1516         rm -rf UU
1517         echo "Done."
1518         exit 0
1519         ;;
1520 esac
1521
1522 : Eunice requires " " instead of "", can you believe it
1523 echo " "
1524 : Here we go...
1525 echo "Beginning of configuration questions for $package."
1526
1527 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1528
1529 : first determine how to suppress newline on echo command
1530 echo " "
1531 echo "Checking echo to see how to suppress newlines..."
1532 (echo "hi there\c" ; echo " ") >.echotmp
1533 if $contains c .echotmp >/dev/null 2>&1 ; then
1534         echo "...using -n."
1535         n='-n'
1536         c=''
1537 else
1538         cat <<'EOM'
1539 ...using \c
1540 EOM
1541         n=''
1542         c='\c'
1543 fi
1544 echo $n "The star should be here-->$c"
1545 echo '*'
1546 rm -f .echotmp
1547
1548 : Now test for existence of everything in MANIFEST
1549 echo " "
1550 if test -f $rsrc/MANIFEST; then
1551         echo "First let's make sure your kit is complete.  Checking..." >&4
1552         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1553         rm -f missing
1554         tmppwd=`pwd`
1555         for filelist in x??; do
1556                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1557         done
1558         if test -s missing; then
1559                 cat missing >&4
1560                 cat >&4 <<'EOM'
1561
1562 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1563
1564 You have the option of continuing the configuration process, despite the
1565 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1566 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1567 and contact the author (perlbug@perl.com).
1568
1569 EOM
1570                 echo $n "Continue? [n] $c" >&4
1571                 read ans
1572                 case "$ans" in
1573                 y*)
1574                         echo "Continuing..." >&4
1575                         rm -f missing
1576                         ;;
1577                 *)
1578                         echo "ABORTING..." >&4
1579                         kill $$
1580                         ;;
1581                 esac
1582         else
1583                 echo "Looks good..."
1584         fi
1585 else
1586         echo "There is no MANIFEST file.  I hope your kit is complete !"
1587 fi
1588 rm -f missing x??
1589
1590 echo " "
1591 : Find the appropriate value for a newline for tr
1592 if test -n "$DJGPP"; then
1593        trnl='\012'
1594 fi
1595 if test X"$trnl" = X; then
1596         case "`echo foo|tr '\n' x 2>/dev/null`" in
1597         foox) trnl='\n' ;;
1598         esac
1599 fi
1600 if test X"$trnl" = X; then
1601         case "`echo foo|tr '\012' x 2>/dev/null`" in
1602         foox) trnl='\012' ;;
1603         esac
1604 fi
1605 if test X"$trnl" = X; then
1606         cat <<EOM >&2
1607
1608 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1609
1610 EOM
1611         exit 1
1612 fi
1613
1614 : compute the number of columns on the terminal for proper question formatting
1615 case "$COLUMNS" in
1616 '') COLUMNS='80';;
1617 esac
1618
1619 : set up the echo used in my read
1620 myecho="case \"\$xxxm\" in
1621 '') echo $n \"\$rp $c\" >&4;;
1622 *) case \"\$rp\" in
1623         '') echo $n \"[\$xxxm] $c\";;
1624         *)
1625                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1626                         echo \"\$rp\" >&4
1627                         echo $n \"[\$xxxm] $c\" >&4
1628                 else
1629                         echo $n \"\$rp [\$xxxm] $c\" >&4
1630                 fi
1631                 ;;
1632         esac;;
1633 esac"
1634
1635 : now set up to do reads with possible shell escape and default assignment
1636 cat <<EOSC >myread
1637 $startsh
1638 xxxm=\$dflt
1639 $myecho
1640 ans='!'
1641 case "\$fastread" in
1642 yes) case "\$dflt" in
1643         '') ;;
1644         *) ans='';
1645                 case "\$silent-\$rp" in
1646                 true-) ;;
1647                 *) echo " " >&4;;
1648                 esac;;
1649         esac;;
1650 *) case "\$silent" in
1651         true) case "\$rp" in
1652                 '') ans='';;
1653                 esac;;
1654         esac;;
1655 esac
1656 while expr "X\$ans" : "X!" >/dev/null; do
1657         read answ
1658         set x \$xxxm
1659         shift
1660         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1661         case  "\$answ" in
1662         "!")
1663                 sh 1>&4
1664                 echo " "
1665                 $myecho
1666                 ;;
1667         !*)
1668                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1669                 shift
1670                 sh 1>&4 -c "\$*"
1671                 echo " "
1672                 $myecho
1673                 ;;
1674         "\$ans")
1675                 case "\$ans" in
1676                 \\&*)
1677                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1678                         shift
1679                         case "\$1" in
1680                         -d)
1681                                 fastread=yes
1682                                 echo "(OK, I'll run with -d after this question.)" >&4
1683                                 ;;
1684                         -*)
1685                                 echo "*** Sorry, \$1 not supported yet." >&4
1686                                 ;;
1687                         esac
1688                         $myecho
1689                         ans=!
1690                         ;;
1691                 esac;;
1692         *)
1693                 case "\$aok" in
1694                 y)
1695                         echo "*** Substitution done -- please confirm."
1696                         xxxm="\$ans"
1697                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1698                         xxxm="\$ans"
1699                         ans=!
1700                         ;;
1701                 *)
1702                         echo "*** Error -- try again."
1703                         ans=!
1704                         ;;
1705                 esac
1706                 $myecho
1707                 ;;
1708         esac
1709         case "\$ans\$xxxm\$nostick" in
1710         '')
1711                 ans=!
1712                 $myecho
1713                 ;;
1714         esac
1715 done
1716 case "\$ans" in
1717 '') ans="\$xxxm";;
1718 esac
1719 EOSC
1720
1721 : create .config dir to save info across Configure sessions
1722 test -d ../.config || mkdir ../.config
1723 cat >../.config/README <<EOF
1724 This directory created by Configure to save information that should
1725 persist across sessions for $package.
1726
1727 You may safely delete it if you wish.
1728 EOF
1729
1730 : general instructions
1731 needman=true
1732 firsttime=true
1733 user=`(logname) 2>/dev/null`
1734 case "$user" in
1735 '') user=`whoami 2>&1`;;
1736 esac
1737 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1738         firsttime=false
1739         echo " "
1740         rp='Would you like to see the instructions?'
1741         dflt=n
1742         . ./myread
1743         case "$ans" in
1744         [yY]*) ;;
1745         *) needman=false;;
1746         esac
1747 fi
1748 if $needman; then
1749         cat <<EOH
1750
1751 This installation shell script will examine your system and ask you questions
1752 to determine how the perl5 package should be installed. If you get
1753 stuck on a question, you may use a ! shell escape to start a subshell or
1754 execute a command.  Many of the questions will have default answers in square
1755 brackets; typing carriage return will give you the default.
1756
1757 On some of the questions which ask for file or directory names you are allowed
1758 to use the ~name construct to specify the login directory belonging to "name",
1759 even if you don't have a shell which knows about that.  Questions where this is
1760 allowed will be marked "(~name ok)".
1761
1762 EOH
1763         rp=''
1764         dflt='Type carriage return to continue'
1765         . ./myread
1766         cat <<'EOH'
1767
1768 The prompter used in this script allows you to use shell variables and
1769 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1770 in the default answer, as if the default line was a set of arguments given to a
1771 script shell.  This means you may also use $* to repeat the whole default line,
1772 so you do not have to re-type everything to add something to the default.
1773
1774 Everytime there is a substitution, you will have to confirm.  If there is an
1775 error (e.g. an unmatched backtick), the default answer will remain unchanged
1776 and you will be prompted again.
1777
1778 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1779 the questions and use the computed defaults (or the previous answers if there
1780 was already a config.sh file). Type 'Configure -h' for a list of options.
1781 You may also start interactively and then answer '& -d' at any prompt to turn
1782 on the non-interactive behaviour for the remainder of the execution.
1783
1784 EOH
1785         . ./myread
1786         cat <<EOH
1787
1788 Much effort has been expended to ensure that this shell script will run on any
1789 Unix system.  If despite that it blows up on yours, your best bet is to edit
1790 Configure and run it again.  If you can't run Configure for some reason,
1791 you'll have to generate a config.sh file by hand.  Whatever problems you
1792 have, let me (perlbug@perl.com) know how I blew it.
1793
1794 This installation script affects things in two ways:
1795
1796 1) it may do direct variable substitutions on some of the files included
1797    in this kit.
1798 2) it builds a config.h file for inclusion in C programs.  You may edit
1799    any of these files as the need arises after running this script.
1800
1801 If you make a mistake on a question, there is no easy way to back up to it
1802 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1803 files.  Configure will offer to let you do this before it runs the SH files.
1804
1805 EOH
1806         dflt='Type carriage return to continue'
1807         . ./myread
1808         case "$firsttime" in
1809         true) echo $user >>../.config/instruct;;
1810         esac
1811 fi
1812
1813 : find out where common programs are
1814 echo " "
1815 echo "Locating common programs..." >&4
1816 cat <<EOSC >loc
1817 $startsh
1818 case \$# in
1819 0) exit 1;;
1820 esac
1821 thing=\$1
1822 shift
1823 dflt=\$1
1824 shift
1825 for dir in \$*; do
1826         case "\$thing" in
1827         .)
1828         if test -d \$dir/\$thing; then
1829                 echo \$dir
1830                 exit 0
1831         fi
1832         ;;
1833         *)
1834         for thisthing in \$dir/\$thing; do
1835                 : just loop through to pick last item
1836         done
1837         if test -f \$thisthing; then
1838                 echo \$thisthing
1839                 exit 0
1840         elif test -f \$dir/\$thing.exe; then
1841                 if test -n "$DJGPP"; then
1842                         echo \$dir/\$thing.exe
1843                 else
1844                         : on Eunice apparently
1845                         echo \$dir/\$thing
1846                 fi
1847                 exit 0
1848         fi
1849         ;;
1850         esac
1851 done
1852 echo \$dflt
1853 exit 1
1854 EOSC
1855 chmod +x loc
1856 $eunicefix loc
1857 loclist="
1858 awk
1859 cat
1860 comm
1861 cp
1862 echo
1863 expr
1864 grep
1865 ls
1866 make
1867 mkdir
1868 rm
1869 sed
1870 sort
1871 touch
1872 tr
1873 uniq
1874 "
1875 trylist="
1876 Mcc
1877 ar
1878 byacc
1879 cpp
1880 csh
1881 date
1882 egrep
1883 gzip
1884 less
1885 ln
1886 more
1887 nm
1888 nroff
1889 pg
1890 test
1891 uname
1892 zip
1893 "
1894 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1895 pth="$pth /lib /usr/lib"
1896 for file in $loclist; do
1897         eval xxx=\$$file
1898         case "$xxx" in
1899         /*|?:[\\/]*)
1900                 if test -f "$xxx"; then
1901                         : ok
1902                 else
1903                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1904                         xxx=`./loc $file $file $pth`
1905                 fi
1906                 ;;
1907         '') xxx=`./loc $file $file $pth`;;
1908         *) xxx=`./loc $xxx $xxx $pth`;;
1909         esac
1910         eval $file=$xxx
1911         eval _$file=$xxx
1912         case "$xxx" in
1913         /*)
1914                 echo $file is in $xxx.
1915                 ;;
1916         ?:[\\/]*)
1917                 echo $file is in $xxx.
1918                 ;;
1919         *)
1920                 echo "I don't know where '$file' is, and my life depends on it." >&4
1921                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1922                 exit 1
1923                 ;;
1924         esac
1925 done
1926 echo " "
1927 echo "Don't worry if any of the following aren't found..."
1928 say=offhand
1929 for file in $trylist; do
1930         eval xxx=\$$file
1931         case "$xxx" in
1932         /*|?:[\\/]*)
1933                 if test -f "$xxx"; then
1934                         : ok
1935                 else
1936                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1937                         xxx=`./loc $file $file $pth`
1938                 fi
1939                 ;;
1940         '') xxx=`./loc $file $file $pth`;;
1941         *) xxx=`./loc $xxx $xxx $pth`;;
1942         esac
1943         eval $file=$xxx
1944         eval _$file=$xxx
1945         case "$xxx" in
1946         /*)
1947                 echo $file is in $xxx.
1948                 ;;
1949         ?:[\\/]*)
1950                 echo $file is in $xxx.
1951                 ;;
1952         *)
1953                 echo "I don't see $file out there, $say."
1954                 say=either
1955                 ;;
1956         esac
1957 done
1958 case "$egrep" in
1959 egrep)
1960         echo "Substituting grep for egrep."
1961         egrep=$grep
1962         ;;
1963 esac
1964 case "$ln" in
1965 ln)
1966         echo "Substituting cp for ln."
1967         ln=$cp
1968         ;;
1969 esac
1970 case "$test" in
1971 test)
1972         echo "Hopefully test is built into your sh."
1973         ;;
1974 *)
1975         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1976                 echo "Using the test built into your sh."
1977                 test=test
1978                 _test=test
1979         fi
1980         ;;
1981 esac
1982 case "$echo" in
1983 echo)
1984         echo "Hopefully echo is built into your sh."
1985         ;;
1986 '') ;;
1987 *)
1988         echo " "
1989 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1990         $echo $n "hi there$c" >foo1
1991         echo $n "hi there$c" >foo2
1992         if cmp foo1 foo2 >/dev/null 2>&1; then
1993                 echo "They are compatible.  In fact, they may be identical."
1994         else
1995                 case "$n" in
1996                 '-n') n='' c='\c';;
1997                 *) n='-n' c='';;
1998                 esac
1999                 cat <<FOO
2000 They are not compatible!  You are probably running ksh on a non-USG system.
2001 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2002 have echo built in and we may have to run some Bourne shell scripts.  That
2003 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2004
2005 FOO
2006                 $echo $n "The star should be here-->$c"
2007                 $echo "*"
2008         fi
2009         $rm -f foo1 foo2
2010         ;;
2011 esac
2012
2013 : determine whether symbolic links are supported
2014 echo " "
2015 $touch blurfl
2016 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2017         echo "Symbolic links are supported." >&4
2018         lns="$ln -s"
2019 else
2020         echo "Symbolic links are NOT supported." >&4
2021         lns="$ln"
2022 fi
2023 $rm -f blurfl sym
2024
2025 : see whether [:lower:] and [:upper:] are supported character classes
2026 echo " "
2027 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2028 ABYZ)
2029         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2030         up='[:upper:]'
2031         low='[:lower:]'
2032         ;;
2033 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2034         # (0xc9 and 0xd1), therefore that is a nice testing point.
2035         if test "X$up" = X -o "X$low" = X; then
2036             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2037             ij) up='[A-Z]'
2038                 low='[a-z]'
2039                 ;;
2040             esac
2041         fi
2042         if test "X$up" = X -o "X$low" = X; then
2043             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2044             ij) up='A-Z'
2045                 low='a-z'
2046                 ;;
2047             esac
2048         fi
2049         if test "X$up" = X -o "X$low" = X; then
2050             case "`echo IJ | od -x 2>/dev/null`" in
2051             *C9D1*|*c9d1*)
2052                 echo "Hey, this might be EBCDIC." >&4
2053                 if test "X$up" = X -o "X$low" = X; then
2054                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2055                     ij) up='[A-IJ-RS-Z]'
2056                         low='[a-ij-rs-z]'
2057                         ;;
2058                     esac
2059                 fi
2060                 if test "X$up" = X -o "X$low" = X; then
2061                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2062                     ij) up='A-IJ-RS-Z'
2063                         low='a-ij-rs-z'
2064                         ;;
2065                     esac
2066                 fi
2067                 ;;
2068             esac
2069         fi
2070 esac
2071 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2072 ij)
2073     echo "Using $up and $low to convert case." >&4
2074     ;;
2075 *)
2076     echo "I don't know how to translate letters from upper to lower case." >&4
2077     echo "Your tr is not acting any way I know of." >&4
2078     exit 1
2079     ;;
2080 esac
2081 : set up the translation script tr, must be called with ./tr of course
2082 cat >tr <<EOSC
2083 $startsh
2084 case "\$1\$2" in
2085 '[A-Z][a-z]') exec $tr '$up' '$low';;
2086 '[a-z][A-Z]') exec $tr '$low' '$up';;
2087 esac
2088 exec $tr "\$@"
2089 EOSC
2090 chmod +x tr
2091 $eunicefix tr
2092
2093 : Try to determine whether config.sh was made on this system
2094 case "$config_sh" in
2095 '')
2096 myuname=`$uname -a 2>/dev/null`
2097 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2098 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2099 # because the A-Z/a-z are not consecutive.
2100 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2101         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2102 newmyuname="$myuname"
2103 dflt=n
2104 case "$knowitall" in
2105 '')
2106         if test -f ../config.sh; then
2107                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2108                         eval "`grep myuname= ../config.sh`"
2109                 fi
2110                 if test "X$myuname" = "X$newmyuname"; then
2111                         dflt=y
2112                 fi
2113         fi
2114         ;;
2115 *) dflt=y;;
2116 esac
2117
2118 : Get old answers from old config file if Configure was run on the
2119 : same system, otherwise use the hints.
2120 hint=default
2121 cd ..
2122 if test -f config.sh; then
2123         echo " "
2124         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2125         . UU/myread
2126         case "$ans" in
2127         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2128         *)  echo "Fetching default answers from your old config.sh file..." >&4
2129                 tmp_n="$n"
2130                 tmp_c="$c"
2131                 tmp_sh="$sh"
2132                 . ./config.sh
2133                 cp config.sh UU
2134                 n="$tmp_n"
2135                 c="$tmp_c"
2136                 : Older versions did not always set $sh.  Catch re-use of such
2137                 : an old config.sh.
2138                 case "$sh" in
2139                 '') sh="$tmp_sh" ;;
2140                 esac
2141                 hint=previous
2142                 ;;
2143         esac
2144 fi
2145 if test ! -f config.sh; then
2146         $cat <<EOM
2147
2148 First time through, eh?  I have some defaults handy for some systems
2149 that need some extra help getting the Configure answers right:
2150
2151 EOM
2152         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2153         dflt=''
2154         : Half the following guesses are probably wrong... If you have better
2155         : tests or hints, please send them to perlbug@perl.com
2156         : The metaconfig authors would also appreciate a copy...
2157         $test -f /irix && osname=irix
2158         $test -f /xenix && osname=sco_xenix
2159         $test -f /dynix && osname=dynix
2160         $test -f /dnix && osname=dnix
2161         $test -f /lynx.os && osname=lynxos
2162         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2163         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2164         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2165         $test -f /bin/mips && /bin/mips && osname=mips
2166         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2167                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2168         $test -d /usr/apollo/bin && osname=apollo
2169         $test -f /etc/saf/_sactab && osname=svr4
2170         $test -d /usr/include/minix && osname=minix
2171         if $test -d /MachTen -o -d /MachTen_Folder; then
2172                 osname=machten
2173                 if $test -x /sbin/version; then
2174                         osvers=`/sbin/version | $awk '{print $2}' |
2175                         $sed -e 's/[A-Za-z]$//'`
2176                 elif $test -x /usr/etc/version; then
2177                         osvers=`/usr/etc/version | $awk '{print $2}' |
2178                         $sed -e 's/[A-Za-z]$//'`
2179                 else
2180                         osvers="$2.$3"
2181                 fi
2182         fi
2183
2184         $test -f /sys/posix.dll &&
2185                 $test -f /usr/bin/what &&
2186                 set X `/usr/bin/what /sys/posix.dll` &&
2187                 $test "$3" = UWIN &&
2188                 osname=uwin &&
2189                 osvers="$5"
2190
2191         if $test -f $uname; then
2192                 set X $myuname
2193                 shift
2194
2195                 case "$5" in
2196                 fps*) osname=fps ;;
2197                 mips*)
2198                         case "$4" in
2199                         umips) osname=umips ;;
2200                         *) osname=mips ;;
2201                         esac;;
2202                 [23]100) osname=mips ;;
2203                 next*) osname=next ;;
2204                 i386*)
2205                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2206                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2207                                 osname='sco'
2208                                 osvers=$tmp
2209                         elif $test -f /etc/kconfig; then
2210                                 osname=isc
2211                                 if test "$lns" = "$ln -s"; then
2212                                         osvers=4
2213                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2214                                         osvers=3
2215                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2216                                         osvers=2
2217                                 fi
2218                         fi
2219                         tmp=''
2220                         ;;
2221                 pc*)
2222                         if test -n "$DJGPP"; then
2223                                 osname=dos
2224                                 osvers=djgpp
2225                         fi
2226                         ;;
2227                 esac
2228
2229                 case "$1" in
2230                 aix) osname=aix
2231                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2232                         case "$tmp" in
2233                         'not found') osvers="$4"."$3" ;;
2234                         '<3240'|'<>3240') osvers=3.2.0 ;;
2235                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2236                         '=3250'|'>3250') osvers=3.2.5 ;;
2237                         *) osvers=$tmp;;
2238                         esac
2239                         ;;
2240                 bsd386) osname=bsd386
2241                         osvers=`$uname -r`
2242                         ;;
2243                 cygwin*) osname=cygwin
2244                         osvers="$3"
2245                         ;;
2246                 *dc.osx) osname=dcosx
2247                         osvers="$3"
2248                         ;;
2249                 dnix) osname=dnix
2250                         osvers="$3"
2251                         ;;
2252                 domainos) osname=apollo
2253                         osvers="$3"
2254                         ;;
2255                 dgux) osname=dgux 
2256                         osvers="$3"
2257                         ;;
2258                 dynixptx*) osname=dynixptx
2259                         osvers=`echo "$4"|sed 's/^v//'`
2260                         ;;
2261                 freebsd) osname=freebsd 
2262                         osvers="$3" ;;
2263                 genix) osname=genix ;;
2264                 hp*) osname=hpux 
2265                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2266                         ;;
2267                 irix*) osname=irix
2268                         case "$3" in
2269                         4*) osvers=4 ;;
2270                         5*) osvers=5 ;;
2271                         *)      osvers="$3" ;;
2272                         esac
2273                         ;;
2274                 linux) osname=linux
2275                         case "$3" in
2276                         *)      osvers="$3" ;;
2277                         esac
2278                         ;;
2279                 MiNT) osname=mint
2280                         ;;
2281                 netbsd*) osname=netbsd
2282                         osvers="$3"
2283                         ;;
2284                 news-os) osvers="$3"
2285                         case "$3" in
2286                         4*) osname=newsos4 ;;
2287                         *) osname=newsos ;;
2288                         esac
2289                         ;;
2290                 next*) osname=next ;;
2291                 POSIX-BC | posix-bc ) osname=posix-bc
2292                         osvers="$3"
2293                         ;;
2294                 powerux | power_ux | powermax_os | powermaxos | \
2295                 powerunix | power_unix) osname=powerux
2296                         osvers="$3"
2297                         ;;
2298                 qnx) osname=qnx
2299                         osvers="$4"
2300                         ;;
2301                 solaris) osname=solaris
2302                         case "$3" in
2303                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2304                         *)      osvers="$3" ;;
2305                         esac
2306                         ;;
2307                 sunos) osname=sunos
2308                         case "$3" in
2309                         5*) osname=solaris
2310                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2311                         *)      osvers="$3" ;;
2312                         esac
2313                         ;;
2314                 titanos) osname=titanos
2315                         case "$3" in
2316                         1*) osvers=1 ;;
2317                         2*) osvers=2 ;;
2318                         3*) osvers=3 ;;
2319                         4*) osvers=4 ;;
2320                         *)      osvers="$3" ;;
2321                         esac
2322                         ;;
2323                 ultrix) osname=ultrix
2324                         osvers="$3"
2325                         ;;
2326                 osf1|mls+)      case "$5" in
2327                                 alpha)
2328                                         osname=dec_osf
2329                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2330                                         ;;
2331                         hp*)    osname=hp_osf1  ;;
2332                         mips)   osname=mips_osf1 ;;
2333                         esac
2334                         ;;
2335                 unixware) osname=svr5
2336                         osvers="$4"
2337                         ;;
2338                 uts) osname=uts
2339                         osvers="$3"
2340                         ;;
2341                 $2) case "$osname" in
2342                         *isc*) ;;
2343                         *freebsd*) ;;
2344                         svr*)
2345                                 : svr4.x or possibly later
2346                                 case "svr$3" in 
2347                                 ${osname}*)
2348                                         osname=svr$3
2349                                         osvers=$4
2350                                         ;;
2351                                 esac
2352                                 case "$osname" in
2353                                 svr4.0)
2354                                         : Check for ESIX
2355                                         if test -f /stand/boot ; then
2356                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2357                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2358                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2359                                                         if test -n "$isesix"; then
2360                                                                 osname=esix4
2361                                                         fi
2362                                                 fi
2363                                         fi
2364                                         ;;
2365                                 esac
2366                                 ;;
2367                         *)      if test -f /etc/systemid; then
2368                                         osname=sco
2369                                         set `echo $3 | $sed 's/\./ /g'` $4
2370                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2371                                                 osvers=$1.$2.$3
2372                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2373                                                 osvers=$1.$2
2374                                         elif $test -f $src/hints/sco_$1.sh; then
2375                                                 osvers=$1
2376                                         fi
2377                                 else
2378                                         case "$osname" in
2379                                         '') : Still unknown.  Probably a generic Sys V.
2380                                                 osname="sysv"
2381                                                 osvers="$3"
2382                                                 ;;
2383                                         esac
2384                                 fi
2385                                 ;;
2386                         esac
2387                         ;;
2388                 *)      case "$osname" in
2389                         '') : Still unknown.  Probably a generic BSD.
2390                                 osname="$1"
2391                                 osvers="$3"
2392                                 ;;
2393                         esac
2394                         ;;
2395                 esac
2396         else
2397                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2398                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2399                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2400                                 osname=news_os
2401                         fi
2402                         $rm -f UU/kernel.what
2403                 elif test -d c:/.; then
2404                         set X $myuname
2405                         osname=os2
2406                         osvers="$5"
2407                 fi
2408         fi
2409         
2410         : Now look for a hint file osname_osvers, unless one has been
2411         : specified already.
2412         case "$hintfile" in
2413         ''|' ')
2414                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2415                 : Also try without trailing minor version numbers.
2416                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2417                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2418                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2419                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2420                 case "$file" in
2421                 '') dflt=none ;;
2422                 *)  case "$osvers" in
2423                         '') dflt=$file
2424                                 ;;
2425                         *)  if $test -f $src/hints/$file.sh ; then
2426                                         dflt=$file
2427                                 elif $test -f $src/hints/$xfile.sh ; then
2428                                         dflt=$xfile
2429                                 elif $test -f $src/hints/$xxfile.sh ; then
2430                                         dflt=$xxfile
2431                                 elif $test -f $src/hints/$xxxfile.sh ; then
2432                                         dflt=$xxxfile
2433                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2434                                         dflt=$xxxxfile
2435                                 elif $test -f "$src/hints/${osname}.sh" ; then
2436                                         dflt="${osname}"
2437                                 else
2438                                         dflt=none
2439                                 fi
2440                                 ;;
2441                         esac
2442                         ;;
2443                 esac
2444                 if $test -f Policy.sh ; then
2445                         case "$dflt" in
2446                         *Policy*) ;;
2447                         none) dflt="Policy" ;;
2448                         *) dflt="Policy $dflt" ;;
2449                         esac
2450                 fi
2451                 ;;
2452         *)
2453                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2454                 ;;
2455         esac
2456
2457         if $test -f Policy.sh ; then
2458                 $cat <<EOM
2459
2460 There's also a Policy hint file available, which should make the
2461 site-specific (policy) questions easier to answer.
2462 EOM
2463
2464         fi
2465
2466         $cat <<EOM
2467
2468 You may give one or more space-separated answers, or "none" if appropriate.
2469 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2470 is a good thing.  DO NOT give a wrong version or a wrong OS.
2471
2472 EOM
2473
2474         rp="Which of these apply, if any?"
2475         . UU/myread
2476         tans=$ans
2477         for file in $tans; do
2478                 if $test X$file = XPolicy -a -f Policy.sh; then
2479                         . Policy.sh
2480                         $cat Policy.sh >> UU/config.sh
2481                 elif $test -f $src/hints/$file.sh; then
2482                         . $src/hints/$file.sh
2483                         $cat $src/hints/$file.sh >> UU/config.sh
2484                 elif $test X$tans = X -o X$tans = Xnone ; then
2485                         : nothing
2486                 else
2487                         : Give one chance to correct a possible typo.
2488                         echo "$file.sh does not exist"
2489                         dflt=$file
2490                         rp="hint to use instead?"
2491                         . UU/myread
2492                         for file in $ans; do
2493                                 if $test -f "$src/hints/$file.sh"; then
2494                                         . $src/hints/$file.sh
2495                                         $cat $src/hints/$file.sh >> UU/config.sh
2496                                 elif $test X$ans = X -o X$ans = Xnone ; then
2497                                         : nothing
2498                                 else
2499                                         echo "$file.sh does not exist -- ignored."
2500                                 fi
2501                         done
2502                 fi
2503         done
2504
2505         hint=recommended
2506         : Remember our hint file for later.
2507         if $test -f "$src/hints/$file.sh" ; then
2508                 hintfile="$file"
2509         else
2510                 hintfile=''
2511         fi
2512 fi
2513 cd UU
2514 ;;
2515 *)
2516         echo " "
2517         echo "Fetching default answers from $config_sh..." >&4
2518         tmp_n="$n"
2519         tmp_c="$c"
2520         cd ..
2521         cp $config_sh config.sh 2>/dev/null
2522         chmod +w config.sh
2523         . ./config.sh
2524         cd UU
2525         cp ../config.sh .
2526         n="$tmp_n"
2527         c="$tmp_c"
2528         hint=previous
2529         ;;
2530 esac
2531 test "$override" && . ./optdef.sh
2532 myuname="$newmyuname"
2533
2534 : Restore computed paths
2535 for file in $loclist $trylist; do
2536         eval $file="\$_$file"
2537 done
2538
2539 cat << EOM
2540
2541 Configure uses the operating system name and version to set some defaults.
2542 The default value is probably right if the name rings a bell. Otherwise,
2543 since spelling matters for me, either accept the default or answer "none"
2544 to leave it blank.
2545
2546 EOM
2547 case "$osname" in
2548         ''|' ')
2549                 case "$hintfile" in
2550                 ''|' '|none) dflt=none ;;
2551                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2552                 esac
2553                 ;;
2554         *) dflt="$osname" ;;
2555 esac
2556 rp="Operating system name?"
2557 . ./myread
2558 case "$ans" in
2559 none)  osname='' ;;
2560 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2561 esac
2562 echo " "
2563 case "$osvers" in
2564         ''|' ')
2565                 case "$hintfile" in
2566                 ''|' '|none) dflt=none ;;
2567                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2568                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2569                         case "$dflt" in
2570                         ''|' ') dflt=none ;;
2571                         esac
2572                         ;;
2573                 esac
2574                 ;;
2575         *) dflt="$osvers" ;;
2576 esac
2577 rp="Operating system version?"
2578 . ./myread
2579 case "$ans" in
2580 none)  osvers='' ;;
2581 *) osvers="$ans" ;;
2582 esac
2583
2584
2585 . ./posthint.sh
2586
2587 : who configured the system
2588 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2589 cf_by=`(logname) 2>/dev/null`
2590 case "$cf_by" in
2591 "")
2592         cf_by=`(whoami) 2>/dev/null`
2593         case "$cf_by" in
2594         "") cf_by=unknown ;;
2595         esac ;;
2596 esac
2597
2598 : set up the script used to warn in case of inconsistency
2599 cat <<EOS >whoa
2600 $startsh
2601 EOS
2602 cat <<'EOSC' >>whoa
2603 dflt=y
2604 echo " "
2605 echo "*** WHOA THERE!!! ***" >&4
2606 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2607 rp="    Keep the $hint value?"
2608 . ./myread
2609 case "$ans" in
2610 y) td=$was; tu=$was;;
2611 esac
2612 EOSC
2613
2614 : function used to set $1 to $val
2615 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2616 case "$val$was" in
2617 $define$undef) . ./whoa; eval "$var=\$td";;
2618 $undef$define) . ./whoa; eval "$var=\$tu";;
2619 *) eval "$var=$val";;
2620 esac'
2621
2622 case "$usethreads" in
2623 $define|true|[yY]*)     dflt='y';;
2624 *) dflt='n';;
2625 esac
2626 cat <<EOM
2627
2628 Perl can be built to take advantage of threads on some systems.
2629 To do so, Configure can be run with -Dusethreads.
2630
2631 Note that threading is a highly experimental feature, and
2632 some known race conditions still remain.  If you choose to try
2633 it, be very sure to not actually deploy it for production
2634 purposes.  README.threads has more details, and is required
2635 reading if you enable threads.
2636
2637 If this doesn't make any sense to you, just accept the default '$dflt'.
2638 EOM
2639 rp='Build a threading Perl?'
2640 . ./myread
2641 case "$ans" in
2642 y|Y)    val="$define" ;;
2643 *)      val="$undef" ;;
2644 esac
2645 set usethreads
2646 eval $setvar
2647
2648 case "$usethreads" in
2649 $define)
2650         $cat <<EOM
2651
2652 As of 5.5.640, Perl has two different internal threading implementations,
2653 the 5.005 version (5005threads) and an interpreter-based version
2654 (ithreads) that has one interpreter per thread.  Both are very 
2655 experimental.  This arrangement exists to help developers work out
2656 which one is better.
2657
2658 If you're a casual user, you probably don't want interpreter-threads
2659 at this time.  There doesn't yet exist a way to create threads from
2660 within Perl in this model, i.e., "use Thread;" will NOT work.
2661 EOM
2662         : Default to ithreads unless overridden on command line or with
2663         : old config.sh
2664         dflt='y'
2665         case "$use5005threads" in
2666                 $define|true|[yY]*) dflt='n';;
2667         esac
2668         case "$useithreads" in
2669                 $undef|false|[nN]*) dflt='n';;
2670         esac
2671         rp='Use interpreter-based ithreads?'
2672         . ./myread
2673         case "$ans" in
2674         y|Y)    val="$define" ;;
2675         *)      val="$undef" ;;
2676         esac
2677         set useithreads
2678         eval $setvar
2679         : Now set use5005threads to the opposite value.
2680         case "$useithreads" in
2681         $define) val="$undef" ;;
2682         *) val="$define" ;;
2683         esac
2684         set use5005threads
2685         eval $setvar
2686         ;;
2687 *)
2688         useithreads="$undef"
2689         use5005threads="$undef"
2690         ;;
2691 esac
2692
2693 case "$d_oldpthreads" in
2694 '')     : Configure tests would be welcome here.  For now, assume undef.
2695         val="$undef" ;;
2696 *)      val="$d_oldpthreads" ;;
2697 esac
2698 set d_oldpthreads
2699 eval $setvar
2700
2701
2702 case "$usethreads" in
2703 "$define"|true|[yY]*)
2704 : Look for a hint-file generated 'call-back-unit'.  If the
2705 : user has specified that a threading perl is to be built,
2706 : we may need to set or change some other defaults.
2707         if $test -f usethreads.cbu; then
2708                 echo "Your platform has some specific hints for threaded builds, using them..."
2709                 . ./usethreads.cbu
2710         else
2711                 $cat <<EOM
2712 (Your platform doesn't have any specific hints for threaded builds.
2713  Assuming POSIX threads, then.)
2714 EOM
2715         fi
2716         ;;
2717 esac
2718
2719 cat <<EOM
2720
2721 Perl can be built so that multiple Perl interpreters can coexist
2722 within the same Perl executable.
2723 EOM
2724
2725 case "$useithreads" in
2726 $define)
2727         cat <<EOM
2728 This multiple interpreter support is required for interpreter-based threads.
2729 EOM
2730         val="$define"
2731         ;;
2732 *)      case "$usemultiplicity" in
2733         $define|true|[yY]*)     dflt='y';;
2734         *) dflt='n';;
2735         esac
2736         echo " "
2737         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2738         rp='Build Perl for multiplicity?'
2739         . ./myread
2740         case "$ans" in
2741         y|Y)    val="$define" ;;
2742         *)      val="$undef" ;;
2743         esac
2744         ;;
2745 esac
2746 set usemultiplicity
2747 eval $setvar
2748
2749 : determine where manual pages are on this system
2750 echo " "
2751 case "$sysman" in
2752 '') 
2753         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2754         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2755         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2756         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2757         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2758         sysman=`./loc . /usr/man/man1 $syspath`
2759         ;;
2760 esac
2761 if $test -d "$sysman"; then
2762         echo "System manual is in $sysman." >&4
2763 else
2764         echo "Could not find manual pages in source form." >&4
2765 fi
2766
2767 : see what memory models we can support
2768 case "$models" in
2769 '')
2770         $cat >pdp11.c <<'EOP'
2771 int main() {
2772 #ifdef pdp11
2773         exit(0);
2774 #else
2775         exit(1);
2776 #endif
2777 }
2778 EOP
2779         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2780         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2781                 dflt='unsplit split'
2782         else
2783                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2784                 case "$tans" in
2785                 X) dflt='none';;
2786                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2787                                 dflt='small'
2788                         else
2789                                 dflt=''
2790                         fi
2791                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2792                                 dflt="$dflt medium"
2793                         fi
2794                         if $test -d /lib/large || $test -d /usr/lib/large; then
2795                                 dflt="$dflt large"
2796                         fi
2797                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2798                                 dflt="$dflt huge"
2799                         fi
2800                 esac
2801         fi;;
2802 *) dflt="$models";;
2803 esac
2804 $cat <<EOM
2805  
2806 Some systems have different model sizes.  On most systems they are called
2807 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2808 split.  If your system doesn't support different memory models, say "none".
2809 If you wish to force everything to one memory model, say "none" here and
2810 put the appropriate flags later when it asks you for other cc and ld flags.
2811 Venix systems may wish to put "none" and let the compiler figure things out.
2812 (In the following question multiple model names should be space separated.)
2813
2814 The default for most systems is "none".
2815
2816 EOM
2817 rp="Which memory models are supported?"
2818 . ./myread
2819 models="$ans"
2820
2821 case "$models" in
2822 none)
2823         small=''
2824         medium=''
2825         large=''
2826         huge=''
2827         unsplit=''
2828         split=''
2829         ;;
2830 *split)
2831         case "$split" in
2832         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2833                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2834                         dflt='-i'
2835                 else
2836                         dflt='none'
2837                 fi;;
2838         *) dflt="$split";;
2839         esac
2840         rp="What flag indicates separate I and D space?"
2841         . ./myread
2842         tans="$ans"
2843         case "$tans" in
2844         none) tans='';;
2845         esac
2846         split="$tans"
2847         unsplit='';;
2848 *large*|*small*|*medium*|*huge*)
2849         case "$models" in
2850         *large*)
2851                 case "$large" in
2852                 '') dflt='-Ml';;
2853                 *) dflt="$large";;
2854                 esac
2855         rp="What flag indicates large model?"
2856         . ./myread
2857         tans="$ans"
2858         case "$tans" in
2859         none) tans='';
2860         esac
2861         large="$tans";;
2862         *) large='';;
2863         esac
2864         case "$models" in
2865         *huge*) case "$huge" in
2866                 '') dflt='-Mh';;
2867                 *) dflt="$huge";;
2868                 esac
2869                 rp="What flag indicates huge model?"
2870                 . ./myread
2871                 tans="$ans"
2872                 case "$tans" in
2873                 none) tans='';
2874                 esac
2875                 huge="$tans";;
2876         *) huge="$large";;
2877         esac
2878         case "$models" in
2879         *medium*) case "$medium" in
2880                 '') dflt='-Mm';;
2881                 *) dflt="$medium";;
2882                 esac
2883                 rp="What flag indicates medium model?"
2884                 . ./myread
2885                 tans="$ans"
2886                 case "$tans" in
2887                 none) tans='';
2888                 esac
2889                 medium="$tans";;
2890         *) medium="$large";;
2891         esac
2892         case "$models" in
2893         *small*) case "$small" in
2894                 '') dflt='none';;
2895                 *) dflt="$small";;
2896                 esac
2897                 rp="What flag indicates small model?"
2898                 . ./myread
2899                 tans="$ans"
2900                 case "$tans" in
2901                 none) tans='';
2902                 esac
2903                 small="$tans";;
2904         *) small='';;
2905         esac
2906         ;;
2907 *)
2908         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2909         ;;
2910 esac
2911 $rm -f pdp11.* pdp11
2912
2913 : make some quick guesses about what we are up against
2914 echo " "
2915 $echo $n "Hmm...  $c"
2916 echo exit 1 >bsd
2917 echo exit 1 >usg
2918 echo exit 1 >v7
2919 echo exit 1 >osf1
2920 echo exit 1 >eunice
2921 echo exit 1 >xenix
2922 echo exit 1 >venix
2923 echo exit 1 >os2
2924 d_bsd="$undef"
2925 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2926 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2927 then
2928         echo "Looks kind of like an OSF/1 system, but we'll see..."
2929         echo exit 0 >osf1
2930 elif test `echo abc | tr a-z A-Z` = Abc ; then
2931         xxx=`./loc addbib blurfl $pth`
2932         if $test -f $xxx; then
2933         echo "Looks kind of like a USG system with BSD features, but we'll see..."
2934                 echo exit 0 >bsd
2935                 echo exit 0 >usg
2936         else
2937                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2938                         echo "Looks kind of like an extended USG system, but we'll see..."
2939                 else
2940                         echo "Looks kind of like a USG system, but we'll see..."
2941                 fi
2942                 echo exit 0 >usg
2943         fi
2944 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2945         echo "Looks kind of like a BSD system, but we'll see..."
2946         d_bsd="$define"
2947         echo exit 0 >bsd
2948 else
2949         echo "Looks kind of like a Version 7 system, but we'll see..."
2950         echo exit 0 >v7
2951 fi
2952 case "$eunicefix" in
2953 *unixtovms*)
2954         $cat <<'EOI'
2955 There is, however, a strange, musty smell in the air that reminds me of
2956 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2957 EOI
2958         echo exit 0 >eunice
2959         d_eunice="$define"
2960 : it so happens the Eunice I know will not run shell scripts in Unix format
2961         ;;
2962 *)
2963         echo " "
2964         echo "Congratulations.  You aren't running Eunice."
2965         d_eunice="$undef"
2966         ;;
2967 esac
2968 : Detect OS2.  The p_ variable is set above in the Head.U unit.
2969 case "$p_" in
2970 :) ;;
2971 *)
2972         $cat <<'EOI'
2973 I have the feeling something is not exactly right, however...don't tell me...
2974 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2975 EOI
2976         echo exit 0 >os2
2977         ;;
2978 esac
2979 if test -f /xenix; then
2980         echo "Actually, this looks more like a XENIX system..."
2981         echo exit 0 >xenix
2982         d_xenix="$define"
2983 else
2984         echo " "
2985         echo "It's not Xenix..."
2986         d_xenix="$undef"
2987 fi
2988 chmod +x xenix
2989 $eunicefix xenix
2990 if test -f /venix; then
2991         echo "Actually, this looks more like a VENIX system..."
2992         echo exit 0 >venix
2993 else
2994         echo " "
2995         if ./xenix; then
2996                 : null
2997         else
2998                 echo "Nor is it Venix..."
2999         fi
3000 fi
3001 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3002 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3003 $rm -f foo
3004
3005 : see if we need a special compiler
3006 echo " "
3007 if ./usg; then
3008         case "$cc" in
3009         '') case "$Mcc" in
3010                 /*) dflt='Mcc';;
3011                 *) case "$large" in
3012                         -M*) dflt='cc';;
3013                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3014                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3015                                                 dflt='cc'
3016                                         else
3017                                                 dflt='cc -M'
3018                                         fi
3019                                 else
3020                                         dflt='cc'
3021                                 fi;;
3022                         esac;;
3023                 esac;;
3024         *)  dflt="$cc";;
3025         esac
3026         case "$dflt" in
3027         *M*)    $cat <<'EOM'
3028 On some older systems the default C compiler will not resolve multiple global
3029 references that happen to have the same name.  On some such systems the "Mcc"
3030 command may be used to force these to be resolved.  On other systems a "cc -M"
3031 command is required.  (Note that the -M flag on other systems indicates a
3032 memory model to use!) If you have the Gnu C compiler, you might wish to use
3033 that instead.
3034
3035 EOM
3036         ;;
3037         esac
3038         rp="Use which C compiler?"
3039         . ./myread
3040         cc="$ans"
3041 else
3042         case "$cc" in
3043         '') dflt=cc;;
3044         *) dflt="$cc";;
3045         esac
3046         rp="Use which C compiler?"
3047         . ./myread
3048         cc="$ans"
3049 fi
3050 : Look for a hint-file generated 'call-back-unit'.  Now that the
3051 : user has specified the compiler, we may need to set or change some
3052 : other defaults.
3053 if $test -f cc.cbu; then
3054     . ./cc.cbu
3055 fi
3056 echo " "
3057 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3058 $cat >gccvers.c <<EOM
3059 #include <stdio.h>
3060 int main() {
3061 #ifdef __GNUC__
3062 #ifdef __VERSION__
3063         printf("%s\n", __VERSION__);
3064 #else
3065         printf("%s\n", "1");
3066 #endif
3067 #endif
3068         exit(0);
3069 }
3070 EOM
3071 if $cc $ldflags -o gccvers gccvers.c; then
3072         gccversion=`./gccvers`
3073         case "$gccversion" in
3074         '') echo "You are not using GNU cc." ;;
3075         *)  echo "You are using GNU cc $gccversion."
3076             ;;
3077         esac
3078 else
3079         echo " "
3080         echo "*** WHOA THERE!!! ***" >&4
3081         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3082         case "$knowitall" in
3083         '')
3084         echo "    You'd better start hunting for one and let me know about it." >&4
3085                 exit 1
3086                 ;;
3087         esac
3088 fi
3089 $rm -f gccvers*
3090 case "$gccversion" in
3091 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3092 esac
3093
3094 : decide how portable to be.  Allow command line overrides.
3095 case "$d_portable" in
3096 "$undef") ;;
3097 *)      d_portable="$define" ;;
3098 esac
3099
3100 : set up shell script to do ~ expansion
3101 cat >filexp <<EOSS
3102 $startsh
3103 : expand filename
3104 case "\$1" in
3105  ~/*|~)
3106         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3107         ;;
3108  ~*)
3109         if $test -f /bin/csh; then
3110                 /bin/csh -f -c "glob \$1"
3111                 failed=\$?
3112                 echo ""
3113                 exit \$failed
3114         else
3115                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3116                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3117                 if $test ! -d "\$dir"; then
3118                         me=\`basename \$0\`
3119                         echo "\$me: can't locate home directory for: \$name" >&2
3120                         exit 1
3121                 fi
3122                 case "\$1" in
3123                 */*)
3124                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3125                         ;;
3126                 *)
3127                         echo \$dir
3128                         ;;
3129                 esac
3130         fi
3131         ;;
3132 *)
3133         echo \$1
3134         ;;
3135 esac
3136 EOSS
3137 chmod +x filexp
3138 $eunicefix filexp
3139
3140 : now set up to get a file name
3141 cat <<EOS >getfile
3142 $startsh
3143 EOS
3144 cat <<'EOSC' >>getfile
3145 tilde=''
3146 fullpath=''
3147 already=''
3148 skip=''
3149 none_ok=''
3150 exp_file=''
3151 nopath_ok=''
3152 orig_rp="$rp"
3153 orig_dflt="$dflt"
3154 case "$gfpth" in
3155 '') gfpth='.' ;;
3156 esac
3157
3158 case "$fn" in
3159 *\(*)
3160         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3161         fn=`echo $fn | sed 's/(.*)//'`
3162         ;;
3163 esac
3164
3165 case "$fn" in
3166 *:*)
3167         loc_file=`expr $fn : '.*:\(.*\)'`
3168         fn=`expr $fn : '\(.*\):.*'`
3169         ;;
3170 esac
3171
3172 case "$fn" in
3173 *~*) tilde=true;;
3174 esac
3175 case "$fn" in
3176 */*) fullpath=true;;
3177 esac
3178 case "$fn" in
3179 *+*) skip=true;;
3180 esac
3181 case "$fn" in
3182 *n*) none_ok=true;;
3183 esac
3184 case "$fn" in
3185 *e*) exp_file=true;;
3186 esac
3187 case "$fn" in
3188 *p*) nopath_ok=true;;
3189 esac
3190
3191 case "$fn" in
3192 *f*) type='File';;
3193 *d*) type='Directory';;
3194 *l*) type='Locate';;
3195 esac
3196
3197 what="$type"
3198 case "$what" in
3199 Locate) what='File';;
3200 esac
3201
3202 case "$exp_file" in
3203 '')
3204         case "$d_portable" in
3205         "$define") ;;
3206         *) exp_file=true;;
3207         esac
3208         ;;
3209 esac
3210
3211 cd ..
3212 while test "$type"; do
3213         redo=''
3214         rp="$orig_rp"
3215         dflt="$orig_dflt"
3216         case "$tilde" in
3217         true) rp="$rp (~name ok)";;
3218         esac
3219         . UU/myread
3220         if test -f UU/getfile.ok && \
3221                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3222         then
3223                 value="$ans"
3224                 ansexp="$ans"
3225                 break
3226         fi
3227         case "$ans" in
3228         none)
3229                 value=''
3230                 ansexp=''
3231                 case "$none_ok" in
3232                 true) type='';;
3233                 esac
3234                 ;;
3235         *)
3236                 case "$tilde" in
3237                 '') value="$ans"
3238                         ansexp="$ans";;
3239                 *)
3240                         value=`UU/filexp $ans`
3241                         case $? in
3242                         0)
3243                                 if test "$ans" != "$value"; then
3244                                         echo "(That expands to $value on this system.)"
3245                                 fi
3246                                 ;;
3247                         *) value="$ans";;
3248                         esac
3249                         ansexp="$value"
3250                         case "$exp_file" in
3251                         '') value="$ans";;
3252                         esac
3253                         ;;
3254                 esac
3255                 case "$fullpath" in
3256                 true)
3257                         case "$ansexp" in
3258                         /*) value="$ansexp" ;;
3259                         *)
3260                                 redo=true
3261                                 case "$already" in
3262                                 true)
3263                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3264                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3265                                         ;;
3266                                 *)
3267                                 echo "Please give a full path name, starting with slash." >&4
3268                                         case "$tilde" in
3269                                         true)
3270                                 echo "Note that using ~name is ok provided it expands well." >&4
3271                                                 already=true
3272                                                 ;;
3273                                         esac
3274                                 esac
3275                                 ;;
3276                         esac
3277                         ;;
3278                 esac
3279                 case "$redo" in
3280                 '')
3281                         case "$type" in
3282                         File)
3283                                 for fp in $gfpth; do
3284                                         if test "X$fp" = X.; then
3285                                             pf="$ansexp"
3286                                         else    
3287                                             pf="$fp/$ansexp"
3288                                         fi
3289                                         if test -f "$pf"; then
3290                                                 type=''
3291                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3292                                         then
3293                                                 echo "($value is not a plain file, but that's ok.)"
3294                                                 type=''
3295                                         fi
3296                                         if test X"$type" = X; then
3297                                             value="$pf"
3298                                             break
3299                                         fi
3300                                 done
3301                                 ;;
3302                         Directory)
3303                                 for fp in $gfpth; do
3304                                         if test "X$fp" = X.; then
3305                                             pf="$ansexp"
3306                                         else    
3307                                             pf="$fp/$ansexp"
3308                                         fi
3309                                         if test -d "$pf"; then
3310                                                 type=''
3311                                                 value="$pf"
3312                                                 break
3313                                         fi
3314                                 done
3315                                 ;;
3316                         Locate)
3317                                 if test -d "$ansexp"; then
3318                                         echo "(Looking for $loc_file in directory $value.)"
3319                                         value="$value/$loc_file"
3320                                         ansexp="$ansexp/$loc_file"
3321                                 fi
3322                                 if test -f "$ansexp"; then
3323                                         type=''
3324                                 fi
3325                                 case "$nopath_ok" in
3326                                 true)   case "$value" in
3327                                         */*) ;;
3328                                         *)      echo "Assuming $value will be in people's path."
3329                                                 type=''
3330                                                 ;;
3331                                         esac
3332                                         ;;
3333                                 esac
3334                                 ;;
3335                         esac
3336
3337                         case "$skip" in
3338                         true) type='';
3339                         esac
3340
3341                         case "$type" in
3342                         '') ;;
3343                         *)
3344                                 if test "$fastread" = yes; then
3345                                         dflt=y
3346                                 else
3347                                         dflt=n
3348                                 fi
3349                                 rp="$what $value doesn't exist.  Use that name anyway?"
3350                                 . UU/myread
3351                                 dflt=''
3352                                 case "$ans" in
3353                                 y*) type='';;
3354                                 *) echo " ";;
3355                                 esac
3356                                 ;;
3357                         esac
3358                         ;;
3359                 esac
3360                 ;;
3361         esac
3362 done
3363 cd UU
3364 ans="$value"
3365 rp="$orig_rp"
3366 dflt="$orig_dflt"
3367 rm -f getfile.ok
3368 test "X$gfpthkeep" != Xy && gfpth=""
3369 EOSC
3370
3371 : What should the include directory be ?
3372 echo " "
3373 $echo $n "Hmm...  $c"
3374 dflt='/usr/include'
3375 incpath=''
3376 mips_type=''
3377 if $test -f /bin/mips && /bin/mips; then
3378         echo "Looks like a MIPS system..."
3379         $cat >usr.c <<'EOCP'
3380 #ifdef SYSTYPE_BSD43
3381 /bsd43
3382 #endif
3383 EOCP
3384         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3385                 dflt='/bsd43/usr/include'
3386                 incpath='/bsd43'
3387                 mips_type='BSD 4.3'
3388         else
3389                 mips_type='System V'
3390         fi
3391         $rm -f usr.c usr.out
3392         echo "and you're compiling with the $mips_type compiler and libraries."
3393         xxx_prompt=y
3394         echo "exit 0" >mips
3395 else
3396         echo "Doesn't look like a MIPS system."
3397         xxx_prompt=n
3398         echo "exit 1" >mips
3399 fi
3400 chmod +x mips
3401 $eunicefix mips
3402 case "$usrinc" in
3403 '') ;;
3404 *) dflt="$usrinc";;
3405 esac
3406 case "$xxx_prompt" in
3407 y)      fn=d/
3408         echo " "
3409         rp='Where are the include files you want to use?'
3410         . ./getfile
3411         usrinc="$ans"
3412         ;;
3413 *)      usrinc="$dflt"
3414         ;;
3415 esac
3416
3417 : see how we invoke the C preprocessor
3418 echo " "
3419 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3420 cat <<'EOT' >testcpp.c
3421 #define ABC abc
3422 #define XYZ xyz
3423 ABC.XYZ
3424 EOT
3425 cd ..
3426 if test ! -f cppstdin; then
3427         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3428                 # AIX cc -E doesn't show the absolute headerfile
3429                 # locations but we'll cheat by using the -M flag.
3430                 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
3431         else
3432                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3433         fi
3434 else
3435         echo "Keeping your $hint cppstdin wrapper."
3436 fi
3437 chmod 755 cppstdin
3438 wrapper=`pwd`/cppstdin
3439 ok='false'
3440 cd UU
3441
3442 if $test "X$cppstdin" != "X" && \
3443         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3444         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3445 then
3446         echo "You used to use $cppstdin $cppminus so we'll use that again."
3447         case "$cpprun" in
3448         '') echo "But let's see if we can live without a wrapper..." ;;
3449         *)
3450                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3451                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3452                 then
3453                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3454                         ok='true'
3455                 else
3456                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3457                 fi
3458                 ;;
3459         esac
3460 else
3461         case "$cppstdin" in
3462         '') ;;
3463         *)
3464                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3465                 ;;
3466         esac
3467 fi
3468
3469 if $ok; then
3470         : nothing
3471 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3472         $cc -E <testcpp.c >testcpp.out 2>&1; \
3473         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3474         echo "Yup, it does."
3475         x_cpp="$cc -E"
3476         x_minus='';
3477 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3478         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3479         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3480         echo "Yup, it does."
3481         x_cpp="$cc -E"
3482         x_minus='-';
3483 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3484         $cc -P <testcpp.c >testcpp.out 2>&1; \
3485         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3486         echo "Yipee, that works!"
3487         x_cpp="$cc -P"
3488         x_minus='';
3489 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3490         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3491         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3492         echo "At long last!"
3493         x_cpp="$cc -P"
3494         x_minus='-';
3495 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3496         $cpp <testcpp.c >testcpp.out 2>&1; \
3497         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3498         echo "It works!"
3499         x_cpp="$cpp"
3500         x_minus='';
3501 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3502         $cpp - <testcpp.c >testcpp.out 2>&1; \
3503         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3504         echo "Hooray, it works!  I was beginning to wonder."
3505         x_cpp="$cpp"
3506         x_minus='-';
3507 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3508         $wrapper <testcpp.c >testcpp.out 2>&1; \
3509         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3510         x_cpp="$wrapper"
3511         x_minus=''
3512         echo "Eureka!"
3513 else
3514         dflt=''
3515         rp="No dice.  I can't find a C preprocessor.  Name one:"
3516         . ./myread
3517         x_cpp="$ans"
3518         x_minus=''
3519         $x_cpp <testcpp.c >testcpp.out 2>&1
3520         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3521                 echo "OK, that will do." >&4
3522         else
3523 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3524                 exit 1
3525         fi
3526 fi
3527
3528 case "$ok" in
3529 false)
3530         cppstdin="$x_cpp"
3531         cppminus="$x_minus"
3532         cpprun="$x_cpp"
3533         cpplast="$x_minus"
3534         set X $x_cpp
3535         shift
3536         case "$1" in
3537         "$cpp")
3538                 echo "Perhaps can we force $cc -E using a wrapper..."
3539                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3540                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3541                 then
3542                         echo "Yup, we can."
3543                         cppstdin="$wrapper"
3544                         cppminus='';
3545                 else
3546                         echo "Nope, we'll have to live without it..."
3547                 fi
3548                 ;;
3549         esac
3550         case "$cpprun" in
3551         "$wrapper")
3552                 cpprun=''
3553                 cpplast=''
3554                 ;;
3555         esac
3556         ;;
3557 esac
3558
3559 case "$cppstdin" in
3560 "$wrapper"|'cppstdin') ;;
3561 *) $rm -f $wrapper;;
3562 esac
3563 $rm -f testcpp.c testcpp.out
3564
3565 : Set private lib path
3566 case "$plibpth" in
3567 '') if ./mips; then
3568                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3569         fi;;
3570 esac
3571 case "$libpth" in
3572 ' ') dlist='';;
3573 '') dlist="$loclibpth $plibpth $glibpth";;
3574 *) dlist="$libpth";;
3575 esac
3576
3577 : Now check and see which directories actually exist, avoiding duplicates
3578 libpth=''
3579 for xxx in $dlist
3580 do
3581     if $test -d $xxx; then
3582                 case " $libpth " in
3583                 *" $xxx "*) ;;
3584                 *) libpth="$libpth $xxx";;
3585                 esac
3586     fi
3587 done
3588 $cat <<'EOM'
3589
3590 Some systems have incompatible or broken versions of libraries.  Among
3591 the directories listed in the question below, please remove any you
3592 know not to be holding relevant libraries, and add any that are needed.
3593 Say "none" for none.
3594
3595 EOM
3596 case "$libpth" in
3597 '') dflt='none';;
3598 *)
3599         set X $libpth
3600         shift
3601         dflt=${1+"$@"}
3602         ;;
3603 esac
3604 rp="Directories to use for library searches?"
3605 . ./myread
3606 case "$ans" in
3607 none) libpth=' ';;
3608 *) libpth="$ans";;
3609 esac
3610
3611 : compute shared library extension
3612 case "$so" in
3613 '')
3614         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3615                 dflt='sl'
3616         else
3617                 dflt='so'
3618         fi
3619         ;;
3620 *) dflt="$so";;
3621 esac
3622 $cat <<EOM
3623
3624 On some systems, shared libraries may be available.  Answer 'none' if
3625 you want to suppress searching of shared libraries for the remainder
3626 of this configuration.
3627
3628 EOM
3629 rp='What is the file extension used for shared libraries?'
3630 . ./myread
3631 so="$ans"
3632
3633 : Define several unixisms.
3634 : Hints files or command line option can be used to override them.
3635 : The convoluted testing is in case hints files set either the old
3636 : or the new name.
3637 case "$_exe" in
3638 '')     case "$exe_ext" in
3639     '') ;;
3640         *)      _exe="$exe_ext" ;;
3641         esac
3642         ;;
3643 esac
3644 case "$_a" in
3645 '')     case "$lib_ext" in
3646     '') _a='.a';;
3647         *)      _a="$lib_ext" ;;
3648         esac
3649         ;;
3650 esac
3651 case "$_o" in
3652 '') case "$obj_ext" in
3653         '')     _o='.o';;
3654         *)      _o="$obj_ext";;
3655         esac
3656         ;;
3657 esac
3658 case "$p_" in
3659 '') case "$path_sep" in
3660         '')     p_=':';;
3661         *)      p_="$path_sep";;
3662         esac
3663         ;;
3664 esac
3665 exe_ext=$_exe
3666 lib_ext=$_a
3667 obj_ext=$_o
3668 path_sep=$p_
3669
3670 : Which makefile gets called first.  This is used by make depend.
3671 case "$firstmakefile" in
3672 '') firstmakefile='makefile';;
3673 esac
3674
3675 case "$usesocks" in
3676 $define|true|[yY]*)     dflt='y';;
3677 *) dflt='n';;
3678 esac
3679 cat <<EOM
3680
3681 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3682 Configure must be run with -Dusesocks.
3683
3684 If this doesn't make any sense to you, just accept the default '$dflt'.
3685 EOM
3686 rp='Build Perl for SOCKS?'
3687 . ./myread
3688 case "$ans" in
3689 y|Y)    val="$define" ;;     
3690 *)      val="$undef" ;;
3691 esac
3692 set usesocks
3693 eval $setvar
3694
3695 : Looking for optional libraries
3696 echo " "
3697 echo "Checking for optional libraries..." >&4
3698 case "$libs" in
3699 ' '|'') dflt='';;
3700 *) dflt="$libs";;
3701 esac
3702 case "$libswanted" in
3703 '') libswanted='c_s';;
3704 esac
3705 case "$usesocks" in
3706 $define)
3707         libswanted="$libswanted socks5 socks5_sh"
3708         ;;
3709 esac
3710 libsfound=''
3711 libsfiles=''
3712 libsdirs=''
3713 libspath=''
3714 for thisdir in $libpth $xlibpth; do
3715   test -d $thisdir && libspath="$libspath $thisdir"
3716 done
3717 for thislib in $libswanted; do
3718         for thisdir in $libspath; do
3719             xxx=''
3720             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3721                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3722                 $test -f "$xxx" && eval $libscheck
3723                 $test -f "$xxx" && libstyle=shared
3724             fi
3725             if test ! -f "$xxx"; then
3726                 xxx=$thisdir/lib$thislib.$so
3727                 $test -f "$xxx" && eval $libscheck
3728                 $test -f "$xxx" && libstyle=shared
3729             fi  
3730             if test ! -f "$xxx"; then
3731                 xxx=$thisdir/lib$thislib$_a
3732                 $test -f "$xxx" && eval $libscheck
3733                 $test -f "$xxx" && libstyle=static
3734             fi
3735             if test ! -f "$xxx"; then
3736                 xxx=$thisdir/$thislib$_a
3737                 $test -f "$xxx" && eval $libscheck
3738                 $test -f "$xxx" && libstyle=static
3739             fi
3740             if test ! -f "$xxx"; then
3741                 xxx=$thisdir/lib${thislib}_s$_a
3742                 $test -f "$xxx" && eval $libscheck
3743                 $test -f "$xxx" && libstyle=static
3744                 $test -f "$xxx" && thislib=${thislib}_s
3745             fi
3746             if test ! -f "$xxx"; then
3747                 xxx=$thisdir/Slib$thislib$_a
3748                 $test -f "$xxx" && eval $libscheck
3749                 $test -f "$xxx" && libstyle=static
3750             fi
3751             if $test -f "$xxx"; then
3752                 case "$libstyle" in
3753                 shared) echo "Found -l$thislib (shared)." ;;
3754                 static) echo "Found -l$thislib." ;;
3755                 *)      echo "Found -l$thislib ($libstyle)." ;;
3756                 esac
3757                 case " $dflt " in
3758                 *"-l$thislib "*);;
3759                 *) dflt="$dflt -l$thislib"
3760                    libsfound="$libsfound $xxx"
3761                    yyy=`basename $xxx`
3762                    libsfiles="$libsfiles $yyy"
3763                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3764                    case " $libsdirs " in
3765                    *" $yyy "*) ;;
3766                    *) libsdirs="$libsdirs $yyy" ;;
3767                    esac
3768                    ;;
3769                 esac
3770                 break
3771             fi  
3772         done
3773         if $test ! -f "$xxx"; then
3774             echo "No -l$thislib."
3775         fi
3776 done
3777 set X $dflt
3778 shift
3779 dflt="$*"
3780 case "$libs" in
3781 '') dflt="$dflt";;
3782 *) dflt="$libs";;
3783 esac
3784 case "$dflt" in
3785 ' '|'') dflt='none';;
3786 esac
3787
3788 $cat <<EOM
3789
3790 In order to compile $package on your machine, a number of libraries
3791 are usually needed.  Include any other special libraries here as well.
3792 Say "none" for none.  The default list is almost always right.
3793 EOM
3794
3795 echo " "
3796 rp="What libraries to use?"
3797 . ./myread
3798 case "$ans" in
3799 none) libs=' ';;
3800 *) libs="$ans";;
3801 esac
3802
3803 : determine optimization, if desired, or use for debug flag also
3804 case "$optimize" in
3805 ' '|$undef) dflt='none';;
3806 '') dflt='-O';;
3807 *) dflt="$optimize";;
3808 esac
3809 $cat <<EOH
3810
3811 By default, $package compiles with the -O flag to use the optimizer.
3812 Alternately, you might want to use the symbolic debugger, which uses
3813 the -g flag (on traditional Unix systems).  Either flag can be
3814 specified here.  To use neither flag, specify the word "none".
3815
3816 EOH
3817 rp="What optimizer/debugger flag should be used?"
3818 . ./myread
3819 optimize="$ans"
3820 case "$optimize" in
3821 'none') optimize=" ";;
3822 esac
3823
3824 dflt=''
3825 : We will not override a previous value, but we might want to
3826 : augment a hint file
3827 case "$hint" in
3828 default|recommended)
3829         case "$gccversion" in
3830         1*) dflt='-fpcc-struct-return' ;;
3831         esac
3832         case "$optimize" in
3833         *-g*) dflt="$dflt -DDEBUGGING";;
3834         esac
3835         case "$gccversion" in
3836         2*) if test -d /etc/conf/kconfig.d &&
3837                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3838                 then
3839                         dflt="$dflt -posix"
3840                 fi
3841                 ;;
3842         esac
3843         case "$gccversion" in
3844         1*) ;;
3845         2.[0-8]*) ;;
3846         ?*)     echo " "
3847                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3848                 echo 'int main(void) { return 0; }' > gcctest.c
3849                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3850                         echo "Yes, it does." 2>&1
3851                         case "$ccflags" in
3852                         *strict-aliasing*) 
3853                                 echo "Leaving current flags $ccflags alone." 2>&1
3854                                 ;;
3855                         *) dflt="$dflt -fno-strict-aliasing" ;;
3856                         esac
3857                 else
3858                         echo "Nope, it doesn't, but that's ok." 2>&1
3859                 fi
3860                 ;;
3861         esac
3862         ;;
3863 esac
3864
3865 case "$mips_type" in
3866 *BSD*|'') inclwanted="$locincpth $usrinc";;
3867 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3868 esac
3869 for thisincl in $inclwanted; do
3870         if $test -d $thisincl; then
3871                 if $test x$thisincl != x$usrinc; then
3872                         case "$dflt" in
3873                         *$thisincl*);;
3874                         *) dflt="$dflt -I$thisincl";;
3875                         esac
3876                 fi
3877         fi
3878 done
3879
3880 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3881         xxx=true;
3882 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3883         xxx=true;
3884 else
3885         xxx=false;
3886 fi;
3887 if $xxx; then
3888         case "$dflt" in
3889         *$2*);;
3890         *) dflt="$dflt -D$2";;
3891         esac;
3892 fi'
3893
3894 set signal.h LANGUAGE_C; eval $inctest
3895
3896 case "$usesocks" in
3897 $define)
3898         ccflags="$ccflags -DSOCKS"
3899         ;;
3900 esac
3901
3902 case "$hint" in
3903 default|recommended) dflt="$ccflags $dflt" ;;
3904 *) dflt="$ccflags";;
3905 esac
3906
3907 case "$dflt" in
3908 ''|' ') dflt=none;;
3909 esac
3910 $cat <<EOH
3911
3912 Your C compiler may want other flags.  For this question you should include
3913 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3914 but you should NOT include libraries or ld flags like -lwhatever.  If you
3915 want $package to honor its debug switch, you should include -DDEBUGGING here.
3916 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3917
3918 To use no flags, specify the word "none".
3919
3920 EOH
3921 set X $dflt
3922 shift
3923 dflt=${1+"$@"}
3924 rp="Any additional cc flags?"
3925 . ./myread
3926 case "$ans" in
3927 none) ccflags='';;
3928 *) ccflags="$ans";;
3929 esac
3930
3931 : the following weeds options from ccflags that are of no interest to cpp
3932 cppflags="$ccflags"
3933 case "$gccversion" in
3934 1*) cppflags="$cppflags -D__GNUC__"
3935 esac
3936 case "$mips_type" in
3937 '');;
3938 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3939 esac
3940 case "$cppflags" in
3941 '');;
3942 *)
3943         echo " "
3944         echo "Let me guess what the preprocessor flags are..." >&4
3945         set X $cppflags
3946         shift
3947         cppflags=''
3948         $cat >cpp.c <<'EOM'
3949 #define BLURFL foo
3950
3951 BLURFL xx LFRULB
3952 EOM
3953         previous=''
3954         for flag in $*
3955         do
3956                 case "$flag" in
3957                 -*) ftry="$flag";;
3958                 *) ftry="$previous $flag";;
3959                 esac
3960                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3961                         >cpp1.out 2>/dev/null && \
3962                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3963                         >cpp2.out 2>/dev/null && \
3964                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3965                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3966                 then
3967                         cppflags="$cppflags $ftry"
3968                         previous=''
3969                 else
3970                         previous="$flag"
3971                 fi
3972         done
3973         set X $cppflags
3974         shift
3975         cppflags=${1+"$@"}
3976         case "$cppflags" in
3977         *-*)  echo "They appear to be: $cppflags";;
3978         esac
3979         $rm -f cpp.c cpp?.out
3980         ;;
3981 esac
3982
3983 : flags used in final linking phase
3984 case "$ldflags" in
3985 '') if ./venix; then
3986                 dflt='-i -z'
3987         else
3988                 dflt=''
3989         fi
3990         case "$ccflags" in
3991         *-posix*) dflt="$dflt -posix" ;;
3992         esac
3993         ;;
3994 *) dflt="$ldflags";;
3995 esac
3996
3997 : Try to guess additional flags to pick up local libraries.
3998 for thislibdir in $libpth; do
3999         case " $loclibpth " in
4000         *" $thislibdir "*)
4001                 case "$dflt " in 
4002                 *"-L$thislibdir "*) ;;
4003                 *)  dflt="$dflt -L$thislibdir" ;;
4004                 esac
4005                 ;;
4006         esac
4007 done
4008
4009 case "$dflt" in
4010 '') dflt='none' ;;
4011 esac
4012
4013 $cat <<EOH
4014
4015 Your C linker may need flags.  For this question you should
4016 include -L/whatever and any other flags used by the C linker, but you
4017 should NOT include libraries like -lwhatever.
4018
4019 Make sure you include the appropriate -L/path flags if your C linker
4020 does not normally search all of the directories you specified above,
4021 namely
4022         $libpth
4023 To use no flags, specify the word "none".
4024
4025 EOH
4026
4027 rp="Any additional ld flags (NOT including libraries)?"
4028 . ./myread
4029 case "$ans" in
4030 none) ldflags='';;
4031 *) ldflags="$ans";;
4032 esac
4033 rmlist="$rmlist pdp11"
4034
4035 : coherency check
4036 echo " "
4037 echo "Checking your choice of C compiler and flags for coherency..." >&4
4038 $cat > try.c <<'EOF'
4039 #include <stdio.h>
4040 int main() { printf("Ok\n"); exit(0); }
4041 EOF
4042 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4043 shift
4044 $cat >try.msg <<'EOM'
4045 I've tried to compile and run the following simple program:
4046
4047 EOM
4048 $cat try.c >> try.msg
4049
4050 $cat >> try.msg <<EOM
4051
4052 I used the command:
4053
4054         $*
4055         ./try
4056
4057 and I got the following output:
4058
4059 EOM
4060 dflt=y
4061 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4062         if sh -c './try' >>try.msg 2>&1; then
4063                 xxx=`./try`
4064                 case "$xxx" in
4065                 "Ok") dflt=n ;;
4066                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4067                         case " $libs " in
4068                         *" -lsfio "*)
4069                                 cat >> try.msg <<'EOQS'
4070 If $libs contains -lsfio, and sfio is mis-configured, then it
4071 sometimes (apparently) runs and exits with a 0 status, but with no
4072 output!  It may have to do with sfio's use of _exit vs. exit.
4073
4074 EOQS
4075                                 rp="You have a big problem.  Shall I abort Configure"
4076                                 dflt=y
4077                                 ;;
4078                         esac
4079                         ;;
4080                 esac
4081         else
4082                 echo "The program compiled OK, but exited with status $?." >>try.msg
4083                 rp="You have a problem.  Shall I abort Configure"
4084                 dflt=y
4085         fi
4086 else
4087         echo "I can't compile the test program." >>try.msg
4088         rp="You have a BIG problem.  Shall I abort Configure"
4089         dflt=y
4090 fi
4091 case "$dflt" in
4092 y)
4093         $cat try.msg >&4
4094         case "$knowitall" in
4095         '')
4096                 echo "(The supplied flags or libraries might be incorrect.)"
4097                 ;;
4098         *) dflt=n;;
4099         esac
4100         echo " "
4101         . ./myread
4102         case "$ans" in
4103         n*|N*) ;;
4104         *)      echo "Ok.  Stopping Configure." >&4
4105                 exit 1
4106                 ;;
4107         esac
4108         ;;
4109 n) echo "OK, that should do.";;
4110 esac
4111 $rm -f try try.* core
4112
4113 : define an is-a-typedef? function
4114 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4115 case "$inclist" in
4116 "") inclist="sys/types.h";;
4117 esac;
4118 eval "varval=\$$var";
4119 case "$varval" in
4120 "")
4121         $rm -f temp.c;
4122         for inc in $inclist; do
4123                 echo "#include <$inc>" >>temp.c;
4124         done;
4125         echo "#ifdef $type" >> temp.c;
4126         echo "printf(\"We have $type\");" >> temp.c;
4127         echo "#endif" >> temp.c;
4128         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4129         if $contains $type temp.E >/dev/null 2>&1; then
4130                 eval "$var=\$type";
4131         else
4132                 eval "$var=\$def";
4133         fi;
4134         $rm -f temp.?;;
4135 *) eval "$var=\$varval";;
4136 esac'
4137
4138 : define an is-a-typedef? function that prompts if the type is not available.
4139 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4140 case "$inclist" in
4141 "") inclist="sys/types.h";;
4142 esac;
4143 eval "varval=\$$var";
4144 case "$varval" in
4145 "")
4146         $rm -f temp.c;
4147         for inc in $inclist; do
4148                 echo "#include <$inc>" >>temp.c;
4149         done;
4150         echo "#ifdef $type" >> temp.c;
4151         echo "printf(\"We have $type\");" >> temp.c;
4152         echo "#endif" >> temp.c;
4153         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4154         echo " " ;
4155         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4156         if $contains $type temp.E >/dev/null 2>&1; then
4157                 echo "$type found." >&4;
4158                 eval "$var=\$type";
4159         else
4160                 echo "$type NOT found." >&4;
4161                 dflt="$def";
4162                 . ./myread ;
4163                 eval "$var=\$ans";
4164         fi;
4165         $rm -f temp.?;;
4166 *) eval "$var=\$varval";;
4167 esac'
4168
4169 : define a shorthand compile call
4170 compile='
4171 mc_file=$1;
4172 shift;
4173 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4174 : define a shorthand compile call for compilations that should be ok.
4175 compile_ok='
4176 mc_file=$1;
4177 shift;
4178 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4179
4180 : check for lengths of integral types
4181 echo " "
4182 case "$intsize" in
4183 '')
4184         echo "Checking to see how big your integers are..." >&4
4185         $cat >intsize.c <<'EOCP'
4186 #include <stdio.h>
4187 int main()
4188 {
4189         printf("intsize=%d;\n", (int)sizeof(int));
4190         printf("longsize=%d;\n", (int)sizeof(long));
4191         printf("shortsize=%d;\n", (int)sizeof(short));
4192         exit(0);
4193 }
4194 EOCP
4195         set intsize
4196         if eval $compile_ok && ./intsize > /dev/null; then
4197                 eval `./intsize`
4198                 echo "Your integers are $intsize bytes long."
4199                 echo "Your long integers are $longsize bytes long."
4200                 echo "Your short integers are $shortsize bytes long."
4201         else
4202                 $cat >&4 <<EOM
4203 !
4204 Help! I can't compile and run the intsize test program: please enlighten me!
4205 (This is probably a misconfiguration in your system or libraries, and
4206 you really ought to fix it.  Still, I'll try anyway.)
4207 !
4208 EOM
4209                 dflt=4
4210                 rp="What is the size of an integer (in bytes)?"
4211                 . ./myread
4212                 intsize="$ans"
4213                 dflt=$intsize
4214                 rp="What is the size of a long integer (in bytes)?"
4215                 . ./myread
4216                 longsize="$ans"
4217                 dflt=2
4218                 rp="What is the size of a short integer (in bytes)?"
4219                 . ./myread
4220                 shortsize="$ans"
4221         fi
4222         ;;
4223 esac
4224 $rm -f intsize intsize.*
4225
4226 : see what type lseek is declared as in the kernel
4227 rp="What is the type used for lseek's offset on this system?"
4228 set off_t lseektype long stdio.h sys/types.h
4229 eval $typedef_ask
4230
4231 echo " "
4232 echo "Checking to see how big your file offsets are..." >&4
4233 $cat >try.c <<EOCP
4234 #include <sys/types.h>
4235 #include <stdio.h>
4236 int main()
4237 {
4238     printf("%d\n", (int)sizeof($lseektype));
4239     return(0); 
4240 }
4241 EOCP
4242 set try
4243 if eval $compile_ok; then
4244         lseeksize=`./try`
4245         echo "Your file offsets are $lseeksize bytes long."
4246 else
4247         dflt=$longsize
4248         echo " "
4249         echo "(I can't seem to compile the test program.  Guessing...)"
4250         rp="What is the size of your file offsets (in bytes)?"
4251         . ./myread
4252         lseeksize="$ans"
4253 fi
4254 $rm -f try.c try
4255
4256 : see what type file positions are declared as in the library
4257 rp="What is the type for file position used by fsetpos()?"
4258 set fpos_t fpostype long stdio.h sys/types.h
4259 eval $typedef_ask
4260
4261 echo " "
4262 case "$fpostype" in
4263 *_t) zzz="$fpostype"    ;;
4264 *)   zzz="fpos_t"       ;;
4265 esac
4266 echo "Checking the size of $zzz..." >&4 
4267 cat > try.c <<EOCP
4268 #include <sys/types.h>
4269 #include <stdio.h>
4270 int main() {
4271     printf("%d\n", (int)sizeof($fpostype));
4272     exit(0);
4273 }
4274 EOCP
4275 set try
4276 if eval $compile_ok; then
4277         yyy=`./try`
4278         case "$yyy" in
4279         '')     fpossize=4
4280                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4281                 ;;
4282         *)      fpossize=$yyy
4283                 echo "Your $zzz is $fpossize bytes long."
4284                 ;;
4285         esac
4286 else
4287         dflt="$longsize"
4288         echo " " >&4
4289         echo "(I can't compile the test program.  Guessing...)" >&4
4290         rp="What is the size of your file positions (in bytes)?"
4291         . ./myread
4292         fpossize="$ans"
4293 fi
4294
4295
4296
4297 # Backward compatibility (uselfs is deprecated).
4298 case "$uselfs" in
4299 "$define"|true|[yY]*)
4300         cat <<EOM >&4
4301
4302 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4303 EOM
4304         uselargefiles="$define"
4305         ;;
4306 esac                          
4307
4308 case "$lseeksize:$fpossize" in
4309 8:8) cat <<EOM
4310
4311 You can have files larger than 2 gigabytes.
4312 EOM
4313    val="$define" ;;
4314 *)    case "$uselargefiles" in
4315    "$undef"|false|[nN]*) dflt='n' ;;
4316    *)   dflt='y' ;;
4317    esac
4318    cat <<EOM
4319
4320 Perl can be built to understand large files (files larger than 2 gigabytes)
4321 on some systems.  To do so, Configure can be run with -Duselargefiles.
4322
4323 If this doesn't make any sense to you, just accept the default '$dflt'.
4324 EOM
4325    rp='Try to understand large files, if available?'
4326    . ./myread
4327    case "$ans" in
4328    y|Y)         val="$define" ;;
4329    *)           val="$undef"  ;;
4330    esac
4331    ;;
4332 esac
4333 set uselargefiles
4334 eval $setvar
4335 case "$uselargefiles" in
4336 "$define")
4337 : Look for a hint-file generated 'call-back-unit'.  If the
4338 : user has specified that a large files perl is to be built,
4339 : we may need to set or change some other defaults.
4340         if $test -f uselfs.cbu; then
4341                 echo "Your platform has some specific hints for large file builds, using them..."
4342                 . ./uselfs.cbu
4343                 echo " "
4344                 echo "Rechecking to see how big your file offsets are..." >&4
4345                 $cat >try.c <<EOCP
4346 #include <sys/types.h>
4347 #include <stdio.h>
4348 int main()
4349 {
4350     printf("%d\n", (int)sizeof($lseektype));
4351     return(0); 
4352 }
4353 EOCP
4354                 set try
4355                 if eval $compile_ok; then
4356                         lseeksize=`./try`
4357                         $echo "Your file offsets are now $lseeksize bytes long."
4358                 else
4359                         dflt="$lseeksize"
4360                         echo " "
4361                         echo "(I can't seem to compile the test program.  Guessing...)"
4362                         rp="What is the size of your file offsets (in bytes)?"
4363                         . ./myread
4364                         lseeksize="$ans"
4365                 fi
4366                 case "$fpostype" in
4367                 *_t) zzz="$fpostype"    ;;
4368                 *)   zzz="fpos_t"       ;;
4369                 esac
4370                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4371                 $cat > try.c <<EOCP
4372 #include <sys/types.h>
4373 #include <stdio.h>
4374 int main() {
4375     printf("%d\n", (int)sizeof($fpostype));
4376     exit(0);
4377 }
4378 EOCP
4379                 set try
4380                 if eval $compile_ok; then
4381                         yyy=`./try`
4382                         dflt="$lseeksize"
4383                         case "$yyy" in
4384                         '')     echo " "
4385                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4386                                 ;;
4387                         *)      fpossize=$yyy
4388                                 echo " $fpossize bytes." >&4
4389                                 ;;
4390                         esac
4391                 else
4392                         dflt="$fpossize"
4393                         echo " "
4394                         echo "(I can't compile the test program.  Guessing...)" >&4
4395                         rp="What is the size of your file positions (in bytes)?"
4396                         . ./myread
4397                         fpossize="$ans"
4398                 fi
4399                 $rm -f try.c try
4400         fi
4401         ;;
4402 esac
4403
4404
4405 case "$usemorebits" in
4406 "$define"|true|[yY]*)
4407         use64bitint="$define"
4408         uselongdouble="$define"
4409         usemorebits="$define"
4410         ;;
4411 *)      usemorebits="$undef"
4412         ;;
4413 esac
4414
4415
4416 # Backward compatibility (uselonglong is deprecated).
4417 case "$uselonglong" in
4418 "$define"|true|[yY]*)
4419         cat <<EOM >&4
4420
4421 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4422 EOM
4423         use64bitint="$define"
4424         ;;
4425 esac                          
4426 # Backward compatibility (use64bits is deprecated).
4427 case "$use64bits" in
4428 "$define"|true|[yY]*)
4429         cat <<EOM >&4
4430
4431 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4432 EOM
4433         use64bitint="$define"
4434         ;;
4435 esac                          
4436 # Thinko compatibilities.
4437 case "$use64bitints" in
4438 "$define"|true|[yY]*)
4439         cat <<EOM >&4
4440
4441 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4442 EOM
4443         use64bitint="$define"
4444         ;;
4445 esac                          
4446 case "$use64bitsall" in
4447 "$define"|true|[yY]*)
4448         cat <<EOM >&4
4449
4450 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4451 EOM
4452         use64bitall="$define"
4453         ;;
4454 esac                          
4455
4456 case "$ccflags" in
4457 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4458 esac
4459 case "$use64bitall" in
4460 "$define"|true|[yY]*) use64bitint="$define" ;;
4461 esac
4462
4463 case "$longsize" in
4464 8) cat <<EOM
4465
4466 You have natively 64-bit long integers.
4467 EOM
4468    val="$define"
4469    ;;
4470 *) case "$use64bitint" in
4471    "$define"|true|[yY]*) dflt='y';;
4472    *) dflt='n';;
4473    esac
4474    cat <<EOM
4475
4476 Perl can be built to take advantage of 64-bit integer types
4477 on some systems.  To do so, Configure can be run with -Duse64bitint.
4478 Choosing this option will most probably introduce binary incompatibilities.
4479
4480 If this doesn't make any sense to you, just accept the default '$dflt'.
4481 EOM
4482    rp='Try to use 64-bit integers, if available?'
4483    . ./myread
4484    case "$ans" in
4485    [yY]*) val="$define" ;;
4486    *)     val="$undef"  ;;
4487    esac
4488    ;;
4489 esac
4490 set use64bitint
4491 eval $setvar
4492
4493 cat <<EOM
4494
4495 You may also choose to try maximal 64-bitness.  It means using as much
4496 64-bitness as possible on the platform.  This in turn means even more
4497 binary incompatibilities.  On the other hand, your platform may not
4498 have any more 64-bitness available than what you already have chosen.
4499
4500 If this doesn't make any sense to you, just accept the default '$dflt'.
4501 EOM
4502 rp='Try to use maximal 64-bit support, if available?'
4503 case "$use64bitall" in
4504 "$define"|true|[yY]*) dflt='y' ;;
4505 *) case "$longsize" in
4506    8) dflt='y' ;;
4507    *) dflt='n' ;;
4508    esac
4509    ;;
4510 esac    
4511 . ./myread
4512 case "$ans" in
4513 [yY]*) val="$define" ;;
4514 *)     val="$undef"  ;;
4515 esac
4516 set use64bitall
4517 eval $setvar
4518 case "$use64bitall" in
4519 "$define")
4520         case "$use64bitint" in
4521         "$undef")
4522                 cat <<EOM
4523
4524 Since you have chosen a maximally 64-bit build, I'm also turning on
4525 the use of 64-bit integers.
4526 EOM
4527                 use64bitint="$define" ;;
4528         esac
4529         ;;
4530 esac
4531
4532 case "$use64bitint" in
4533 "$define"|true|[yY]*)
4534 : Look for a hint-file generated 'call-back-unit'.  If the
4535 : user has specified that a 64-bit perl is to be built,
4536 : we may need to set or change some other defaults.
4537         if $test -f use64bitint.cbu; then
4538                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4539                 . ./use64bitint.cbu
4540         fi
4541         case "$longsize" in
4542         4) case "$archname64" in
4543            '') archname64=64int ;;
4544            esac
4545            ;;
4546         esac
4547         ;;
4548 esac
4549
4550 case "$use64bitall" in
4551 "$define"|true|[yY]*)
4552 : Look for a hint-file generated 'call-back-unit'.  If the
4553 : user has specified that a maximally 64-bit perl is to be built,
4554 : we may need to set or change some other defaults.
4555         if $test -f use64bitall.cbu; then
4556                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4557                 . ./use64bitall.cbu
4558         fi
4559         case "$longsize" in
4560         4) case "$archname64" in
4561            ''|64int) archname64=64all ;;
4562            esac
4563            ;;
4564         esac
4565         ;;
4566 esac
4567
4568 : determine the architecture name
4569 echo " "
4570 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4571         tarch=`arch`"-$osname"
4572 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4573         if uname -m > tmparch 2>&1 ; then
4574                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4575                         -e 's/$/'"-$osname/" tmparch`
4576         else
4577                 tarch="$osname"
4578         fi
4579         $rm -f tmparch
4580 else
4581         tarch="$osname"
4582 fi
4583 case "$myarchname" in
4584 ''|"$tarch") ;;
4585 *)
4586         echo "(Your architecture name used to be $myarchname.)"
4587         archname=''
4588         ;;
4589 esac
4590 myarchname="$tarch"
4591 case "$archname" in
4592 '') dflt="$tarch";;
4593 *) dflt="$archname";;
4594 esac
4595 rp='What is your architecture name'
4596 . ./myread
4597 archname="$ans"
4598 case "$usethreads" in
4599 $define)
4600         echo "Threads selected." >&4
4601         case "$archname" in
4602         *-thread*) echo "...and architecture name already has -thread." >&4
4603                 ;;
4604         *)      archname="$archname-thread"
4605                 echo "...setting architecture name to $archname." >&4
4606                 ;;
4607         esac
4608         ;;
4609 esac
4610 case "$usemultiplicity" in
4611 $define)
4612         echo "Multiplicity selected." >&4
4613         case "$archname" in
4614         *-multi*) echo "...and architecture name already has -multi." >&4
4615                 ;;
4616         *)      archname="$archname-multi"
4617                 echo "...setting architecture name to $archname." >&4
4618                 ;;
4619         esac
4620         ;;
4621 esac
4622 case "$use64bitint" in
4623 $define)
4624         case "$archname64" in
4625         '')
4626                 ;;
4627         *)
4628                 case "$archname" in
4629                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4630                         ;;
4631                 *)      archname="$archname-$archname64"
4632                         echo "...setting architecture name to $archname." >&4
4633                         ;;
4634                 esac
4635                 ;;
4636         esac
4637 esac
4638
4639 : determine root of directory hierarchy where package will be installed.
4640 case "$prefix" in
4641 '')
4642         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4643         ;;
4644 *)
4645         dflt="$prefix"
4646         ;;
4647 esac
4648 $cat <<EOM
4649
4650 By default, $package will be installed in $dflt/bin, manual pages
4651 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4652 installation directories. Typically this is something like /usr/local.
4653 If you wish to have binaries under /usr/bin but other parts of the
4654 installation under /usr/local, that's ok: you will be prompted
4655 separately for each of the installation directories, the prefix being
4656 only used to set the defaults.
4657
4658 EOM
4659 fn=d~
4660 rp='Installation prefix to use?'
4661 . ./getfile
4662 oldprefix=''
4663 case "$prefix" in
4664 '') ;;
4665 *)
4666         case "$ans" in
4667         "$prefix") ;;
4668         *) oldprefix="$prefix";;
4669         esac
4670         ;;
4671 esac
4672 prefix="$ans"
4673 prefixexp="$ansexp"
4674
4675 : is AFS running?
4676 echo " "
4677 case "$afs" in
4678 $define|true)   afs=true ;;
4679 $undef|false)   afs=false ;;
4680 *)      if test -d /afs; then
4681                 afs=true
4682         else
4683                 afs=false
4684         fi
4685         ;;
4686 esac
4687 if $afs; then
4688         echo "AFS may be running... I'll be extra cautious then..." >&4
4689 else
4690         echo "AFS does not seem to be running..." >&4
4691 fi
4692
4693 : determine installation prefix for where package is to be installed.
4694 if $afs; then 
4695 $cat <<EOM
4696
4697 Since you are running AFS, I need to distinguish the directory in which
4698 files will reside from the directory in which they are installed (and from
4699 which they are presumably copied to the former directory by occult means).
4700
4701 EOM
4702         case "$installprefix" in
4703         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4704         *) dflt="$installprefix";;
4705         esac
4706 else
4707 $cat <<EOM
4708
4709 In some special cases, particularly when building $package for distribution,
4710 it is convenient to distinguish between the directory in which files should 
4711 be installed from the directory ($prefix) in which they 
4712 will eventually reside.  For most users, these two directories are the same.
4713
4714 EOM
4715         case "$installprefix" in
4716         '') dflt=$prefix ;;
4717         *) dflt=$installprefix;;
4718         esac
4719 fi
4720 fn=d~
4721 rp='What installation prefix should I use for installing files?'
4722 . ./getfile
4723 installprefix="$ans"
4724 installprefixexp="$ansexp"
4725
4726 : set the prefixit variable, to compute a suitable default value
4727 prefixit='case "$3" in
4728 ""|none)
4729         case "$oldprefix" in
4730         "") eval "$1=\"\$$2\"";;
4731         *)
4732                 case "$3" in
4733                 "") eval "$1=";;
4734                 none)
4735                         eval "tp=\"\$$2\"";
4736                         case "$tp" in
4737                         ""|" ") eval "$1=\"\$$2\"";;
4738                         *) eval "$1=";;
4739                         esac;;
4740                 esac;;
4741         esac;;
4742 *)
4743         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4744         case "$tp" in
4745         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4746         /*-$oldprefix/*|\~*-$oldprefix/*)
4747                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4748         *) eval "$1=\"\$$2\"";;
4749         esac;;
4750 esac'
4751
4752
4753 : get the patchlevel
4754 echo " "
4755 echo "Getting the current patchlevel..." >&4
4756 if $test -r $rsrc/patchlevel.h;then
4757         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4758         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4759         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4760         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4761         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4762         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4763 else
4764         revision=0
4765         patchlevel=0
4766         subversion=0
4767         api_revision=0
4768         api_version=0
4769         api_subversion=0
4770 fi
4771 $echo $n "(You have $package revision $revision" $c
4772 $echo $n " patchlevel $patchlevel" $c
4773 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4774 echo ".)"
4775 case "$osname" in
4776 dos|vms)
4777         : XXX Should be a Configure test for double-dots in filenames.
4778         version=`echo $revision $patchlevel $subversion | \
4779                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4780         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4781                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4782         ;;
4783 *)
4784         version=`echo $revision $patchlevel $subversion | \
4785                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4786         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4787                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4788         ;;
4789 esac
4790 : Special case the 5.005_xx maintenance series, which used 5.005
4791 : without any subversion label as a subdirectory in $sitelib
4792 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4793         api_versionstring='5.005'
4794 fi
4795
4796 : determine installation style
4797 : For now, try to deduce it from prefix unless it is already set.
4798 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4799 case "$installstyle" in
4800 '')     case "$prefix" in
4801                 *perl*) dflt='lib';;
4802                 *) dflt='lib/perl5' ;;
4803         esac
4804         ;;
4805 *)      dflt='lib/perl5' ;;
4806 esac
4807 : Probably not worth prompting for this since we prompt for all
4808 : the directories individually, and the prompt would be too long and
4809 : confusing anyway.
4810 installstyle=$dflt
4811
4812 : determine where private library files go
4813 : Usual default is /usr/local/lib/perl5/$version.
4814 : Also allow things like /opt/perl/lib/$version, since 
4815 : /opt/perl/lib/perl5... would be redundant.
4816 : The default "style" setting is made in installstyle.U
4817 case "$installstyle" in
4818 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4819 *)       set dflt privlib lib/$version ;;
4820 esac
4821 eval $prefixit
4822 $cat <<EOM
4823
4824 There are some auxiliary files for $package that need to be put into a
4825 private library directory that is accessible by everyone.
4826
4827 EOM
4828 fn=d~+
4829 rp='Pathname where the private library files will reside?'
4830 . ./getfile
4831 privlib="$ans"
4832 privlibexp="$ansexp"
4833 : Change installation prefix, if necessary.
4834 if $test X"$prefix" != X"$installprefix"; then
4835         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4836 else
4837         installprivlib="$privlibexp"
4838 fi
4839
4840 : set the prefixup variable, to restore leading tilda escape
4841 prefixup='case "$prefixexp" in
4842 "$prefix") ;;
4843 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4844 esac'
4845
4846 : determine where public architecture dependent libraries go
4847 set archlib archlib
4848 eval $prefixit
4849 : privlib default is /usr/local/lib/$package/$version
4850 : archlib default is /usr/local/lib/$package/$version/$archname
4851 : privlib may have an optional trailing /share.
4852 tdflt=`echo $privlib | $sed 's,/share$,,'`
4853 tdflt=$tdflt/$archname
4854 case "$archlib" in
4855 '')     dflt=$tdflt
4856         ;;
4857 *)      dflt="$archlib"
4858     ;;
4859 esac
4860 $cat <<EOM
4861
4862 $spackage contains architecture-dependent library files.  If you are
4863 sharing libraries in a heterogeneous environment, you might store
4864 these files in a separate location.  Otherwise, you can just include
4865 them with the rest of the public library files.
4866
4867 EOM
4868 fn=d+~
4869 rp='Where do you want to put the public architecture-dependent libraries?'
4870 . ./getfile
4871 archlib="$ans"
4872 archlibexp="$ansexp"
4873 if $test X"$archlib" = X"$privlib"; then
4874         d_archlib="$undef"
4875 else
4876         d_archlib="$define"
4877 fi
4878 : Change installation prefix, if necessary.
4879 if $test X"$prefix" != X"$installprefix"; then
4880         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4881 else
4882         installarchlib="$archlibexp"
4883 fi
4884
4885
4886 : Binary compatibility with 5.005 is not possible for builds
4887 : with advanced features
4888 case "$usethreads$usemultiplicity" in
4889 *define*)
4890         bincompat5005="$undef"
4891         d_bincompat5005="$undef"
4892         ;;
4893 *)      $cat <<EOM
4894
4895 Perl 5.006 can be compiled for binary compatibility with 5.005.
4896 If you decide to do so, you will be able to continue using most
4897 of the extensions that were compiled for Perl 5.005.
4898
4899 EOM
4900         case "$bincompat5005$d_bincompat5005" in
4901         *"$undef"*) dflt=n ;;
4902         *) dflt=y ;;
4903         esac
4904         rp='Binary compatibility with Perl 5.005?'
4905         . ./myread
4906         case "$ans" in
4907         y*) val="$define" ;;
4908         *)  val="$undef" ;;
4909         esac
4910         set d_bincompat5005
4911         eval $setvar
4912         case "$d_bincompat5005" in
4913         "$define")
4914                 bincompat5005="$define"
4915                 ;;
4916         *)      bincompat5005="$undef"
4917                 d_bincompat5005="$undef"
4918                 ;;
4919         esac
4920         ;;
4921 esac
4922
4923
4924 : see if setuid scripts can be secure
4925 $cat <<EOM
4926
4927 Some kernels have a bug that prevents setuid #! scripts from being
4928 secure.  Some sites have disabled setuid #! scripts because of this.
4929
4930 First let's decide if your kernel supports secure setuid #! scripts.
4931 (If setuid #! scripts would be secure but have been disabled anyway,
4932 don't say that they are secure if asked.)
4933
4934 EOM
4935
4936 val="$undef"
4937 if $test -d /dev/fd; then
4938         echo "#!$ls" >reflect
4939         chmod +x,u+s reflect
4940         ./reflect >flect 2>&1
4941         if $contains "/dev/fd" flect >/dev/null; then
4942                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4943                 val="$define"
4944         else
4945                 $cat <<EOM
4946 If you are not sure if they are secure, I can check but I'll need a
4947 username and password different from the one you are using right now.
4948 If you don't have such a username or don't want me to test, simply
4949 enter 'none'.
4950
4951 EOM
4952                 rp='Other username to test security of setuid scripts with?'
4953                 dflt='none'
4954                 . ./myread
4955                 case "$ans" in
4956                 n|none)
4957                         case "$d_suidsafe" in
4958                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
4959                                 dflt=n;;
4960                         "$undef")
4961                                 echo "Well, the $hint value is *not* secure." >&4
4962                                 dflt=n;;
4963                         *)      echo "Well, the $hint value *is* secure." >&4
4964                                 dflt=y;;
4965                         esac
4966                         ;;
4967                 *)
4968                         $rm -f reflect flect
4969                         echo "#!$ls" >reflect
4970                         chmod +x,u+s reflect
4971                         echo >flect
4972                         chmod a+w flect
4973                         echo '"su" will (probably) prompt you for '"$ans's password."
4974                         su $ans -c './reflect >flect'
4975                         if $contains "/dev/fd" flect >/dev/null; then
4976                                 echo "Okay, it looks like setuid scripts are secure." >&4
4977                                 dflt=y
4978                         else
4979                                 echo "I don't think setuid scripts are secure." >&4
4980                                 dflt=n
4981                         fi
4982                         ;;
4983                 esac
4984                 rp='Does your kernel have *secure* setuid scripts?'
4985                 . ./myread
4986                 case "$ans" in
4987                 [yY]*)  val="$define";;
4988                 *)      val="$undef";;
4989                 esac
4990         fi
4991 else
4992         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
4993         echo "(That's for file descriptors, not floppy disks.)"
4994         val="$undef"
4995 fi
4996 set d_suidsafe
4997 eval $setvar
4998
4999 $rm -f reflect flect
5000
5001 : now see if they want to do setuid emulation
5002 echo " "
5003 val="$undef"
5004 case "$d_suidsafe" in
5005 "$define")
5006         val="$undef"
5007         echo "No need to emulate SUID scripts since they are secure here." >& 4
5008         ;;
5009 *)
5010         $cat <<EOM
5011 Some systems have disabled setuid scripts, especially systems where
5012 setuid scripts cannot be secure.  On systems where setuid scripts have
5013 been disabled, the setuid/setgid bits on scripts are currently
5014 useless.  It is possible for $package to detect those bits and emulate
5015 setuid/setgid in a secure fashion.  This emulation will only work if
5016 setuid scripts have been disabled in your kernel.
5017
5018 EOM
5019         case "$d_dosuid" in
5020         "$define") dflt=y ;;
5021         *) dflt=n ;;
5022         esac
5023         rp="Do you want to do setuid/setgid emulation?"
5024         . ./myread
5025         case "$ans" in
5026         [yY]*)  val="$define";;
5027         *)      val="$undef";;
5028         esac
5029         ;;
5030 esac
5031 set d_dosuid
5032 eval $setvar
5033
5034 : determine filename position in cpp output
5035 echo " "
5036 echo "Computing filename position in cpp output for #include directives..." >&4
5037 echo '#include <stdio.h>' > foo.c
5038 $cat >fieldn <<EOF
5039 $startsh
5040 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5041 $grep '^[       ]*#.*stdio\.h' | \
5042 while read cline; do
5043         pos=1
5044         set \$cline
5045         while $test \$# -gt 0; do
5046                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5047                         echo "\$pos"
5048                         exit 0
5049                 fi
5050                 shift
5051                 pos=\`expr \$pos + 1\`
5052         done
5053 done
5054 EOF
5055 chmod +x fieldn
5056 fieldn=`./fieldn`
5057 $rm -f foo.c fieldn
5058 case $fieldn in
5059 '') pos='???';;
5060 1) pos=first;;
5061 2) pos=second;;
5062 3) pos=third;;
5063 *) pos="${fieldn}th";;
5064 esac
5065 echo "Your cpp writes the filename in the $pos field of the line."
5066
5067 : locate header file
5068 $cat >findhdr <<EOF
5069 $startsh
5070 wanted=\$1
5071 name=''
5072 for usrincdir in $usrinc
5073 do
5074         if test -f \$usrincdir/\$wanted; then
5075                 echo "\$usrincdir/\$wanted"
5076                 exit 0
5077         fi
5078 done
5079 awkprg='{ print \$$fieldn }'
5080 echo "#include <\$wanted>" > foo\$\$.c
5081 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5082 $grep "^[       ]*#.*\$wanted" | \
5083 while read cline; do
5084         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5085         case "\$name" in
5086         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5087         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5088         *) exit 2;;
5089         esac;
5090 done;
5091 #
5092 # status = 0: grep returned 0 lines, case statement not executed
5093 # status = 1: headerfile found
5094 # status = 2: while loop executed, no headerfile found
5095 #
5096 status=\$?
5097 $rm -f foo\$\$.c;
5098 if test \$status -eq 1; then
5099         exit 0;
5100 fi
5101 exit 1
5102 EOF
5103 chmod +x findhdr
5104
5105 : define an alternate in-header-list? function
5106 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5107 cont=true; xxf="echo \"<\$1> found.\" >&4";
5108 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5109 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5110 esac;
5111 case $# in 4) instead=instead;; *) instead="at last";; esac;
5112 while $test "$cont"; do
5113         xxx=`./findhdr $1`
5114         var=$2; eval "was=\$$2";
5115         if $test "$xxx" && $test -r "$xxx";
5116         then eval $xxf;
5117         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5118                 cont="";
5119         else eval $xxnf;
5120         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5121         set $yyy; shift; shift; yyy=$@;
5122         case $# in 0) cont="";;
5123         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5124                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5125         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5126                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5127         esac;
5128 done;
5129 while $test "$yyy";
5130 do set $yyy; var=$2; eval "was=\$$2";
5131         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5132         set $yyy; shift; shift; yyy=$@;
5133 done'
5134
5135 : see if this is a malloc.h system
5136 set malloc.h i_malloc
5137 eval $inhdr
5138
5139 : see if stdlib is available
5140 set stdlib.h i_stdlib
5141 eval $inhdr
5142
5143 : determine which malloc to compile in
5144 echo " "
5145 case "$usemymalloc" in
5146 ''|[yY]*|true|$define)  dflt='y' ;;
5147 *)      dflt='n' ;;
5148 esac
5149 rp="Do you wish to attempt to use the malloc that comes with $package?"
5150 . ./myread
5151 usemymalloc="$ans"
5152 case "$ans" in
5153 y*|true)
5154         usemymalloc='y'
5155         mallocsrc='malloc.c'
5156         mallocobj="malloc$_o"
5157         d_mymalloc="$define"
5158         case "$libs" in
5159         *-lmalloc*)
5160                 : Remove malloc from list of libraries to use
5161                 echo "Removing unneeded -lmalloc from library list" >&4
5162                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5163                 shift
5164                 libs="$*"
5165                 echo "libs = $libs" >&4
5166                 ;;
5167         esac
5168         ;;
5169 *)
5170         usemymalloc='n'
5171         mallocsrc=''
5172         mallocobj=''
5173         d_mymalloc="$undef"
5174         ;;
5175 esac
5176
5177 : compute the return types of malloc and free
5178 echo " "
5179 $cat >malloc.c <<END
5180 #$i_malloc I_MALLOC
5181 #$i_stdlib I_STDLIB
5182 #include <stdio.h>
5183 #include <sys/types.h>
5184 #ifdef I_MALLOC
5185 #include <malloc.h>
5186 #endif
5187 #ifdef I_STDLIB
5188 #include <stdlib.h>
5189 #endif
5190 #ifdef TRY_MALLOC
5191 void *malloc();
5192 #endif
5193 #ifdef TRY_FREE
5194 void free();
5195 #endif
5196 END
5197 case "$malloctype" in
5198 '')
5199         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5200                 malloctype='void *'
5201         else
5202                 malloctype='char *'
5203         fi
5204         ;;
5205 esac
5206 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5207
5208 case "$freetype" in
5209 '')
5210         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5211                 freetype='void'
5212         else
5213                 freetype='int'
5214         fi
5215         ;;
5216 esac
5217 echo "Your system uses $freetype free(), it would seem." >&4
5218 $rm -f malloc.[co]
5219 $cat <<EOM
5220
5221 The installation process will also create a directory for
5222 vendor-supplied add-ons.  Vendors who supply perl with their system
5223 may find it convenient to place all vendor-supplied files in this
5224 directory rather than in the main distribution directory.  This will
5225 ease upgrades between binary-compatible maintenance versions of perl.
5226
5227 Of course you may also use these directories in whatever way you see
5228 fit.  For example, you might use them to access modules shared over a
5229 company-wide network.
5230
5231 The default answer should be fine for most people.
5232 This causes further questions about vendor add-ons to be skipped
5233 and no vendor-specific directories will be configured for perl.
5234
5235 EOM
5236 rp='Do you want to configure vendor-specific add-on directories?'
5237 case "$usevendorprefix" in
5238 define|true|[yY]*) dflt=y ;;
5239 *)      : User may have set vendorprefix directly on Configure command line.
5240         case "$vendorprefix" in
5241         ''|' ') dflt=n ;;
5242         *)      dflt=y ;;
5243         esac
5244         ;;
5245 esac
5246 . ./myread
5247 case "$ans" in
5248 [yY]*)  fn=d~+
5249         rp='Installation prefix to use for vendor-supplied add-ons?'
5250         case "$vendorprefix" in
5251         '') dflt='' ;;
5252         *)  dflt=$vendorprefix ;;
5253         esac
5254         . ./getfile
5255         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5256         oldvendorprefix=''
5257         case "$vendorprefix" in
5258         '') ;;
5259         *)      case "$ans" in
5260                 "$prefix") ;;
5261                 *) oldvendorprefix="$prefix";;
5262                 esac
5263                 ;;
5264         esac
5265         usevendorprefix="$define"
5266         vendorprefix="$ans"
5267         vendorprefixexp="$ansexp"
5268         ;;
5269 *)      usevendorprefix="$undef"
5270         vendorprefix=''
5271         vendorprefixexp=''
5272         ;;
5273 esac
5274
5275 case "$vendorprefix" in
5276 '')     d_vendorlib="$undef"
5277         vendorlib=''
5278         vendorlibexp=''
5279         ;;
5280 *)      d_vendorlib="$define"
5281         : determine where vendor-supplied modules go.
5282         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5283         case "$vendorlib" in
5284         '')
5285                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5286                 case "$installstyle" in
5287                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5288                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5289                 esac
5290                 ;;
5291         *)      dflt="$vendorlib"
5292                 ;;
5293         esac
5294         fn=d~+
5295         rp='Pathname for the vendor-supplied library files?'
5296         . ./getfile
5297         vendorlib="$ans"
5298         vendorlibexp="$ansexp"
5299         ;;
5300 esac
5301 : Change installation prefix, if necessary.
5302 if $test X"$prefix" != X"$installprefix"; then
5303         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5304 else
5305         installvendorlib="$vendorlibexp"
5306 fi
5307
5308 : Cruising for prototypes
5309 echo " "
5310 echo "Checking out function prototypes..." >&4
5311 $cat >prototype.c <<'EOCP'
5312 int main(int argc, char *argv[]) {
5313         exit(0);}
5314 EOCP
5315 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5316         echo "Your C compiler appears to support function prototypes."
5317         val="$define"
5318 else
5319         echo "Your C compiler doesn't seem to understand function prototypes."
5320         val="$undef"
5321 fi
5322 set prototype
5323 eval $setvar
5324 $rm -f prototype*
5325
5326 case "$prototype" in
5327 "$define") ;;
5328 *)      ansi2knr='ansi2knr'
5329         echo " "
5330         cat <<EOM >&4
5331
5332 $me:  FATAL ERROR:
5333 This version of $package can only be compiled by a compiler that 
5334 understands function prototypes.  Unfortunately, your C compiler 
5335         $cc $ccflags
5336 doesn't seem to understand them.  Sorry about that.
5337
5338 If GNU cc is available for your system, perhaps you could try that instead.  
5339
5340 Eventually, we hope to support building Perl with pre-ANSI compilers.
5341 If you would like to help in that effort, please contact <perlbug@perl.org>.
5342
5343 Aborting Configure now.
5344 EOM
5345         exit 2
5346         ;;
5347 esac
5348
5349 : determine where public executables go
5350 echo " "
5351 set dflt bin bin
5352 eval $prefixit
5353 fn=d~
5354 rp='Pathname where the public executables will reside?'
5355 . ./getfile
5356 if $test "X$ansexp" != "X$binexp"; then
5357         installbin=''
5358 fi
5359 bin="$ans"
5360 binexp="$ansexp"
5361 : Change installation prefix, if necessary.
5362 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5363 if $test X"$prefix" != X"$installprefix"; then
5364         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5365 else
5366         installbin="$binexp"
5367 fi
5368
5369 : Find perl5.005 or later.
5370 echo "Looking for a previously installed perl5.005 or later... "
5371 case "$perl5" in
5372 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
5373                 : Check if this perl is recent and can load a simple module
5374                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5375                         perl5=$tdir/perl
5376                         break;
5377                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5378                         perl5=$tdir/perl
5379                         break;
5380                 fi
5381         done
5382         ;;
5383 *)      perl5="$perl5"
5384         ;;
5385 esac
5386 case "$perl5" in
5387 '')     echo "None found.  That's ok.";;
5388 *)      echo "Using $perl5." ;;
5389 esac
5390
5391 $cat <<EOM
5392
5393 After $package is installed, you may wish to install various
5394 add-on modules and utilities.  Typically, these add-ons will
5395 be installed under $prefix with the rest
5396 of this package.  However, you may wish to install such add-ons
5397 elsewhere under a different prefix.
5398
5399 If you do not wish to put everything under a single prefix, that's
5400 ok.  You will be prompted for the individual locations; this siteprefix
5401 is only used to suggest the defaults.
5402
5403 The default should be fine for most people.
5404
5405 EOM
5406 fn=d~+
5407 rp='Installation prefix to use for add-on modules and utilities?'
5408 : XXX Here might be another good place for an installstyle setting.
5409 case "$siteprefix" in
5410 '') dflt=$prefix ;;
5411 *)  dflt=$siteprefix ;;
5412 esac
5413 . ./getfile
5414 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5415 oldsiteprefix=''
5416 case "$siteprefix" in
5417 '') ;;
5418 *)      case "$ans" in
5419         "$prefix") ;;
5420         *) oldsiteprefix="$prefix";;
5421         esac
5422         ;;
5423 esac
5424 siteprefix="$ans"
5425 siteprefixexp="$ansexp"
5426
5427 : determine where site specific libraries go.
5428 : Usual default is /usr/local/lib/perl5/site_perl/$version
5429 : The default "style" setting is made in installstyle.U
5430 : XXX No longer works with Prefixit stuff.
5431 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5432 case "$sitelib" in
5433 '') case "$installstyle" in
5434         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5435         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5436         esac
5437         ;;
5438 *)      dflt="$sitelib"
5439         ;;
5440 esac
5441 $cat <<EOM
5442
5443 The installation process will create a directory for
5444 site-specific extensions and modules.  Most users find it convenient
5445 to place all site-specific files in this directory rather than in the
5446 main distribution directory.
5447
5448 EOM
5449 fn=d~+
5450 rp='Pathname for the site-specific library files?'
5451 . ./getfile
5452 sitelib="$ans"
5453 sitelibexp="$ansexp"
5454 : Change installation prefix, if necessary.
5455 if $test X"$prefix" != X"$installprefix"; then
5456         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5457 else
5458         installsitelib="$sitelibexp"
5459 fi
5460
5461 : Determine list of previous versions to include in @INC
5462 $cat > getverlist <<EOPL
5463 #!$perl5 -w
5464 use File::Basename;
5465 \$api_versionstring = "$api_versionstring";
5466 \$version = "$version";
5467 \$sitelib = "$sitelib";
5468 \$archname = "$archname";
5469 EOPL
5470         $cat >> getverlist <<'EOPL'
5471 # Can't have leading @ because metaconfig interprets it as a command!
5472 ;@inc_version_list=();
5473 $stem=dirname($sitelib);
5474 # XXX Redo to do opendir/readdir? 
5475 if (-d $stem) {
5476     chdir($stem);
5477     ;@candidates = glob("5.*");
5478 }
5479 else {
5480     ;@candidates = ();
5481 }
5482
5483 # XXX ToDo:  These comparisons must be reworked when two-digit
5484 # subversions come along, so that 5.7.10 compares as greater than
5485 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
5486 # widespread that we can use the built-in version vectors rather
5487 # than reinventing them here.  For 5.6.0, however, we must
5488 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
5489 foreach $d (@candidates) {
5490     if ($d lt $version) {
5491         if ($d ge $api_versionstring) {
5492             unshift(@inc_version_list, "$d/$archname", $d);
5493         }
5494         elsif ($d ge "5.005") {
5495             unshift(@inc_version_list, $d);
5496         }
5497     }
5498     else {
5499         # Skip newer version.  I.e. don't look in
5500         # 5.7.0 if we're installing 5.6.1.
5501     }
5502 }
5503
5504 if (@inc_version_list) {
5505     print join(' ', @inc_version_list);
5506 }
5507 else {
5508     # Blank space to preserve value for next Configure run.
5509     print " ";
5510 }
5511 EOPL
5512 chmod +x getverlist
5513 case "$inc_version_list" in
5514 '')     if test -x "$perl5"; then
5515                 dflt=`$perl5 getverlist`
5516         else
5517                 dflt='none'
5518         fi
5519         ;;
5520 $undef) dflt='none' ;;
5521 *)  dflt="$inc_version_list" ;;
5522 esac
5523 case "$dflt" in
5524 ''|' ') dflt=none ;;
5525 esac
5526 $cat <<'EOM'
5527
5528 In order to ease the process of upgrading, this version of perl 
5529 can be configured to use modules built and installed with earlier 
5530 versions of perl that were installed under $prefix.  Specify here
5531 the list of earlier versions that this version of perl should check.
5532 If Configure detected no earlier versions of perl installed under
5533 $prefix, then the list will be empty.  Answer 'none' to tell perl
5534 to not search earlier versions.
5535
5536 The default should almost always be sensible, so if you're not sure,
5537 just accept the default.
5538 EOM
5539
5540 rp='List of earlier versions to include in @INC?'
5541 . ./myread
5542 case "$ans" in
5543 [Nn]one|''|' ') inc_version_list=' ' ;;
5544 *) inc_version_list="$ans" ;;
5545 esac
5546 case "$inc_version_list" in
5547 ''|' ') 
5548         inc_version_list_init='0';;
5549 *)      inc_version_list_init=`echo $inc_version_list |
5550                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5551         ;;
5552 esac
5553 $rm -f getverlist
5554
5555 : determine whether to install perl also as /usr/bin/perl
5556
5557 echo " "
5558 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5559         $cat <<EOM
5560 Many scripts expect to perl to be installed as /usr/bin/perl.
5561 I can install the perl you are about to compile also as /usr/bin/perl
5562 (in addition to $installbin/perl).
5563 EOM
5564         case "$installusrbinperl" in
5565         "$undef"|[nN]*) dflt='n';;
5566         *)              dflt='y';;
5567         esac
5568         rp="Do you want to install perl as /usr/bin/perl?"
5569         . ./myread
5570         case "$ans" in
5571         [yY]*)  val="$define";;
5572         *)      val="$undef" ;;
5573         esac
5574 else
5575         val="$undef"
5576 fi
5577 set installusrbinperl
5578 eval $setvar
5579
5580 echo " "
5581 echo "Checking for GNU C Library..." >&4
5582 cat >gnulibc.c <<EOM
5583 #include <stdio.h>
5584 int main()
5585 {
5586 #ifdef __GLIBC__
5587     exit(0);
5588 #else
5589     exit(1);
5590 #endif
5591 }
5592 EOM
5593 set gnulibc
5594 if eval $compile_ok && ./gnulibc; then
5595         val="$define"
5596         echo "You are using the GNU C Library"
5597 else
5598         val="$undef"
5599         echo "You are not using the GNU C Library"
5600 fi
5601 $rm -f gnulibc*
5602 set d_gnulibc
5603 eval $setvar
5604
5605 : see if nm is to be used to determine whether a symbol is defined or not
5606 case "$usenm" in
5607 '')
5608         dflt=''
5609         case "$d_gnulibc" in
5610         "$define")
5611                 echo " "
5612                 echo "nm probably won't work on the GNU C Library." >&4
5613                 dflt=n
5614                 ;;
5615         esac
5616         case "$dflt" in
5617         '') 
5618                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5619                         echo " "
5620                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5621                         echo "'nm' won't be sufficient on this sytem." >&4
5622                         dflt=n
5623                 fi
5624                 ;;
5625         esac
5626         case "$dflt" in
5627         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5628                 if $test $dflt -gt 20; then
5629                         dflt=y
5630                 else
5631                         dflt=n
5632                 fi
5633                 ;;
5634         esac
5635         ;;
5636 *)
5637         case "$usenm" in
5638         true|$define) dflt=y;;
5639         *) dflt=n;;
5640         esac
5641         ;;
5642 esac
5643 $cat <<EOM
5644
5645 I can use $nm to extract the symbols from your C libraries. This
5646 is a time consuming task which may generate huge output on the disk (up
5647 to 3 megabytes) but that should make the symbols extraction faster. The
5648 alternative is to skip the 'nm' extraction part and to compile a small
5649 test program instead to determine whether each symbol is present. If
5650 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5651 this may be the best solution.
5652
5653 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5654
5655 EOM
5656 rp="Shall I use $nm to extract C symbols from the libraries?"
5657 . ./myread
5658 case "$ans" in
5659 [Nn]*) usenm=false;;
5660 *) usenm=true;;
5661 esac
5662
5663 runnm=$usenm
5664 case "$reuseval" in
5665 true) runnm=false;;
5666 esac
5667
5668 : nm options which may be necessary
5669 case "$nm_opt" in
5670 '') if $test -f /mach_boot; then
5671                 nm_opt=''       # Mach
5672         elif $test -d /usr/ccs/lib; then
5673                 nm_opt='-p'     # Solaris (and SunOS?)
5674         elif $test -f /dgux; then
5675                 nm_opt='-p'     # DG-UX
5676         elif $test -f /lib64/rld; then
5677                 nm_opt='-p'     # 64-bit Irix
5678         else
5679                 nm_opt=''
5680         fi;;
5681 esac
5682
5683 : nm options which may be necessary for shared libraries but illegal
5684 : for archive libraries.  Thank you, Linux.
5685 case "$nm_so_opt" in
5686 '')     case "$myuname" in
5687         *linux*)
5688                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5689                         nm_so_opt='--dynamic'
5690                 fi
5691                 ;;
5692         esac
5693         ;;
5694 esac
5695
5696 case "$runnm" in
5697 true)
5698 : get list of predefined functions in a handy place
5699 echo " "
5700 case "$libc" in
5701 '') libc=unknown
5702         case "$libs" in
5703         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5704         esac
5705         ;;
5706 esac
5707 libnames='';
5708 case "$libs" in
5709 '') ;;
5710 *)  for thislib in $libs; do
5711         case "$thislib" in
5712         -lc|-lc_s)
5713                 : Handle C library specially below.
5714                 ;;
5715         -l*)
5716                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5717                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5718                         :
5719                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5720                         :
5721                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5722                         :
5723                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5724                         :
5725                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5726                         :
5727                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5728                         :
5729                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5730                         :
5731                 else
5732                         try=''
5733                 fi
5734                 libnames="$libnames $try"
5735                 ;;
5736         *) libnames="$libnames $thislib" ;;
5737         esac
5738         done
5739         ;;
5740 esac
5741 xxx=normal
5742 case "$libc" in
5743 unknown)
5744         set /lib/libc.$so
5745         for xxx in $libpth; do
5746                 $test -r $1 || set $xxx/libc.$so
5747                 : The messy sed command sorts on library version numbers.
5748                 $test -r $1 || \
5749                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5750                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5751                                 h
5752                                 s/[0-9][0-9]*/0000&/g
5753                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5754                                 G
5755                                 s/\n/ /' | \
5756                          sort | $sed -e 's/^.* //'`
5757                 eval set \$$#
5758         done
5759         $test -r $1 || set /usr/ccs/lib/libc.$so
5760         $test -r $1 || set /lib/libsys_s$_a
5761         ;;
5762 *)
5763         set blurfl
5764         ;;
5765 esac
5766 if $test -r "$1"; then
5767         echo "Your (shared) C library seems to be in $1."
5768         libc="$1"
5769 elif $test -r /lib/libc && $test -r /lib/clib; then
5770         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5771         xxx=apollo
5772         libc='/lib/clib /lib/libc'
5773         if $test -r /lib/syslib; then
5774                 echo "(Your math library is in /lib/syslib.)"
5775                 libc="$libc /lib/syslib"
5776         fi
5777 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5778         echo "Your C library seems to be in $libc, as you said before."
5779 elif $test -r $incpath/usr/lib/libc$_a; then
5780         libc=$incpath/usr/lib/libc$_a;
5781         echo "Your C library seems to be in $libc.  That's fine."
5782 elif $test -r /lib/libc$_a; then
5783         libc=/lib/libc$_a;
5784         echo "Your C library seems to be in $libc.  You're normal."
5785 else
5786         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5787                 :
5788         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5789                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5790         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5791                 :
5792         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5793                 :
5794         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5795                 :
5796         else
5797                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5798         fi
5799         if $test -r "$tans"; then
5800                 echo "Your C library seems to be in $tans, of all places."
5801                 libc=$tans
5802         else
5803                 libc='blurfl'
5804         fi
5805 fi
5806 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5807         dflt="$libc"
5808         cat <<EOM
5809
5810 If the guess above is wrong (which it might be if you're using a strange
5811 compiler, or your machine supports multiple models), you can override it here.
5812
5813 EOM
5814 else
5815         dflt=''
5816         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5817         cat >&4 <<EOM
5818 I can't seem to find your C library.  I've looked in the following places:
5819
5820 EOM
5821         $sed 's/^/      /' libpath
5822         cat <<EOM
5823
5824 None of these seems to contain your C library. I need to get its name...
5825
5826 EOM
5827 fi
5828 fn=f
5829 rp='Where is your C library?'
5830 . ./getfile
5831 libc="$ans"
5832
5833 echo " "
5834 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5835 set X `cat libnames`
5836 shift
5837 xxx=files
5838 case $# in 1) xxx=file; esac
5839 echo "Extracting names from the following $xxx for later perusal:" >&4
5840 echo " "
5841 $sed 's/^/      /' libnames >&4
5842 echo " "
5843 $echo $n "This may take a while...$c" >&4
5844
5845 for file in $*; do
5846         case $file in
5847         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5848         *) $nm $nm_opt $file 2>/dev/null;;
5849         esac
5850 done >libc.tmp
5851
5852 $echo $n ".$c"
5853 $grep fprintf libc.tmp > libc.ptf
5854 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5855 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5856 xxx='[ADTSIW]'
5857 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5858         eval $xscan;\
5859         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5860                 eval $xrun
5861 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5862         eval $xscan;\
5863         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5864                 eval $xrun
5865 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5866         eval $xscan;\
5867         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5868                 eval $xrun
5869 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5870         eval $xscan;\
5871         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5872                 eval $xrun
5873 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5874         eval $xscan;\
5875         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5876                 eval $xrun
5877 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5878         eval $xscan;\
5879         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5880                 eval $xrun
5881 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5882                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5883         eval $xscan;\
5884         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5885                 eval $xrun
5886 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5887         eval $xscan;\
5888         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5889                 eval $xrun
5890 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5891         eval $xscan;\
5892         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5893                 eval $xrun
5894 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5895         eval $xscan;\
5896         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5897                 eval $xrun
5898 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5899         eval $xscan;\
5900         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5901                 eval $xrun
5902 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5903         eval $xscan;\
5904         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5905                 eval $xrun
5906 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5907         eval $xscan;\
5908         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5909                 eval $xrun
5910 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5911         eval $xscan;\
5912         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5913                 eval $xrun
5914 else
5915         $nm -p $* 2>/dev/null >libc.tmp
5916         $grep fprintf libc.tmp > libc.ptf
5917         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5918                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5919         then
5920                 nm_opt='-p'
5921                 eval $xrun
5922         else
5923                 echo " "
5924                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5925                 com=''
5926                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5927                         for thisname in $libnames $libc; do
5928                                 $ar t $thisname >>libc.tmp
5929                         done
5930                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5931                         echo "Ok." >&4
5932                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5933                         # Repeat libc to extract forwarders to DLL entries too
5934                         for thisname in $libnames $libc; do
5935                                 $ar tv $thisname >>libc.tmp
5936                                 # Revision 50 of EMX has bug in $ar.
5937                                 # it will not extract forwarders to DLL entries
5938                                 # Use emximp which will extract exactly them.
5939                                 emximp -o tmp.imp $thisname \
5940                                     2>/dev/null && \
5941                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5942                                     < tmp.imp >>libc.tmp
5943                                 $rm tmp.imp
5944                         done
5945                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5946                         echo "Ok." >&4
5947                 else
5948                         echo "$ar didn't seem to work right." >&4
5949                         echo "Maybe this is a Cray...trying bld instead..." >&4
5950                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5951                         then
5952                                 for thisname in $libnames; do
5953                                         bld t $libnames | \
5954                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5955                                         $ar t $thisname >>libc.tmp
5956                                 done
5957                                 echo "Ok." >&4
5958                         else
5959                                 echo "That didn't work either.  Giving up." >&4
5960                                 exit 1
5961                         fi
5962                 fi
5963         fi
5964 fi
5965 nm_extract="$com"
5966 if $test -f /lib/syscalls.exp; then
5967         echo " "
5968         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5969         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5970 fi
5971 ;;
5972 esac
5973 $rm -f libnames libpath
5974
5975 : see if dld is available
5976 set dld.h i_dld
5977 eval $inhdr
5978
5979 : is a C symbol defined?
5980 csym='tlook=$1;
5981 case "$3" in
5982 -v) tf=libc.tmp; tc=""; tdc="";;
5983 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5984 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5985 esac;
5986 tx=yes;
5987 case "$reuseval-$4" in
5988 true-) ;;
5989 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5990 esac;
5991 case "$tx" in
5992 yes)
5993         case "$runnm" in
5994         true)
5995                 if $contains $tlook $tf >/dev/null 2>&1;
5996                 then tval=true;
5997                 else tval=false;
5998                 fi;;
5999         *)
6000                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
6001                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
6002                 then tval=true;
6003                 else tval=false;
6004                 fi;
6005                 $rm -f t t.c;;
6006         esac;;
6007 *)
6008         case "$tval" in
6009         $define) tval=true;;
6010         *) tval=false;;
6011         esac;;
6012 esac;
6013 eval "$2=$tval"'
6014
6015 : define an is-in-libc? function
6016 inlibc='echo " "; td=$define; tu=$undef;
6017 sym=$1; var=$2; eval "was=\$$2";
6018 tx=yes;
6019 case "$reuseval$was" in
6020 true) ;;
6021 true*) tx=no;;
6022 esac;
6023 case "$tx" in
6024 yes)
6025         set $sym tres -f;
6026         eval $csym;
6027         case "$tres" in
6028         true)
6029                 echo "$sym() found." >&4;
6030                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
6031         *)
6032                 echo "$sym() NOT found." >&4;
6033                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
6034         esac;;
6035 *)
6036         case "$was" in
6037         $define) echo "$sym() found." >&4;;
6038         *) echo "$sym() NOT found." >&4;;
6039         esac;;
6040 esac'
6041
6042 : see if dlopen exists
6043 xxx_runnm="$runnm"
6044 runnm=false
6045 set dlopen d_dlopen
6046 eval $inlibc
6047 runnm="$xxx_runnm"
6048
6049 : determine which dynamic loading, if any, to compile in
6050 echo " "
6051 dldir="ext/DynaLoader"
6052 case "$usedl" in
6053 $define|y|true)
6054         dflt='y'
6055         usedl="$define"
6056         ;;
6057 $undef|n|false)
6058         dflt='n'
6059         usedl="$undef"
6060         ;;
6061 *) 
6062         dflt='n'
6063         case "$d_dlopen" in
6064             $define) dflt='y' ;;
6065         esac
6066         case "$i_dld" in
6067             $define) dflt='y' ;;
6068         esac
6069         : Does a dl_xxx.xs file exist for this operating system
6070         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6071         ;;
6072 esac
6073 rp="Do you wish to use dynamic loading?"
6074 . ./myread
6075 usedl="$ans"
6076 case "$ans" in
6077 y*) usedl="$define"
6078         case "$dlsrc" in
6079         '')
6080                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6081                         dflt="$dldir/dl_${osname}.xs"
6082                 elif $test "$d_dlopen" = "$define" ; then
6083                         dflt="$dldir/dl_dlopen.xs"
6084                 elif $test "$i_dld" = "$define" ; then
6085                         dflt="$dldir/dl_dld.xs"
6086                 else
6087                         dflt=''
6088                 fi
6089                 ;;
6090         *)      dflt="$dldir/$dlsrc"
6091                 ;;
6092         esac
6093     echo "The following dynamic loading files are available:"
6094         : Can not go over to $dldir because getfile has path hard-coded in.
6095         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6096         rp="Source file to use for dynamic loading"
6097         fn="fne"
6098         gfpth="$src"
6099         . ./getfile
6100         usedl="$define"
6101         : emulate basename
6102         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6103
6104         $cat << EOM
6105
6106 Some systems may require passing special flags to $cc -c to
6107 compile modules that will be used to create a shared library.
6108 To use no flags, say "none".
6109
6110 EOM
6111     case "$cccdlflags" in
6112     '') case "$gccversion" in
6113                 '') case "$osname" in
6114                         hpux)   dflt='+z' ;;
6115                         next)   dflt='none' ;;
6116                         irix*)  dflt='-KPIC' ;;
6117                         svr4*|esix*|solaris) dflt='-KPIC' ;;
6118                         sunos)  dflt='-pic' ;;
6119                         *)      dflt='none' ;;
6120                     esac
6121                         ;;
6122                 *)  case "$osname" in
6123                         svr4*|esix*|solaris) dflt='-fPIC' ;;
6124                         *)      dflt='-fpic' ;;
6125                     esac ;;
6126             esac ;;
6127         ' ') dflt='none' ;;
6128     *)  dflt="$cccdlflags" ;;
6129     esac
6130     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6131     . ./myread
6132     case "$ans" in
6133     none) cccdlflags=' ' ;;
6134     *) cccdlflags="$ans" ;;
6135     esac
6136
6137     cat << EOM
6138
6139 Some systems use ld to create libraries that can be dynamically loaded,
6140 while other systems (such as those using ELF) use $cc.
6141
6142 EOM
6143         case "$ld" in
6144         '')     $cat >try.c <<'EOM'
6145 /* Test for whether ELF binaries are produced */
6146 #include <fcntl.h>
6147 #include <stdlib.h>
6148 int main() {
6149         char b[4];
6150         int i = open("a.out",O_RDONLY);
6151         if(i == -1) 
6152                 exit(1); /* fail */
6153         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6154                 exit(0); /* succeed (yes, it's ELF) */
6155         else
6156                 exit(1); /* fail */
6157 }
6158 EOM
6159                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6160                         cat <<EOM
6161 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6162 EOM
6163                         dflt="$cc"
6164                 else
6165                         echo "I'll use ld to build dynamic libraries."
6166                         dflt='ld'
6167                 fi
6168                 rm -f try.c a.out
6169                 ;;
6170         *)      dflt="$ld"
6171                 ;;
6172         esac
6173
6174     rp="What command should be used to create dynamic libraries?"
6175     . ./myread
6176         ld="$ans"
6177
6178     cat << EOM
6179
6180 Some systems may require passing special flags to $ld to create a
6181 library that can be dynamically loaded.  If your ld flags include
6182 -L/other/path options to locate libraries outside your loader's normal
6183 search path, you may need to specify those -L options here as well.  To
6184 use no flags, say "none".
6185
6186 EOM
6187     case "$lddlflags" in
6188     '') case "$osname" in
6189                         beos) dflt='-nostart' ;;
6190                         hpux) case "$gccversion" in
6191                               '') dflt='-b +vnocompatwarnings' ;;
6192                               *)  dflt='none' ;;
6193                               esac
6194                               ;;        
6195                         linux|irix*)    dflt='-shared' ;;
6196                         next)  dflt='none' ;;
6197                         solaris) dflt='-G' ;;
6198                         sunos) dflt='-assert nodefinitions' ;;
6199                         svr4*|esix*) dflt="-G $ldflags" ;;
6200                 *)     dflt='none' ;;
6201                         esac
6202                         ;;
6203     *) dflt="$lddlflags" ;;
6204     esac
6205
6206         : Try to guess additional flags to pick up local libraries.
6207         : Be careful not to append to a plain 'none'
6208         case "$dflt" in
6209         none) dflt='' ;;
6210         esac
6211         for thisflag in $ldflags; do
6212                 case "$thisflag" in
6213                 -L*)
6214                         case " $dflt " in
6215                         *" $thisflag "*) ;;
6216                         *) dflt="$dflt $thisflag" ;;
6217                         esac
6218                         ;;
6219                 esac
6220         done
6221
6222         case "$dflt" in
6223         ''|' ') dflt='none' ;;
6224         esac
6225
6226     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6227     . ./myread
6228     case "$ans" in
6229     none) lddlflags=' ' ;;
6230     *) lddlflags="$ans" ;;
6231     esac
6232
6233         cat <<EOM
6234
6235 Some systems may require passing special flags to $cc to indicate that
6236 the resulting executable will use dynamic linking.  To use no flags,
6237 say "none".
6238
6239 EOM
6240     case "$ccdlflags" in
6241     '') case "$osname" in
6242                 hpux)   dflt='-Wl,-E' ;;
6243                 linux)  dflt='-rdynamic' ;;
6244                 next)   dflt='none' ;;
6245                 sunos)  dflt='none' ;;
6246                 *)      dflt='none' ;;
6247             esac ;;
6248     ' ')  dflt='none' ;;
6249     *)  dflt="$ccdlflags" ;;
6250     esac
6251     rp="Any special flags to pass to $cc to use dynamic linking?"
6252     . ./myread
6253     case "$ans" in
6254     none) ccdlflags=' ' ;;
6255     *) ccdlflags="$ans" ;;
6256     esac
6257     ;;
6258 *)  usedl="$undef"
6259         ld='ld'
6260     dlsrc='dl_none.xs'
6261     lddlflags=''
6262     ccdlflags=''
6263     ;;
6264 esac
6265
6266 also=''
6267 case "$usedl" in
6268 $undef)
6269         # No dynamic loading being used, so don't bother even to prompt.
6270         useshrplib='false'
6271         ;;
6272 *)      case "$useshrplib" in
6273         '')     case "$osname" in
6274                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6275                         dflt=y
6276                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6277                         ;;
6278                 next*)
6279                         case "$osvers" in
6280                         4*)     dflt=y
6281                                 also='Building a shared libperl is needed for MAB support.'
6282                                 ;;
6283                         *)      dflt=n
6284                                 ;;
6285                         esac
6286                         ;;
6287                 *)      dflt=n
6288                         ;;
6289                 esac
6290                 ;;
6291         $define|true|[Yy]*)
6292                 dflt=y
6293                 ;;
6294         *)      dflt=n
6295                 ;;
6296         esac
6297         $cat << EOM
6298
6299 The perl executable is normally obtained by linking perlmain.c with
6300 libperl${_a}, any static extensions (usually just DynaLoader), and
6301 any other libraries needed on this system (such as -lm, etc.).  Since
6302 your system supports dynamic loading, it is probably possible to build
6303 a shared libperl.$so.  If you will have more than one executable linked
6304 to libperl.$so, this will significantly reduce the size of each
6305 executable, but it may have a noticeable affect on performance.  The
6306 default is probably sensible for your system.
6307 $also
6308
6309 EOM
6310         rp="Build a shared libperl.$so (y/n)"
6311         . ./myread
6312         case "$ans" in
6313         true|$define|[Yy]*)
6314                 useshrplib='true'  ;;
6315         *)      useshrplib='false' ;;
6316         esac
6317         ;;
6318 esac
6319
6320 case "$useshrplib" in
6321 true)
6322         case "$libperl" in
6323         '')
6324                 # Figure out a good name for libperl.so.  Since it gets stored in
6325                 # a version-specific architecture-dependent library, the version
6326                 # number isn't really that important, except for making cc/ld happy.
6327                 #
6328                 # A name such as libperl.so.3.1
6329                 majmin="libperl.$so.$patchlevel.$subversion"
6330                 # A name such as libperl.so.301
6331                 majonly=`echo $patchlevel $subversion |
6332                         $awk '{printf "%d%02d", $1, $2}'`
6333                 majonly=libperl.$so.$majonly
6334                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6335                 # rely on figuring it out from the naming of libc.
6336                 case "${osname}${osvers}" in
6337                 next4*)
6338                         dflt=libperl.5.$so
6339                         # XXX How handle the --version stuff for MAB?
6340                         ;;
6341                 linux*)  # ld won't link with a bare -lperl otherwise.
6342                         dflt=libperl.$so
6343                         ;;
6344                 cygwin*) # include version
6345                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6346                         ;;
6347                 *)      # Try to guess based on whether libc has major.minor.
6348                         case "$libc" in
6349                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6350                         *libc.$so.[0-9]*) dflt=$majonly ;;
6351                         *)      dflt=libperl.$so ;;
6352                         esac
6353                         ;;
6354                 esac
6355                 ;;
6356         *)      dflt=$libperl
6357                 ;;
6358         esac
6359         cat << EOM
6360
6361 I need to select a good name for the shared libperl.  If your system uses
6362 library names with major and minor numbers, then you might want something
6363 like $majmin.  Alternatively, if your system uses a single version
6364 number for shared libraries, then you might want to use $majonly.
6365 Or, your system might be quite happy with a simple libperl.$so.
6366
6367 Since the shared libperl will get installed into a version-specific
6368 architecture-dependent directory, the version number of the shared perl
6369 library probably isn't important, so the default should be o.k.
6370
6371 EOM
6372         rp='What name do you want to give to the shared libperl?'
6373         . ./myread
6374         libperl=$ans
6375         echo "Ok, I'll use $libperl"
6376         ;;
6377 *)
6378         libperl="libperl${_a}"
6379         ;;
6380 esac
6381
6382 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6383 case "$shrpdir" in
6384 '') ;;
6385 *)      $cat >&4 <<EOM
6386 WARNING:  Use of the shrpdir variable for the installation location of
6387 the shared $libperl is not supported.  It was never documented and
6388 will not work in this version.  Let me (perlbug@perl.com)
6389 know of any problems this may cause.
6390
6391 EOM
6392         case "$shrpdir" in
6393         "$archlibexp/CORE")
6394                 $cat >&4 <<EOM
6395 But your current setting of $shrpdir is
6396 the default anyway, so it's harmless.
6397 EOM
6398                 ;;
6399         *)
6400                 $cat >&4 <<EOM
6401 Further, your current attempted setting of $shrpdir
6402 conflicts with the value of $archlibexp/CORE
6403 that installperl will use.
6404 EOM
6405                 ;;
6406         esac
6407         ;;
6408 esac
6409
6410 # How will the perl executable find the installed shared $libperl?
6411 # Add $xxx to ccdlflags.
6412 # If we can't figure out a command-line option, use $shrpenv to
6413 # set env LD_RUN_PATH.  The main perl makefile uses this.
6414 shrpdir=$archlibexp/CORE
6415 xxx=''
6416 tmp_shrpenv=''
6417 if "$useshrplib"; then
6418     case "$osname" in 
6419         aix)
6420                 # We'll set it in Makefile.SH...
6421                 ;;
6422         solaris|netbsd)
6423                 xxx="-R $shrpdir"
6424                 ;;
6425         freebsd)
6426                 xxx="-Wl,-R$shrpdir"
6427                 ;;
6428         linux|irix*|dec_osf)
6429                 xxx="-Wl,-rpath,$shrpdir"
6430                 ;;
6431         next)
6432                 # next doesn't like the default...
6433                 ;;
6434         beos)
6435                 # beos doesn't like the default, either.
6436                 ;;
6437         hpux*)
6438                 # hpux doesn't like the default, either.
6439                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6440                 ;;
6441         *)
6442                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6443                 ;;
6444         esac
6445         case "$xxx" in
6446         '') ;;
6447         *)      
6448                 # Only add $xxx if it isn't already in ccdlflags.
6449                 case " $ccdlflags " in
6450                 *" $xxx "*)     ;;
6451                 *)      ccdlflags="$ccdlflags $xxx"
6452                         cat <<EOM >&4
6453
6454 Adding $xxx to the flags
6455 passed to $ld so that the perl executable will find the 
6456 installed shared $libperl.
6457
6458 EOM
6459                         ;;
6460                 esac
6461                 ;;
6462         esac
6463 fi
6464 # Fix ccdlflags in AIX for building external extensions.
6465 # (For building Perl itself bare -bE:perl.exp is needed,
6466 #  Makefile.SH takes care of this.)
6467 case "$osname" in
6468 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6469 esac
6470 # Respect a hint or command-line value.
6471 case "$shrpenv" in
6472 '') shrpenv="$tmp_shrpenv" ;;
6473 esac
6474 case "$ldlibpthname" in
6475 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6476 none)   ldlibpthname='' ;;
6477 esac
6478
6479 : determine where manual pages go
6480 set man1dir man1dir none
6481 eval $prefixit
6482 $cat <<EOM
6483
6484 $spackage has manual pages available in source form.
6485 EOM
6486 case "$nroff" in
6487 nroff)
6488         echo "However, you don't have nroff, so they're probably useless to you."
6489         case "$man1dir" in
6490         '') man1dir="none";;
6491         esac;;
6492 esac
6493 echo "If you don't want the manual sources installed, answer 'none'."
6494 case "$man1dir" in
6495 ' ') dflt=none
6496         ;;
6497 '')
6498         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6499         lookpath="$lookpath $prefixexp/man/p_man/man1"
6500         lookpath="$lookpath $prefixexp/man/u_man/man1"
6501         lookpath="$lookpath $prefixexp/man/man.1"
6502         case "$sysman" in
6503         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6504         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6505         esac
6506         set dflt
6507         eval $prefixup
6508         ;;
6509 *)  dflt="$man1dir"
6510         ;;
6511 esac
6512 echo " "
6513 fn=dn+~
6514 rp="Where do the main $spackage manual pages (source) go?"
6515 . ./getfile
6516 if $test "X$man1direxp" != "X$ansexp"; then
6517         installman1dir=''
6518 fi
6519 man1dir="$ans"
6520 man1direxp="$ansexp"
6521 case "$man1dir" in
6522 '')     man1dir=' '
6523         installman1dir='';;
6524 esac
6525
6526 : Change installation prefix, if necessary.
6527 if $test X"$prefix" != X"$installprefix"; then
6528         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6529 else
6530         installman1dir="$man1direxp"
6531 fi
6532
6533 : What suffix to use on installed man pages
6534
6535 case "$man1dir" in
6536 ' ')
6537         man1ext='0'
6538         ;;
6539 *)
6540         rp="What suffix should be used for the main $spackage man pages?"
6541         case "$man1ext" in
6542         '')     case "$man1dir" in
6543                 *1)  dflt=1 ;;
6544                 *1p) dflt=1p ;;
6545                 *1pm) dflt=1pm ;;
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                 *L1) dflt=L1;;
6553                 *) dflt=1;;
6554                 esac
6555                 ;;
6556         *)      dflt="$man1ext";;
6557         esac
6558         . ./myread
6559         man1ext="$ans"
6560         ;;
6561 esac
6562
6563 : see if we can have long filenames
6564 echo " "
6565 rmlist="$rmlist /tmp/cf$$"
6566 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
6567 first=123456789abcdef
6568 second=/tmp/cf$$/$first
6569 $rm -f $first $second
6570 if (echo hi >$first) 2>/dev/null; then
6571         if $test -f 123456789abcde; then
6572                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6573                 val="$undef"
6574         else
6575                 if (echo hi >$second) 2>/dev/null; then
6576                         if $test -f /tmp/cf$$/123456789abcde; then
6577                                 $cat <<'EOM'
6578 That's peculiar... You can have filenames longer than 14 characters, but only
6579 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
6580 I shall consider your system cannot support long filenames at all.
6581 EOM
6582                                 val="$undef"
6583                         else
6584                                 echo 'You can have filenames longer than 14 characters.' >&4
6585                                 val="$define"
6586                         fi
6587                 else
6588                         $cat <<'EOM'
6589 How confusing! Some of your filesystems are sane enough to allow filenames
6590 longer than 14 characters but some others like /tmp can't even think about them.
6591 So, for now on, I shall assume your kernel does not allow them at all.
6592 EOM
6593                         val="$undef"
6594                 fi
6595         fi
6596 else
6597         $cat <<'EOM'
6598 You can't have filenames longer than 14 chars.  You can't even think about them!
6599 EOM
6600         val="$undef"
6601 fi 
6602 set d_flexfnam
6603 eval $setvar
6604 $rm -rf /tmp/cf$$ 123456789abcde*
6605
6606 : determine where library module manual pages go
6607 set man3dir man3dir none
6608 eval $prefixit
6609 $cat <<EOM
6610
6611 $spackage has manual pages for many of the library modules.
6612 EOM
6613
6614 case "$nroff" in
6615 nroff)
6616         $cat <<'EOM'
6617 However, you don't have nroff, so they're probably useless to you.
6618 EOM
6619         case "$man3dir" in
6620         '') man3dir="none";;
6621         esac;;
6622 esac
6623
6624 case "$d_flexfnam" in
6625 undef)
6626         $cat <<'EOM'
6627 However, your system can't handle the long file names like File::Basename.3. 
6628 EOM
6629         case "$man3dir" in
6630         '') man3dir="none";;
6631         esac;;
6632 esac
6633
6634 echo "If you don't want the manual sources installed, answer 'none'."
6635 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6636 case "$man3dir" in
6637 '')     dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6638         if $test -d "$privlib/man/man3"; then
6639                 cat <<EOM >&4
6640
6641 WARNING:  Previous versions of perl installed man3 pages into
6642 $privlib/man/man3.  This version will suggest a 
6643 new default of $dflt.  
6644 EOM
6645                 tdflt=$dflt
6646                 dflt='n'
6647                 rp='Do you wish to preserve the old behavior?(y/n)'
6648                 . ./myread
6649                 case "$ans" in
6650                 y*) dflt="$privlib/man/man3" ;;
6651                 *)  dflt=$tdflt ;;
6652                 esac
6653     fi
6654         ;;
6655 ' ') dflt=none;;
6656 *)      dflt="$man3dir" ;;
6657 esac
6658 echo " "
6659 fn=dn+~
6660 rp="Where do the $package library man pages (source) go?"
6661 . ./getfile
6662 man3dir="$ans"
6663 man3direxp="$ansexp"
6664 case "$man1dir" in
6665 '')     man3dir=' '
6666         installman3dir='';;
6667 esac
6668
6669 : Change installation prefix, if necessary.
6670 if $test X"$prefix" != X"$installprefix"; then
6671         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6672 else
6673         installman3dir="$man3direxp"
6674 fi
6675
6676 : What suffix to use on installed man pages
6677 case "$man3dir" in
6678 ' ')
6679         man3ext='0'
6680         ;;
6681 *)
6682         rp="What suffix should be used for the $package library man pages?"
6683         case "$man3ext" in
6684         '')     case "$man3dir" in
6685                 *3)  dflt=3 ;;
6686                 *3p) dflt=3p ;;
6687                 *3pm) dflt=3pm ;;
6688                 *l) dflt=l;;
6689                 *n) dflt=n;;
6690                 *o) dflt=o;;
6691                 *p) dflt=p;;
6692                 *C) dflt=C;;
6693                 *L) dflt=L;;
6694                 *L3) dflt=L3;;
6695                 *) dflt=3;;
6696                 esac
6697                 ;;
6698         *)      dflt="$man3ext";;
6699         esac
6700         . ./myread
6701         man3ext="$ans"
6702         ;;
6703 esac
6704
6705 : see if we have to deal with yellow pages, now NIS.
6706 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6707         if $test -f /usr/etc/nibindd; then
6708                 echo " "
6709                 echo "I'm fairly confident you're on a NeXT."
6710                 echo " "
6711                 rp='Do you get the hosts file via NetInfo?'
6712                 dflt=y
6713                 case "$hostcat" in
6714                 nidump*) ;;
6715                 '') ;;
6716                 *) dflt=n;;
6717                 esac
6718                 . ./myread
6719                 case "$ans" in
6720                 y*) hostcat='nidump hosts .';;
6721                 *)      case "$hostcat" in
6722                         nidump*) hostcat='';;
6723                         esac
6724                         ;;
6725                 esac
6726         fi
6727         case "$hostcat" in
6728         nidump*) ;;
6729         *)
6730                 case "$hostcat" in
6731                 *ypcat*) dflt=y;;
6732                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6733                                 dflt=y
6734                         else
6735                                 dflt=n
6736                         fi;;
6737                 *) dflt=n;;
6738                 esac
6739                 echo " "
6740                 rp='Are you getting the hosts file via yellow pages?'
6741                 . ./myread
6742                 case "$ans" in
6743                 y*) hostcat='ypcat hosts';;
6744                 *) hostcat='cat /etc/hosts';;
6745                 esac
6746                 ;;
6747         esac
6748 fi
6749 case "$hostcat" in
6750 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6751 esac
6752 case "$groupcat" in
6753 '') test -f /etc/group && groupcat='cat /etc/group';;
6754 esac
6755 case "$passcat" in
6756 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6757 esac
6758
6759 : now get the host name
6760 echo " "
6761 echo "Figuring out host name..." >&4
6762 case "$myhostname" in
6763 '') cont=true
6764         echo 'Maybe "hostname" will work...'
6765         if tans=`sh -c hostname 2>&1` ; then
6766                 myhostname=$tans
6767                 phostname=hostname
6768                 cont=''
6769         fi
6770         ;;
6771 *) cont='';;
6772 esac
6773 if $test "$cont"; then
6774         if ./xenix; then
6775                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
6776                 if tans=`cat /etc/systemid 2>&1` ; then
6777                         myhostname=$tans
6778                         phostname='cat /etc/systemid'
6779                         echo "Whadyaknow.  Xenix always was a bit strange..."
6780                         cont=''
6781                 fi
6782         elif $test -r /etc/systemid; then
6783                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6784         fi
6785 fi
6786 if $test "$cont"; then
6787         echo 'No, maybe "uuname -l" will work...'
6788         if tans=`sh -c 'uuname -l' 2>&1` ; then
6789                 myhostname=$tans
6790                 phostname='uuname -l'
6791         else
6792                 echo 'Strange.  Maybe "uname -n" will work...'
6793                 if tans=`sh -c 'uname -n' 2>&1` ; then
6794                         myhostname=$tans
6795                         phostname='uname -n'
6796                 else
6797                         echo 'Oh well, maybe I can mine it out of whoami.h...'
6798                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6799                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6800                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6801                         else
6802                                 case "$myhostname" in
6803                                 '') echo "Does this machine have an identity crisis or something?"
6804                                         phostname='';;
6805                                 *)
6806                                         echo "Well, you said $myhostname before..."
6807                                         phostname='echo $myhostname';;
6808                                 esac
6809                         fi
6810                 fi
6811         fi
6812 fi
6813 : you do not want to know about this
6814 set $myhostname
6815 myhostname=$1
6816
6817 : verify guess
6818 if $test "$myhostname" ; then
6819         dflt=y
6820         rp='Your host name appears to be "'$myhostname'".'" Right?"
6821         . ./myread
6822         case "$ans" in
6823         y*) ;;
6824         *) myhostname='';;
6825         esac
6826 fi
6827
6828 : bad guess or no guess
6829 while $test "X$myhostname" = X ; do
6830         dflt=''
6831         rp="Please type the (one word) name of your host:"
6832         . ./myread
6833         myhostname="$ans"
6834 done
6835
6836 : translate upper to lower if necessary
6837 case "$myhostname" in
6838 *[A-Z]*)
6839         echo "(Normalizing case in your host name)"
6840         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6841         ;;
6842 esac
6843
6844 case "$myhostname" in
6845 *.*)
6846         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6847         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6848         echo "(Trimming domain name from host name--host name is now $myhostname)"
6849         ;;
6850 *) case "$mydomain" in
6851         '')
6852                 {
6853                         test "X$hostcat" = "Xypcat hosts" &&
6854                         ypmatch "$myhostname" hosts 2>/dev/null |\
6855                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
6856                         $test -s hosts
6857                 } || {
6858                         test "X$hostcat" != "X" &&
6859                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
6860                                         /[       ]$myhostname[  . ]/p" > hosts
6861                 }
6862                 tmp_re="[       . ]"
6863                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
6864                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
6865                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6866                         hosts | $sort | $uniq | \
6867                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6868                 case `$echo X$dflt` in
6869                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
6870                         dflt=.
6871                         ;;
6872                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6873                         ;;
6874                 esac
6875                 case "$dflt" in
6876                 .)
6877                         tans=`./loc resolv.conf X /etc /usr/etc`
6878                         if $test -f "$tans"; then
6879                                 echo "(Attempting domain name extraction from $tans)"
6880                                 dflt=.`$sed -n -e 's/   / /g' \
6881                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
6882                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6883                                 case "$dflt" in
6884                                 .) dflt=.`$sed -n -e 's/        / /g' \
6885                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
6886                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6887                                         ;;
6888                                 esac
6889                         fi
6890                         ;;
6891                 esac
6892                 case "$dflt" in
6893                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6894                         dflt=.`sh -c domainname 2>/dev/null`
6895                         case "$dflt" in
6896                         '') dflt='.';;
6897                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6898                         esac
6899                         ;;
6900                 esac
6901                 case "$dflt" in
6902                 .) echo "(Lost all hope -- silly guess then)"
6903                         dflt='.uucp'
6904                         ;;
6905                 esac
6906                 $rm -f hosts
6907                 ;;
6908         *) dflt="$mydomain";;
6909         esac;;
6910 esac
6911 echo " "
6912 rp="What is your domain name?"
6913 . ./myread
6914 tans="$ans"
6915 case "$ans" in
6916 '') ;;
6917 .*) ;;
6918 *) tans=".$tans";;
6919 esac
6920 mydomain="$tans"
6921
6922 : translate upper to lower if necessary
6923 case "$mydomain" in
6924 *[A-Z]*)
6925         echo "(Normalizing case in your domain name)"
6926         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6927         ;;
6928 esac
6929
6930 : a little sanity check here
6931 case "$phostname" in
6932 '') ;;
6933 *)
6934         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6935         $myhostname$mydomain|$myhostname) ;;
6936         *)
6937                 case "$phostname" in
6938                 sed*)
6939                         echo "(That doesn't agree with your whoami.h file, by the way.)"
6940                         ;;
6941                 *)
6942                         echo "(That doesn't agree with your $phostname command, by the way.)"
6943                         ;;
6944                 esac
6945         ;;
6946         esac
6947         ;;
6948 esac
6949
6950 $cat <<EOM
6951
6952 I need to get your e-mail address in Internet format if possible, i.e.
6953 something like user@host.domain. Please answer accurately since I have
6954 no easy means to double check it. The default value provided below
6955 is most probably close to reality but may not be valid from outside
6956 your organization...
6957
6958 EOM
6959 cont=x
6960 while test "$cont"; do
6961         case "$cf_email" in
6962         '') dflt="$cf_by@$myhostname$mydomain";;
6963         *) dflt="$cf_email";;
6964         esac
6965         rp='What is your e-mail address?'
6966         . ./myread
6967         cf_email="$ans"
6968         case "$cf_email" in
6969         *@*.*) cont='' ;;
6970         *)
6971                 rp='Address does not look like an Internet one.  Use it anyway?'
6972                 case "$fastread" in
6973                 yes) dflt=y ;;
6974                 *) dflt=n ;;
6975                 esac
6976                 . ./myread
6977                 case "$ans" in
6978                 y*) cont='' ;;
6979                 *) echo " " ;;
6980                 esac
6981                 ;;
6982         esac
6983 done
6984
6985 $cat <<EOM
6986
6987 If you or somebody else will be maintaining perl at your site, please
6988 fill in the correct e-mail address here so that they may be contacted
6989 if necessary. Currently, the "perlbug" program included with perl
6990 will send mail to this address in addition to perlbug@perl.com. You may
6991 enter "none" for no administrator.
6992
6993 EOM
6994 case "$perladmin" in
6995 '') dflt="$cf_email";;
6996 *) dflt="$perladmin";;
6997 esac
6998 rp='Perl administrator e-mail address'
6999 . ./myread
7000 perladmin="$ans"
7001
7002 : figure out how to guarantee perl startup
7003 case "$startperl" in
7004 '')
7005         case "$sharpbang" in
7006         *!)
7007                 $cat <<EOH
7008
7009 I can use the #! construct to start perl on your system. This will
7010 make startup of perl scripts faster, but may cause problems if you
7011 want to share those scripts and perl is not in a standard place
7012 ($binexp/perl) on all your platforms. The alternative is to force
7013 a shell by starting the script with a single ':' character.
7014
7015 EOH
7016                 dflt="$binexp/perl"
7017                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7018                 . ./myread
7019                 case "$ans" in
7020                 none)   startperl=": # use perl";;
7021                 *)      startperl="#!$ans"
7022                         if $test 30 -lt `echo "$ans" | wc -c`; then
7023                                 $cat >&4 <<EOM
7024
7025 WARNING:  Some systems limit the #! command to 32 characters.
7026 If you experience difficulty running Perl scripts with #!, try
7027 installing Perl in a directory with a shorter pathname.
7028
7029 EOM
7030                         fi ;;
7031                 esac
7032                 ;;
7033         *) startperl=": # use perl"
7034                 ;;
7035         esac
7036         ;;
7037 esac
7038 echo "I'll use $startperl to start perl scripts."
7039
7040 : figure best path for perl in scripts
7041 case "$perlpath" in
7042 '')
7043         perlpath="$binexp/perl"
7044         case "$startperl" in
7045         *!*) ;;
7046         *)
7047                 $cat <<EOH
7048
7049 I will use the "eval 'exec'" idiom to start Perl on your system.
7050 I can use the full path of your Perl binary for this purpose, but
7051 doing so may cause problems if you want to share those scripts and
7052 Perl is not always in a standard place ($binexp/perl).
7053
7054 EOH
7055                 dflt="$binexp/perl"
7056                 rp="What path shall I use in \"eval 'exec'\"?"
7057                 . ./myread
7058                 perlpath="$ans"
7059                 ;;
7060         esac
7061         ;;
7062 esac
7063 case "$startperl" in
7064 *!*)    ;;
7065 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7066 esac
7067
7068 : determine where public executable scripts go
7069 set scriptdir scriptdir
7070 eval $prefixit
7071 case "$scriptdir" in
7072 '')
7073         dflt="$bin"
7074         : guess some guesses
7075         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7076         $test -d /usr/share/bin     && dflt=/usr/share/bin
7077         $test -d /usr/local/script  && dflt=/usr/local/script
7078         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7079         $test -d $prefixexp/script  && dflt=$prefixexp/script
7080         set dflt
7081         eval $prefixup
7082         ;;
7083 *)  dflt="$scriptdir"
7084         ;;
7085 esac
7086 $cat <<EOM
7087  
7088 Some installations have a separate directory just for executable scripts so
7089 that they can mount it across multiple architectures but keep the scripts in
7090 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7091 Or you might just lump your scripts in with all your other executables.
7092  
7093 EOM
7094 fn=d~
7095 rp='Where do you keep publicly executable scripts?'
7096 . ./getfile
7097 if $test "X$ansexp" != "X$scriptdirexp"; then
7098         installscript=''
7099 fi
7100 scriptdir="$ans"
7101 scriptdirexp="$ansexp"
7102 : Change installation prefix, if necessary.
7103 if $test X"$prefix" != X"$installprefix"; then
7104         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7105 else
7106         installscript="$scriptdirexp"
7107 fi
7108
7109 : determine where site specific architecture-dependent libraries go.
7110 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
7111 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
7112 : sitelib may have an optional trailing /share.
7113 case "$sitearch" in
7114 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
7115         dflt="$dflt/$archname"
7116         ;;
7117 *)      dflt="$sitearch"
7118         ;;
7119 esac
7120 set sitearch sitearch none
7121 eval $prefixit
7122 $cat <<EOM
7123
7124 The installation process will also create a directory for
7125 architecture-dependent site-specific extensions and modules.
7126
7127 EOM
7128 fn=d~+
7129 rp='Pathname for the site-specific architecture-dependent library files?'
7130 . ./getfile
7131 sitearch="$ans"
7132 sitearchexp="$ansexp"
7133 : Change installation prefix, if necessary.
7134 if $test X"$prefix" != X"$installprefix"; then
7135         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
7136 else
7137         installsitearch="$sitearchexp"
7138 fi
7139
7140 : determine where add-on public executables go
7141 case "$sitebin" in
7142 '')     dflt=$siteprefix/bin ;;
7143 *)      dflt=$sitebin ;;
7144 esac
7145 fn=d~
7146 rp='Pathname where the add-on public executables should be installed?'
7147 . ./getfile
7148 sitebin="$ans"
7149 sitebinexp="$ansexp"
7150 : Change installation prefix, if necessary.
7151 if $test X"$prefix" != X"$installprefix"; then
7152         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7153 else
7154         installsitebin="$sitebinexp"
7155 fi
7156
7157 : see if sqrtl exists
7158 set sqrtl d_sqrtl
7159 eval $inlibc
7160
7161 case "$ccflags" in
7162 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7163 esac
7164
7165 case "$uselongdouble" in
7166 $define|true|[yY]*)     dflt='y';;
7167 *) dflt='n';;
7168 esac
7169 cat <<EOM
7170
7171 Perl can be built to take advantage of long doubles which
7172 (if available) may give more accuracy and range for floating point numbers.
7173
7174 If this doesn't make any sense to you, just accept the default '$dflt'.
7175 EOM
7176 rp='Try to use long doubles if available?'
7177 . ./myread
7178 case "$ans" in
7179 y|Y)    val="$define"   ;;
7180 *)      val="$undef"    ;;
7181 esac
7182 set uselongdouble
7183 eval $setvar
7184
7185 case "$uselongdouble" in
7186 true|[yY]*) uselongdouble="$define" ;;
7187 esac
7188
7189 case "$uselongdouble" in
7190 $define)
7191 : Look for a hint-file generated 'call-back-unit'.  If the
7192 : user has specified that long doubles should be used,
7193 : we may need to set or change some other defaults.
7194         if $test -f uselongdouble.cbu; then
7195                 echo "Your platform has some specific hints for long doubles, using them..."
7196                 . ./uselongdouble.cbu
7197         else
7198                 $cat <<EOM
7199 (Your platform doesn't have any specific hints for long doubles.)
7200 EOM
7201         fi
7202         ;;
7203 esac
7204
7205 case "$uselongdouble:$d_sqrtl" in
7206 $define:$undef)
7207                 $cat <<EOM >&4
7208
7209 You requested the use of long doubles but you do not seem to have
7210 the mathematic functions for long doubles.  I'm disabling the use
7211 of long doubles.
7212 EOM
7213         uselongdouble=$undef
7214         ;;
7215 esac
7216
7217 case "$useperlio" in
7218 $define|true|[yY]*)     dflt='y';;
7219 *) dflt='n';;
7220 esac
7221 cat <<EOM
7222
7223 Previous version of $package used the standard IO mechanisms as defined
7224 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7225 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7226 the default.  This abstraction layer can use AT&T's sfio (if you already
7227 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7228 problems with some extension modules.  Using PerlIO with stdio is safe,
7229 but it is slower than plain stdio and therefore is not the default.
7230
7231 If this doesn't make any sense to you, just accept the default '$dflt'.
7232 EOM
7233 rp='Use the experimental PerlIO abstraction layer?'
7234 . ./myread
7235 case "$ans" in
7236 y|Y) 
7237         val="$define"
7238         ;;     
7239 *)      
7240         echo "Ok, doing things the stdio way"
7241         val="$undef"
7242         ;;
7243 esac
7244 set useperlio
7245 eval $setvar 
7246
7247 case "$vendorprefix" in
7248 '')     d_vendorbin="$undef"
7249         vendorbin=''
7250         vendorbinexp=''
7251         ;;
7252 *)      d_vendorbin="$define"
7253         : determine where vendor-supplied executables go.
7254         case "$vendorbin" in
7255         '') dflt=$vendorprefix/bin ;;
7256         *)      dflt="$vendorbin" ;;
7257         esac
7258         fn=d~+
7259         rp='Pathname for the vendor-supplied executables directory?'
7260         . ./getfile
7261         vendorbin="$ans"
7262         vendorbinexp="$ansexp"
7263         ;;
7264 esac
7265 : Change installation prefix, if necessary.
7266 if $test X"$prefix" != X"$installprefix"; then
7267         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7268 else
7269         installvendorbin="$vendorbinexp"
7270 fi
7271
7272 : check for length of double
7273 echo " "
7274 case "$doublesize" in
7275 '')
7276         echo "Checking to see how big your double precision numbers are..." >&4
7277         $cat >try.c <<'EOCP'
7278 #include <stdio.h>
7279 int main()
7280 {
7281     printf("%d\n", (int)sizeof(double));
7282     exit(0);
7283 }
7284 EOCP
7285         set try
7286         if eval $compile_ok; then
7287                 doublesize=`./try`
7288                 echo "Your double is $doublesize bytes long."
7289         else
7290                 dflt='8'
7291                 echo "(I can't seem to compile the test program.  Guessing...)"
7292                 rp="What is the size of a double precision number (in bytes)?"
7293                 . ./myread
7294                 doublesize="$ans"
7295         fi
7296         ;;
7297 esac
7298 $rm -f try.c try
7299
7300 : check for long doubles
7301 echo " "
7302 echo "Checking to see if you have long double..." >&4
7303 echo 'int main() { long double x = 7.0; }' > try.c
7304 set try
7305 if eval $compile; then
7306         val="$define"
7307         echo "You have long double."
7308 else
7309         val="$undef"
7310         echo "You do not have long double."
7311 fi
7312 $rm try.*
7313 set d_longdbl
7314 eval $setvar
7315
7316 : check for length of long double
7317 case "${d_longdbl}${longdblsize}" in
7318 $define)
7319         echo " "
7320         echo "Checking to see how big your long doubles are..." >&4
7321         $cat >try.c <<'EOCP'
7322 #include <stdio.h>
7323 int main()
7324 {
7325         printf("%d\n", sizeof(long double));
7326 }
7327 EOCP
7328         set try
7329         set try
7330         if eval $compile; then
7331                 longdblsize=`./try$exe_ext`
7332                 echo "Your long doubles are $longdblsize bytes long."
7333         else
7334                 dflt='8'
7335                 echo " "
7336                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7337                 rp="What is the size of a long double (in bytes)?"
7338                 . ./myread
7339                 longdblsize="$ans"
7340         fi
7341         if $test "X$doublesize" = "X$longdblsize"; then
7342                 echo "(That isn't any different from an ordinary double.)"
7343         fi      
7344         ;;
7345 esac
7346 $rm -f try.* try
7347
7348 : Check how to convert floats to strings.
7349 if test "X$d_Gconvert" = X; then
7350         echo " "
7351         echo "Checking for an efficient way to convert floats to strings."
7352         $cat >try.c <<EOP
7353 #ifdef TRY_gconvert
7354 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7355 char *myname = "gconvert";
7356 #endif
7357 #ifdef TRY_gcvt
7358 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7359 char *myname = "gcvt";
7360 #endif
7361 #ifdef TRY_qgcvt
7362 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7363 char *myname = "qgcvt";
7364 #define DOUBLETYPE long double
7365 #endif
7366 #ifdef TRY_sprintf
7367 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7368 char *myname = "sprintf";
7369 #endif
7370
7371 #ifndef DOUBLETYPE
7372 #define DOUBLETYPE double
7373 #endif
7374
7375 #include <stdio.h>
7376
7377 #define I_STDLIB $i_stdlib
7378 #ifdef I_STDLIB
7379 #include <stdlib.h>
7380 #endif
7381
7382 int
7383 checkit(expect, got)
7384 char *expect;
7385 char *got;
7386 {
7387     if (strcmp(expect, got)) {
7388                 printf("%s oddity:  Expected %s, got %s\n",
7389                         myname, expect, got);
7390                 exit(1);
7391         }
7392 }
7393
7394 int main()
7395
7396         char buf[64]; 
7397         buf[63] = '\0';
7398
7399         /* This must be 1st test on (which?) platform */
7400         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7401         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7402         checkit("0.1", buf);
7403
7404         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7405         checkit("1", buf);
7406
7407         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7408         checkit("0", buf);
7409
7410         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7411         checkit("-1", buf);
7412
7413         /* Some Linux gcvt's give 1.e+5 here. */
7414         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7415         checkit("100000", buf);
7416         
7417         /* Some Linux gcvt's give -1.e+5 here. */
7418         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7419         checkit("-100000", buf);
7420
7421         exit(0);
7422 }
7423 EOP
7424         case "$d_Gconvert" in
7425         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7426         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7427         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7428         *) xxx_list='gconvert gcvt sprintf' ;;
7429         esac
7430
7431         case "$d_longdbl$uselongdouble" in
7432         definedefine) xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7433         esac
7434
7435         for xxx_convert in $xxx_list; do
7436                 echo "Trying $xxx_convert..."
7437                 $rm -f try try$_o
7438                 set try -DTRY_$xxx_convert
7439                 if eval $compile; then
7440                         echo "$xxx_convert() found." >&4
7441                         if ./try; then
7442                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
7443                                 break;
7444                         else
7445                                 echo "...But $xxx_convert didn't work as I expected."
7446                         fi
7447                 else
7448                         echo "$xxx_convert NOT found." >&4
7449                 fi
7450         done
7451                 
7452         case "$xxx_convert" in
7453         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7454         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7455         qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7456         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7457         esac
7458 fi
7459
7460 echo " "
7461
7462 if $test X"$d_longdbl" = X"$define"; then
7463
7464 echo "Checking how to print long doubles..." >&4
7465
7466 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7467         $cat >try.c <<'EOCP'
7468 #include <sys/types.h>
7469 #include <stdio.h>
7470 int main() {
7471   double d = 123.456;
7472   printf("%.3f\n", d);
7473 }
7474 EOCP
7475         set try
7476         if eval $compile; then
7477                 yyy=`./try$exe_ext`
7478                 case "$yyy" in
7479                 123.456)
7480                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7481                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7482                         echo "We will use %f."
7483                         ;;
7484                 esac
7485         fi
7486 fi
7487
7488 if $test X"$sPRIfldbl" = X; then
7489         $cat >try.c <<'EOCP'
7490 #include <sys/types.h>
7491 #include <stdio.h>
7492 int main() {
7493   long double d = 123.456;
7494   printf("%.3llf\n", d);
7495 }
7496 EOCP
7497         set try
7498         if eval $compile; then
7499                 yyy=`./try$exe_ext`
7500                 case "$yyy" in
7501                 123.456)
7502                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7503                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7504                         echo "We will use %llf."
7505                         ;;
7506                 esac
7507         fi
7508 fi
7509
7510 if $test X"$sPRIfldbl" = X; then
7511         $cat >try.c <<'EOCP'
7512 #include <sys/types.h>
7513 #include <stdio.h>
7514 int main() {
7515   long double d = 123.456;
7516   printf("%.3Lf\n", d);
7517 }
7518 EOCP
7519         set try
7520         if eval $compile; then
7521                 yyy=`./try$exe_ext`
7522                 case "$yyy" in
7523                 123.456)
7524                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7525                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7526                         echo "We will use %Lf."
7527                         ;;
7528                 esac
7529         fi
7530 fi
7531
7532 if $test X"$sPRIfldbl" = X; then
7533         $cat >try.c <<'EOCP'
7534 #include <sys/types.h>
7535 #include <stdio.h>
7536 int main() {
7537   long double d = 123.456;
7538   printf("%.3lf\n", d);
7539 }
7540 EOCP
7541         set try
7542         if eval $compile; then
7543                 yyy=`./try$exe_ext`
7544                 case "$yyy" in
7545                 123.456)
7546                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7547                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7548                         echo "We will use %lf."
7549                         ;;
7550                 esac
7551         fi
7552 fi
7553
7554 if $test X"$sPRIfldbl" = X; then
7555         echo "Cannot figure out how to print long doubles." >&4
7556 fi
7557
7558 $rm -f try try.*
7559
7560 fi # d_longdbl
7561
7562 case "$sPRIfldbl" in
7563 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7564         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7565         ;;
7566 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7567         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7568         ;;
7569 esac
7570
7571 : Initialize h_fcntl
7572 h_fcntl=false
7573
7574 : Initialize h_sysfile
7575 h_sysfile=false
7576
7577 : access call always available on UNIX
7578 set access d_access
7579 eval $inlibc
7580
7581 : locate the flags for 'access()'
7582 case "$d_access" in
7583 "$define")
7584         echo " "
7585         $cat >access.c <<'EOCP'
7586 #include <sys/types.h>
7587 #ifdef I_FCNTL
7588 #include <fcntl.h>
7589 #endif
7590 #ifdef I_SYS_FILE
7591 #include <sys/file.h>
7592 #endif
7593 #ifdef I_UNISTD
7594 #include <unistd.h>
7595 #endif
7596 int main() {
7597         exit(R_OK);
7598 }
7599 EOCP
7600         : check sys/file.h first, no particular reason here
7601         if $test `./findhdr sys/file.h` && \
7602                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7603                 h_sysfile=true;
7604                 echo "<sys/file.h> defines the *_OK access constants." >&4
7605         elif $test `./findhdr fcntl.h` && \
7606                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7607                 h_fcntl=true;
7608                 echo "<fcntl.h> defines the *_OK access constants." >&4
7609         elif $test `./findhdr unistd.h` && \
7610                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7611                 echo "<unistd.h> defines the *_OK access constants." >&4
7612         else
7613                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7614         fi
7615         ;;
7616 esac
7617 $rm -f access*
7618
7619 : see if accessx exists
7620 set accessx d_accessx
7621 eval $inlibc
7622
7623 : see if alarm exists
7624 set alarm d_alarm
7625 eval $inlibc
7626
7627 : see if atolf exists
7628 set atolf d_atolf
7629 eval $inlibc
7630
7631 : see if atoll exists
7632 set atoll d_atoll
7633 eval $inlibc
7634
7635 : Look for GNU-cc style attribute checking
7636 echo " "
7637 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7638 $cat >attrib.c <<'EOCP'
7639 #include <stdio.h>
7640 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7641 EOCP
7642 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7643         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7644                 echo "Your C compiler doesn't fully support __attribute__."
7645                 val="$undef"
7646         else
7647                 echo "Your C compiler supports __attribute__."
7648                 val="$define"
7649         fi
7650 else
7651         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7652         val="$undef"
7653 fi
7654 set d_attribut
7655 eval $setvar
7656 $rm -f attrib*
7657
7658 : see if bcmp exists
7659 set bcmp d_bcmp
7660 eval $inlibc
7661
7662 : see if bcopy exists
7663 set bcopy d_bcopy
7664 eval $inlibc
7665
7666 : see if this is a unistd.h system
7667 set unistd.h i_unistd
7668 eval $inhdr
7669
7670 : see if getpgrp exists
7671 set getpgrp d_getpgrp
7672 eval $inlibc
7673
7674 case "$d_getpgrp" in
7675 "$define")
7676         echo " "
7677         echo "Checking to see which flavor of getpgrp is in use..."
7678         $cat >set.c <<EOP
7679 #$i_unistd I_UNISTD
7680 #include <sys/types.h>
7681 #ifdef I_UNISTD
7682 #  include <unistd.h>
7683 #endif
7684 int main()
7685 {
7686         if (getuid() == 0) {
7687                 printf("(I see you are running Configure as super-user...)\n");
7688                 setuid(1);
7689         }
7690 #ifdef TRY_BSD_PGRP
7691         if (getpgrp(1) == 0)
7692                 exit(0);
7693 #else
7694         if (getpgrp() > 0)
7695                 exit(0);
7696 #endif
7697         exit(1);
7698 }
7699 EOP
7700         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7701                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7702                 val="$define"
7703         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7704                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7705                 val="$undef"
7706         else
7707                 echo "I can't seem to compile and run the test program."
7708                 if ./usg; then
7709                         xxx="a USG one, i.e. you use getpgrp()."
7710                 else
7711                         # SVR4 systems can appear rather BSD-ish.
7712                         case "$i_unistd" in
7713                         $undef)
7714                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7715                                 val="$define"
7716                                 ;;
7717                         $define)
7718                                 xxx="probably a USG one, i.e. you use getpgrp()."
7719                                 val="$undef"
7720                                 ;;
7721                         esac
7722                 fi
7723                 echo "Assuming your getpgrp is $xxx" >&4
7724         fi
7725         ;;
7726 *) val="$undef";;
7727 esac
7728 set d_bsdgetpgrp
7729 eval $setvar
7730 $rm -f set set.c
7731
7732 : see if setpgrp exists
7733 set setpgrp d_setpgrp
7734 eval $inlibc
7735
7736 case "$d_setpgrp" in
7737 "$define")
7738         echo " "
7739         echo "Checking to see which flavor of setpgrp is in use..."
7740         $cat >set.c <<EOP
7741 #$i_unistd I_UNISTD
7742 #include <sys/types.h>
7743 #ifdef I_UNISTD
7744 #  include <unistd.h>
7745 #endif
7746 int main()
7747 {
7748         if (getuid() == 0) {
7749                 printf("(I see you are running Configure as super-user...)\n");
7750                 setuid(1);
7751         }
7752 #ifdef TRY_BSD_PGRP
7753         if (-1 == setpgrp(1, 1))
7754                 exit(0);
7755 #else
7756         if (setpgrp() != -1)
7757                 exit(0);
7758 #endif
7759         exit(1);
7760 }
7761 EOP
7762         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7763                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7764                 val="$define"
7765         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7766                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7767                 val="$undef"
7768         else
7769                 echo "(I can't seem to compile and run the test program.)"
7770                 if ./usg; then
7771                         xxx="a USG one, i.e. you use setpgrp()."
7772                 else
7773                         # SVR4 systems can appear rather BSD-ish.
7774                         case "$i_unistd" in
7775                         $undef)
7776                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7777                                 val="$define"
7778                                 ;;
7779                         $define)
7780                                 xxx="probably a USG one, i.e. you use setpgrp()."
7781                                 val="$undef"
7782                                 ;;
7783                         esac
7784                 fi
7785                 echo "Assuming your setpgrp is $xxx" >&4
7786         fi
7787         ;;
7788 *) val="$undef";;
7789 esac
7790 set d_bsdsetpgrp
7791 eval $setvar
7792 $rm -f set set.c
7793 : see if bzero exists
7794 set bzero d_bzero
7795 eval $inlibc
7796
7797 : see if signal is declared as pointer to function returning int or void
7798 echo " "
7799 xxx=`./findhdr signal.h`
7800 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7801 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7802         echo "You have int (*signal())() instead of void." >&4
7803         val="$undef"
7804 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
7805         echo "You have void (*signal())()." >&4
7806         val="$define"
7807 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7808         echo "You have int (*signal())() instead of void." >&4
7809         val="$undef"
7810 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7811         echo "You have void (*signal())()." >&4
7812         val="$define"
7813 else
7814         case "$d_voidsig" in
7815         '')
7816         echo "I can't determine whether signal handler returns void or int..." >&4
7817                 dflt=void
7818                 rp="What type does your signal handler return?"
7819                 . ./myread
7820                 case "$ans" in
7821                 v*) val="$define";;
7822                 *) val="$undef";;
7823                 esac;;
7824         "$define")
7825                 echo "As you already told me, signal handler returns void." >&4
7826                 val="$define"
7827                 ;;
7828         *)      echo "As you already told me, signal handler returns int." >&4
7829                 val="$undef"
7830                 ;;
7831         esac
7832 fi
7833 set d_voidsig
7834 eval $setvar
7835 case "$d_voidsig" in
7836 "$define") signal_t="void";;
7837 *) signal_t="int";;
7838 esac
7839 $rm -f $$.tmp
7840
7841 : check for ability to cast large floats to 32-bit ints.
7842 echo " "
7843 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7844 if $test "$intsize" -ge 4; then
7845         xxx=int
7846 else
7847         xxx=long
7848 fi
7849 $cat >try.c <<EOCP
7850 #include <stdio.h>
7851 #include <sys/types.h>
7852 #include <signal.h>
7853 $signal_t blech(s) int s; { exit(3); }
7854 int main()
7855 {
7856         $xxx i32;
7857         double f, g;
7858         int result = 0;
7859         char str[16];
7860         signal(SIGFPE, blech);
7861
7862         /* Don't let compiler optimize the test away.  Store the number 
7863            in a writable string for gcc to pass to sscanf under HP/UX.
7864         */
7865         sprintf(str, "2147483647");
7866         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7867         g = 10 * f;
7868         i32  = ($xxx) g;
7869
7870         /* x86 processors will probably give 0x8000 0000, which is a
7871        sign change.  We don't want that.  We want to mimic SPARC
7872            behavior here, which is to preserve the sign and give
7873            back 0x7fff ffff.
7874         */
7875         if (i32 != ($xxx) f)
7876                 result |= 1;
7877         exit(result);
7878 }
7879 EOCP
7880 set try
7881 if eval $compile_ok; then
7882         ./try
7883         yyy=$?
7884 else
7885         echo "(I can't seem to compile the test program--assuming it can't)"
7886         yyy=1
7887 fi
7888 case "$yyy" in
7889 0)      val="$define"
7890         echo "Yup, it can."
7891         ;;
7892 *)      val="$undef"
7893         echo "Nope, it can't."
7894         ;;
7895 esac
7896 set d_casti32
7897 eval $setvar
7898 $rm -f try try.*
7899
7900 : check for ability to cast negative floats to unsigned
7901 echo " "
7902 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7903 $cat >try.c <<EOCP
7904 #include <stdio.h>
7905 #include <sys/types.h>
7906 #include <signal.h>
7907 $signal_t blech(s) int s; { exit(7); }
7908 $signal_t blech_in_list(s) int s; { exit(4); }
7909 unsigned long dummy_long(p) unsigned long p; { return p; }
7910 unsigned int dummy_int(p) unsigned int p; { return p; }
7911 unsigned short dummy_short(p) unsigned short p; { return p; }
7912 int main()
7913 {
7914         double f;
7915         unsigned long along;
7916         unsigned int aint;
7917         unsigned short ashort;
7918         int result = 0;
7919         char str[16];
7920         
7921         /* Frustrate gcc-2.7.2's optimizer which failed this test with
7922            a direct f = -123. assignment.  gcc-2.8.0 reportedly
7923            optimized the whole file away
7924         */
7925         /* Store the number in a writable string for gcc to pass to 
7926            sscanf under HP/UX.
7927         */
7928         sprintf(str, "-123");
7929         sscanf(str, "%lf", &f);  /* f = -123.; */
7930
7931         signal(SIGFPE, blech);
7932         along = (unsigned long)f;
7933         aint = (unsigned int)f;
7934         ashort = (unsigned short)f;
7935         if (along != (unsigned long)-123)
7936                 result |= 1;
7937         if (aint != (unsigned int)-123)
7938                 result |= 1;
7939         if (ashort != (unsigned short)-123)
7940                 result |= 1;
7941         sprintf(str, "1073741824.");
7942         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
7943         f = f + f;
7944         along = 0;
7945         along = (unsigned long)f;
7946         if (along != 0x80000000)
7947                 result |= 2;
7948         f -= 1.;
7949         along = 0;
7950         along = (unsigned long)f;
7951         if (along != 0x7fffffff)
7952                 result |= 1;
7953         f += 2.;
7954         along = 0;
7955         along = (unsigned long)f;
7956         if (along != 0x80000001)
7957                 result |= 2;
7958         if (result)
7959                 exit(result);
7960         signal(SIGFPE, blech_in_list);
7961         sprintf(str, "123.");
7962         sscanf(str, "%lf", &f);  /* f = 123.; */
7963         along = dummy_long((unsigned long)f);
7964         aint = dummy_int((unsigned int)f);
7965         ashort = dummy_short((unsigned short)f);
7966         if (along != (unsigned long)123)
7967                 result |= 4;
7968         if (aint != (unsigned int)123)
7969                 result |= 4;
7970         if (ashort != (unsigned short)123)
7971                 result |= 4;
7972         exit(result);
7973
7974 }
7975 EOCP
7976 set try
7977 if eval $compile_ok; then
7978         ./try
7979         castflags=$?
7980 else
7981         echo "(I can't seem to compile the test program--assuming it can't)"
7982         castflags=7
7983 fi
7984 case "$castflags" in
7985 0)      val="$define"
7986         echo "Yup, it can."
7987         ;;
7988 *)      val="$undef"
7989         echo "Nope, it can't."
7990         ;;
7991 esac
7992 set d_castneg
7993 eval $setvar
7994 $rm -f try.*
7995
7996 : see if vprintf exists
7997 echo " "
7998 if set vprintf val -f d_vprintf; eval $csym; $val; then
7999         echo 'vprintf() found.' >&4
8000         val="$define"
8001         $cat >vprintf.c <<'EOF'
8002 #include <varargs.h>
8003
8004 int main() { xxx("foo"); }
8005
8006 xxx(va_alist)
8007 va_dcl
8008 {
8009         va_list args;
8010         char buf[10];
8011
8012         va_start(args);
8013         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8014 }
8015 EOF
8016         set vprintf
8017         if eval $compile && ./vprintf; then
8018                 echo "Your vsprintf() returns (int)." >&4
8019                 val2="$undef"
8020         else
8021                 echo "Your vsprintf() returns (char*)." >&4
8022                 val2="$define"
8023         fi
8024 else
8025         echo 'vprintf() NOT found.' >&4
8026                 val="$undef"
8027                 val2="$undef"
8028 fi
8029 set d_vprintf
8030 eval $setvar
8031 val=$val2
8032 set d_charvspr
8033 eval $setvar
8034
8035 : see if chown exists
8036 set chown d_chown
8037 eval $inlibc
8038
8039 : see if chroot exists
8040 set chroot d_chroot
8041 eval $inlibc
8042
8043 : see if chsize exists
8044 set chsize d_chsize
8045 eval $inlibc
8046
8047 : check for const keyword
8048 echo " "
8049 echo 'Checking to see if your C compiler knows about "const"...' >&4
8050 $cat >const.c <<'EOCP'
8051 typedef struct spug { int drokk; } spug;
8052 int main()
8053 {
8054         const char *foo;
8055         const spug y;
8056 }
8057 EOCP
8058 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8059         val="$define"
8060         echo "Yup, it does."
8061 else
8062         val="$undef"
8063         echo "Nope, it doesn't."
8064 fi
8065 set d_const
8066 eval $setvar
8067
8068 : see if crypt exists
8069 echo " "
8070 if set crypt val -f d_crypt; eval $csym; $val; then
8071         echo 'crypt() found.' >&4
8072         val="$define"
8073         cryptlib=''
8074 else
8075         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8076         if $test -z "$cryptlib"; then
8077                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8078         else
8079                 cryptlib=-lcrypt
8080         fi
8081         if $test -z "$cryptlib"; then
8082                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8083         else
8084                 cryptlib=-lcrypt
8085         fi
8086         if $test -z "$cryptlib"; then
8087                 cryptlib=`./loc libcrypt$_a "" $libpth`
8088         else
8089                 cryptlib=-lcrypt
8090         fi
8091         if $test -z "$cryptlib"; then
8092                 echo 'crypt() NOT found.' >&4
8093                 val="$undef"
8094         else
8095                 val="$define"
8096         fi
8097 fi
8098 set d_crypt
8099 eval $setvar
8100
8101 : get csh whereabouts
8102 case "$csh" in
8103 'csh') val="$undef" ;;
8104 *) val="$define" ;;
8105 esac
8106 set d_csh
8107 eval $setvar
8108 : Respect a hint or command line value for full_csh.
8109 case "$full_csh" in
8110 '') full_csh=$csh ;;
8111 esac
8112
8113 : see if cuserid exists
8114 set cuserid d_cuserid
8115 eval $inlibc
8116
8117 : see if this is a limits.h system
8118 set limits.h i_limits
8119 eval $inhdr
8120
8121 : see if this is a float.h system
8122 set float.h i_float
8123 eval $inhdr
8124
8125 : See if number of significant digits in a double precision number is known
8126 echo " "
8127 $cat >dbl_dig.c <<EOM
8128 #$i_limits I_LIMITS
8129 #$i_float I_FLOAT
8130 #ifdef I_LIMITS
8131 #include <limits.h>
8132 #endif
8133 #ifdef I_FLOAT
8134 #include <float.h>
8135 #endif
8136 #ifdef DBL_DIG
8137 printf("Contains DBL_DIG");
8138 #endif
8139 EOM
8140 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8141 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8142         echo "DBL_DIG found." >&4
8143         val="$define"
8144 else
8145         echo "DBL_DIG NOT found." >&4
8146         val="$undef"
8147 fi
8148 $rm -f dbl_dig.?
8149 set d_dbl_dig
8150 eval $setvar
8151
8152 : see if difftime exists
8153 set difftime d_difftime
8154 eval $inlibc
8155
8156 : see if this is a dirent system
8157 echo " "
8158 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8159         val="$define"
8160         echo "<dirent.h> found." >&4
8161 else
8162         val="$undef"
8163         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8164                 echo "<sys/dir.h> found." >&4
8165                 echo " "
8166         else
8167                 xinc=`./findhdr sys/ndir.h`
8168         fi
8169         echo "<dirent.h> NOT found." >&4
8170 fi
8171 set i_dirent
8172 eval $setvar
8173
8174 : Look for type of directory structure.
8175 echo " "
8176 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8177
8178 case "$direntrytype" in
8179 ''|' ')
8180         case "$i_dirent" in
8181         $define) guess1='struct dirent' ;;
8182         *) guess1='struct direct'  ;;
8183         esac
8184         ;;
8185 *)      guess1="$direntrytype"
8186         ;;
8187 esac
8188
8189 case "$guess1" in
8190 'struct dirent') guess2='struct direct' ;;
8191 *) guess2='struct dirent' ;;
8192 esac
8193                 
8194 if $contains "$guess1" try.c >/dev/null 2>&1; then
8195         direntrytype="$guess1"
8196         echo "Your directory entries are $direntrytype." >&4
8197 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8198         direntrytype="$guess2"
8199         echo "Your directory entries seem to be $direntrytype." >&4
8200 else
8201         echo "I don't recognize your system's directory entries." >&4
8202         rp="What type is used for directory entries on this system?"
8203         dflt="$guess1"
8204         . ./myread
8205         direntrytype="$ans"
8206 fi
8207 $rm -f try.c
8208
8209
8210 : see if the directory entry stores field length
8211 echo " "
8212 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8213 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8214         echo "Good, your directory entry keeps length information in d_namlen." >&4
8215         val="$define"
8216 else
8217         echo "Your directory entry does not know about the d_namlen field." >&4
8218         val="$undef"
8219 fi
8220 set d_dirnamlen
8221 eval $setvar
8222 $rm -f try.c
8223
8224 : see if dlerror exists
8225 xxx_runnm="$runnm"
8226 runnm=false
8227 set dlerror d_dlerror
8228 eval $inlibc
8229 runnm="$xxx_runnm"
8230
8231 : see if dlfcn is available
8232 set dlfcn.h i_dlfcn
8233 eval $inhdr
8234
8235 case "$usedl" in
8236 $define|y|true)
8237         $cat << EOM
8238
8239 On a few systems, the dynamically loaded modules that perl generates and uses
8240 will need a different extension than shared libs. The default will probably
8241 be appropriate.
8242
8243 EOM
8244         case "$dlext" in
8245         '')     dflt="$so" ;;
8246         *)      dflt="$dlext" ;;
8247         esac
8248         rp='What is the extension of dynamically loaded modules'
8249         . ./myread
8250         dlext="$ans"
8251         ;;
8252 *)
8253         dlext="none"
8254         ;;
8255 esac
8256
8257 : Check if dlsym need a leading underscore
8258 echo " "
8259 val="$undef"
8260
8261 case "$dlsrc" in
8262 dl_dlopen.xs)
8263         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8264         $cat >dyna.c <<'EOM'
8265 fred () { }
8266 EOM
8267
8268 $cat >fred.c<<EOM
8269
8270 #include <stdio.h>
8271 #$i_dlfcn I_DLFCN
8272 #ifdef I_DLFCN
8273 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8274 #else
8275 #include <sys/types.h>
8276 #include <nlist.h>
8277 #include <link.h>
8278 #endif
8279
8280 extern int fred() ;
8281
8282 int main()
8283 {
8284     void * handle ;
8285     void * symbol ;
8286 #ifndef RTLD_LAZY
8287     int mode = 1 ;
8288 #else
8289     int mode = RTLD_LAZY ;
8290 #endif
8291     handle = dlopen("./dyna.$dlext", mode) ;
8292     if (handle == NULL) {
8293         printf ("1\n") ;
8294         fflush (stdout) ;
8295         exit(0);
8296     }
8297     symbol = dlsym(handle, "fred") ;
8298     if (symbol == NULL) {
8299         /* try putting a leading underscore */
8300         symbol = dlsym(handle, "_fred") ;
8301         if (symbol == NULL) {
8302             printf ("2\n") ;
8303             fflush (stdout) ;
8304             exit(0);
8305         }
8306         printf ("3\n") ;
8307     }
8308     else
8309         printf ("4\n") ;
8310     fflush (stdout) ;
8311     exit(0);
8312 }
8313 EOM
8314         : Call the object file tmp-dyna.o in case dlext=o.
8315         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8316                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8317                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8318                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8319                 xxx=`./fred`
8320                 case $xxx in
8321                 1)      echo "Test program failed using dlopen." >&4
8322                         echo "Perhaps you should not use dynamic loading." >&4;;
8323                 2)      echo "Test program failed using dlsym." >&4
8324                         echo "Perhaps you should not use dynamic loading." >&4;;
8325                 3)      echo "dlsym needs a leading underscore" >&4
8326                         val="$define" ;;
8327                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8328                 esac
8329         else
8330                 echo "I can't compile and run the test program." >&4
8331                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8332         fi
8333         ;;
8334 esac
8335                 
8336 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8337
8338 set d_dlsymun
8339 eval $setvar
8340
8341 hasproto='varname=$1; func=$2; shift; shift;
8342 while $test $# -ge 2; do
8343         case "$1" in
8344         $define) echo "#include <$2>";;
8345         esac ;
8346     shift 2;
8347 done > try.c;
8348 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8349 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8350         echo "$func() prototype found.";
8351         val="$define";
8352 else
8353         echo "$func() prototype NOT found.";
8354         val="$undef";
8355 fi;
8356 set $varname;
8357 eval $setvar;
8358 $rm -f try.c tryout.c'
8359
8360 : see if prototype for drand48 is available
8361 echo " "
8362 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8363 eval $hasproto
8364
8365 : see if dup2 exists
8366 set dup2 d_dup2
8367 eval $inlibc
8368
8369 : see if eaccess exists
8370 set eaccess d_eaccess
8371 eval $inlibc
8372
8373 : see if endgrent exists
8374 set endgrent d_endgrent
8375 eval $inlibc
8376
8377 : see if endhostent exists
8378 set endhostent d_endhent
8379 eval $inlibc
8380
8381 : see if endnetent exists
8382 set endnetent d_endnent
8383 eval $inlibc
8384
8385 : see if endprotoent exists
8386 set endprotoent d_endpent
8387 eval $inlibc
8388
8389 : see if endpwent exists
8390 set endpwent d_endpwent
8391 eval $inlibc
8392
8393 : see if endservent exists
8394 set endservent d_endsent
8395 eval $inlibc
8396
8397 : see if endspent exists
8398 set endspent d_endspent
8399 eval $inlibc
8400
8401 : Locate the flags for 'open()'
8402 echo " "
8403 $cat >open3.c <<'EOCP'
8404 #include <sys/types.h>
8405 #ifdef I_FCNTL
8406 #include <fcntl.h>
8407 #endif
8408 #ifdef I_SYS_FILE
8409 #include <sys/file.h>
8410 #endif
8411 int main() {
8412         if(O_RDONLY);
8413 #ifdef O_TRUNC
8414         exit(0);
8415 #else
8416         exit(1);
8417 #endif
8418 }
8419 EOCP
8420 : check sys/file.h first to get FREAD on Sun
8421 if $test `./findhdr sys/file.h` && \
8422                 set open3 -DI_SYS_FILE && eval $compile; then
8423         h_sysfile=true;
8424         echo "<sys/file.h> defines the O_* constants..." >&4
8425         if ./open3; then
8426                 echo "and you have the 3 argument form of open()." >&4
8427                 val="$define"
8428         else
8429                 echo "but not the 3 argument form of open().  Oh, well." >&4
8430                 val="$undef"
8431         fi
8432 elif $test `./findhdr fcntl.h` && \
8433                 set open3 -DI_FCNTL && eval $compile; then
8434         h_fcntl=true;
8435         echo "<fcntl.h> defines the O_* constants..." >&4
8436         if ./open3; then
8437                 echo "and you have the 3 argument form of open()." >&4
8438                 val="$define"
8439         else
8440                 echo "but not the 3 argument form of open().  Oh, well." >&4
8441                 val="$undef"
8442         fi
8443 else
8444         val="$undef"
8445         echo "I can't find the O_* constant definitions!  You got problems." >&4
8446 fi
8447 set d_open3
8448 eval $setvar
8449 $rm -f open3*
8450
8451 : see which of string.h or strings.h is needed
8452 echo " "
8453 strings=`./findhdr string.h`
8454 if $test "$strings" && $test -r "$strings"; then
8455         echo "Using <string.h> instead of <strings.h>." >&4
8456         val="$define"
8457 else
8458         val="$undef"
8459         strings=`./findhdr strings.h`
8460         if $test "$strings" && $test -r "$strings"; then
8461                 echo "Using <strings.h> instead of <string.h>." >&4
8462         else
8463                 echo "No string header found -- You'll surely have problems." >&4
8464         fi
8465 fi
8466 set i_string
8467 eval $setvar
8468 case "$i_string" in
8469 "$undef") strings=`./findhdr strings.h`;;
8470 *)        strings=`./findhdr string.h`;;
8471 esac
8472
8473 : check for non-blocking I/O stuff
8474 case "$h_sysfile" in
8475 true) echo "#include <sys/file.h>" > head.c;;
8476 *)
8477         case "$h_fcntl" in
8478         true) echo "#include <fcntl.h>" > head.c;;
8479         *) echo "#include <sys/fcntl.h>" > head.c;;
8480         esac
8481         ;;
8482 esac
8483 echo " "
8484 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8485 case "$o_nonblock" in
8486 '')
8487         $cat head.c > try.c
8488         $cat >>try.c <<'EOCP'
8489 #include <stdio.h>
8490 int main() {
8491 #ifdef O_NONBLOCK
8492         printf("O_NONBLOCK\n");
8493         exit(0);
8494 #endif
8495 #ifdef O_NDELAY
8496         printf("O_NDELAY\n");
8497         exit(0);
8498 #endif
8499 #ifdef FNDELAY
8500         printf("FNDELAY\n");
8501         exit(0);
8502 #endif
8503         exit(0);
8504 }
8505 EOCP
8506         set try
8507         if eval $compile_ok; then
8508                 o_nonblock=`./try`
8509                 case "$o_nonblock" in
8510                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8511                 *) echo "Seems like we can use $o_nonblock.";;
8512                 esac
8513         else
8514                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8515         fi
8516         ;;
8517 *) echo "Using $hint value $o_nonblock.";;
8518 esac
8519 $rm -f try try.* .out core
8520
8521 echo " "
8522 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8523 case "$eagain" in
8524 '')
8525         $cat head.c > try.c
8526         $cat >>try.c <<EOCP
8527 #include <errno.h>
8528 #include <sys/types.h>
8529 #include <signal.h>
8530 #include <stdio.h> 
8531 #define MY_O_NONBLOCK $o_nonblock
8532 #ifndef errno  /* XXX need better Configure test */
8533 extern int errno;
8534 #endif
8535 #$i_unistd I_UNISTD
8536 #ifdef I_UNISTD
8537 #include <unistd.h>
8538 #endif
8539 #ifdef $i_string
8540 #include <string.h>
8541 #else
8542 #include <strings.h>
8543 #endif
8544 $signal_t blech(x) int x; { exit(3); }
8545 EOCP
8546         $cat >> try.c <<'EOCP'
8547 int main()
8548 {
8549         int pd[2];
8550         int pu[2];
8551         char buf[1];
8552         char string[100];
8553
8554         pipe(pd);       /* Down: child -> parent */
8555         pipe(pu);       /* Up: parent -> child */
8556         if (0 != fork()) {
8557                 int ret;
8558                 close(pd[1]);   /* Parent reads from pd[0] */
8559                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8560                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8561                         exit(1);
8562                 signal(SIGALRM, blech);
8563                 alarm(5);
8564                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8565                         exit(2);
8566                 sprintf(string, "%d\n", ret);
8567                 write(2, string, strlen(string));
8568                 alarm(0);
8569 #ifdef EAGAIN
8570                 if (errno == EAGAIN) {
8571                         printf("EAGAIN\n");
8572                         goto ok;
8573                 }
8574 #endif
8575 #ifdef EWOULDBLOCK
8576                 if (errno == EWOULDBLOCK)
8577                         printf("EWOULDBLOCK\n");
8578 #endif
8579         ok:
8580                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8581                 sleep(2);                               /* Give it time to close our pipe */
8582                 alarm(5);
8583                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8584                 alarm(0);
8585                 sprintf(string, "%d\n", ret);
8586                 write(3, string, strlen(string));
8587                 exit(0);
8588         }
8589
8590         close(pd[0]);                   /* We write to pd[1] */
8591         close(pu[1]);                   /* We read from pu[0] */
8592         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8593         close(pd[1]);                   /* Pipe pd is now fully closed! */
8594         exit(0);                                /* Bye bye, thank you for playing! */
8595 }
8596 EOCP
8597         set try
8598         if eval $compile_ok; then
8599                 echo "$startsh" >mtry
8600                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8601                 chmod +x mtry
8602                 ./mtry >/dev/null 2>&1
8603                 case $? in
8604                 0) eagain=`$cat try.out`;;
8605                 1) echo "Could not perform non-blocking setting!";;
8606                 2) echo "I did a successful read() for something that was not there!";;
8607                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8608                 *) echo "Something terribly wrong happened during testing.";;
8609                 esac
8610                 rd_nodata=`$cat try.ret`
8611                 echo "A read() system call with no data present returns $rd_nodata."
8612                 case "$rd_nodata" in
8613                 0|-1) ;;
8614                 *)
8615                         echo "(That's peculiar, fixing that to be -1.)"
8616                         rd_nodata=-1
8617                         ;;
8618                 esac
8619                 case "$eagain" in
8620                 '')
8621                         echo "Forcing errno EAGAIN on read() with no data available."
8622                         eagain=EAGAIN
8623                         ;;
8624                 *)
8625                         echo "Your read() sets errno to $eagain when no data is available."
8626                         ;;
8627                 esac
8628                 status=`$cat try.err`
8629                 case "$status" in
8630                 0) echo "And it correctly returns 0 to signal EOF.";;
8631                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8632                 *) echo "However, your read() returns '$status' on EOF??";;
8633                 esac
8634                 val="$define"
8635                 if test "$status" = "$rd_nodata"; then
8636                         echo "WARNING: you can't distinguish between EOF and no data!"
8637                         val="$undef"
8638                 fi
8639         else
8640                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8641                 eagain=EAGAIN
8642         fi
8643         set d_eofnblk
8644         eval $setvar
8645         ;;
8646 *)
8647         echo "Using $hint value $eagain."
8648         echo "Your read() returns $rd_nodata when no data is present."
8649         case "$d_eofnblk" in
8650         "$define") echo "And you can see EOF because read() returns 0.";;
8651         "$undef") echo "But you can't see EOF status from read() returned value.";;
8652         *)
8653                 echo "(Assuming you can't see EOF status from read anyway.)"
8654                 d_eofnblk=$undef
8655                 ;;
8656         esac
8657         ;;
8658 esac
8659 $rm -f try try.* .out core head.c mtry
8660
8661 : see if fchmod exists
8662 set fchmod d_fchmod
8663 eval $inlibc
8664
8665 : see if fchown exists
8666 set fchown d_fchown
8667 eval $inlibc
8668
8669 : see if this is an fcntl system
8670 set fcntl d_fcntl
8671 eval $inlibc
8672
8673 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8674 while $test $# -ge 2; do
8675         case "$1" in
8676         $define) echo "#include <$2>";;
8677         esac ;
8678     shift 2;
8679 done > try.c;
8680 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8681 set try;
8682 if eval $compile; then
8683         val="$define";
8684 else
8685         val="$undef";
8686 fi;
8687 set $varname;
8688 eval $setvar;
8689 $rm -f try.c try.o'
8690
8691 socketlib=''
8692 sockethdr=''
8693 : see whether socket exists
8694 echo " "
8695 $echo $n "Hmm... $c" >&4
8696 if set socket val -f d_socket; eval $csym; $val; then
8697         echo "Looks like you have Berkeley networking support." >&4
8698         d_socket="$define"
8699         if set setsockopt val -f; eval $csym; $val; then
8700                 d_oldsock="$undef"
8701         else
8702                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8703                 d_oldsock="$define"
8704         fi
8705 else
8706         if $contains socklib libc.list >/dev/null 2>&1; then
8707                 echo "Looks like you have Berkeley networking support." >&4
8708                 d_socket="$define"
8709                 : we will have to assume that it supports the 4.2 BSD interface
8710                 d_oldsock="$undef"
8711         else
8712                 echo "You don't have Berkeley networking in libc$_a..." >&4
8713                 if test "X$d_socket" = "X$define"; then
8714                    echo "...but you seem to believe that you have sockets." >&4
8715                 else
8716                         for net in net socket
8717                         do
8718                                 if test -f /usr/lib/lib$net$_a; then
8719                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8720                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8721                                         if $contains socket libc.list >/dev/null 2>&1; then
8722                                                 d_socket="$define"
8723                                                 socketlib="-l$net"
8724                                                 case "$net" in
8725                                                 net)
8726                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8727                                                         sockethdr="-I/usr/netinclude"
8728                                                         ;;
8729                                                 esac
8730                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8731                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8732                                                         d_oldsock="$undef"
8733                                                 else
8734                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8735                                                         d_oldsock="$define"
8736                                                 fi
8737                                                 break
8738                                         fi
8739                                 fi
8740                         done
8741                         if test "X$d_socket" != "X$define"; then
8742                            echo "or anywhere else I see." >&4
8743                            d_socket="$undef"
8744                            d_oldsock="$undef"
8745                         fi
8746                 fi
8747         fi
8748 fi
8749
8750 : see if socketpair exists
8751 set socketpair d_sockpair
8752 eval $inlibc
8753
8754
8755 echo " "
8756 echo "Checking the availability of certain socket constants..." >& 4
8757 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8758         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8759         $cat >try.c <<EOF
8760 #include <sys/types.h>
8761 #include <sys/socket.h>
8762 int main() {
8763     int i = $ENUM;
8764 }
8765 EOF
8766         val="$undef"
8767         set try; if eval $compile; then
8768                 val="$define"
8769         fi
8770         set d_${enum}; eval $setvar
8771         $rm -f try.c try
8772 done
8773
8774 : see if sys/select.h has to be included
8775 set sys/select.h i_sysselct
8776 eval $inhdr
8777
8778 : see if we should include time.h, sys/time.h, or both
8779 echo " "
8780 if test "X$timeincl" = X; then
8781         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8782         $echo $n "I'm now running the test program...$c"
8783         $cat >try.c <<'EOCP'
8784 #include <sys/types.h>
8785 #ifdef I_TIME
8786 #include <time.h>
8787 #endif
8788 #ifdef I_SYSTIME
8789 #ifdef SYSTIMEKERNEL
8790 #define KERNEL
8791 #endif
8792 #include <sys/time.h>
8793 #endif
8794 #ifdef I_SYSSELECT
8795 #include <sys/select.h>
8796 #endif
8797 int main()
8798 {
8799         struct tm foo;
8800 #ifdef S_TIMEVAL
8801         struct timeval bar;
8802 #endif
8803 #ifdef S_TIMEZONE
8804         struct timezone tzp;
8805 #endif
8806         if (foo.tm_sec == foo.tm_sec)
8807                 exit(0);
8808 #ifdef S_TIMEVAL
8809         if (bar.tv_sec == bar.tv_sec)
8810                 exit(0);
8811 #endif
8812         exit(1);
8813 }
8814 EOCP
8815         flags=''
8816         for s_timezone in '-DS_TIMEZONE' ''; do
8817         sysselect=''
8818         for s_timeval in '-DS_TIMEVAL' ''; do
8819         for i_systimek in '' '-DSYSTIMEKERNEL'; do
8820         for i_time in '' '-DI_TIME'; do
8821         for i_systime in '-DI_SYSTIME' ''; do
8822                 case "$flags" in
8823                 '') $echo $n ".$c"
8824                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8825                         if eval $compile; then
8826                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8827                                 shift
8828                                 flags="$*"
8829                                 echo " "
8830                                 $echo $n "Succeeded with $flags$c"
8831                         fi
8832                         ;;
8833                 esac
8834         done
8835         done
8836         done
8837         done
8838         done
8839         timeincl=''
8840         echo " "
8841         case "$flags" in
8842         *SYSTIMEKERNEL*) i_systimek="$define"
8843                 timeincl=`./findhdr sys/time.h`
8844                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8845         *) i_systimek="$undef";;
8846         esac
8847         case "$flags" in
8848         *I_TIME*) i_time="$define"
8849                 timeincl=`./findhdr time.h`" $timeincl"
8850                 echo "We'll include <time.h>." >&4;;
8851         *) i_time="$undef";;
8852         esac
8853         case "$flags" in
8854         *I_SYSTIME*) i_systime="$define"
8855                 timeincl=`./findhdr sys/time.h`" $timeincl"
8856                 echo "We'll include <sys/time.h>." >&4;;
8857         *) i_systime="$undef";;
8858         esac
8859         $rm -f try.c try
8860 fi
8861
8862 : check for fd_set items
8863 $cat <<EOM
8864
8865 Checking to see how well your C compiler handles fd_set and friends ...
8866 EOM
8867 $cat >fd_set.c <<EOCP
8868 #$i_systime I_SYS_TIME
8869 #$i_sysselct I_SYS_SELECT
8870 #$d_socket HAS_SOCKET
8871 #include <sys/types.h>
8872 #ifdef HAS_SOCKET
8873 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8874 #endif
8875 #ifdef I_SYS_TIME
8876 #include <sys/time.h>
8877 #endif
8878 #ifdef I_SYS_SELECT
8879 #include <sys/select.h>
8880 #endif
8881 int main() {
8882         fd_set fds;
8883
8884 #ifdef TRYBITS
8885         if(fds.fds_bits);
8886 #endif
8887
8888 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8889         exit(0);
8890 #else
8891         exit(1);
8892 #endif
8893 }
8894 EOCP
8895 set fd_set -DTRYBITS
8896 if eval $compile; then
8897         d_fds_bits="$define"
8898         d_fd_set="$define"
8899         echo "Well, your system knows about the normal fd_set typedef..." >&4
8900         if ./fd_set; then
8901                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8902                 d_fd_macros="$define"
8903         else
8904                 $cat >&4 <<'EOM'
8905 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
8906 EOM
8907                 d_fd_macros="$undef"
8908         fi
8909 else
8910         $cat <<'EOM'
8911 Hmm, your compiler has some difficulty with fd_set.  Checking further...
8912 EOM
8913         set fd_set
8914         if eval $compile; then
8915                 d_fds_bits="$undef"
8916                 d_fd_set="$define"
8917                 echo "Well, your system has some sort of fd_set available..." >&4
8918                 if ./fd_set; then
8919                         echo "and you have the normal fd_set macros." >&4
8920                         d_fd_macros="$define"
8921                 else
8922                         $cat <<'EOM'
8923 but not the normal fd_set macros!  Gross!  More work for me...
8924 EOM
8925                         d_fd_macros="$undef"
8926                 fi
8927         else
8928         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
8929                 d_fd_set="$undef"
8930                 d_fds_bits="$undef"
8931                 d_fd_macros="$undef"
8932         fi
8933 fi
8934 $rm -f fd_set*
8935
8936 : see if fgetpos exists
8937 set fgetpos d_fgetpos
8938 eval $inlibc
8939
8940 : see if flock exists
8941 set flock d_flock
8942 eval $inlibc
8943
8944 : see if fork exists
8945 set fork d_fork
8946 eval $inlibc
8947
8948 : see if pathconf exists
8949 set pathconf d_pathconf
8950 eval $inlibc
8951
8952 : see if fpathconf exists
8953 set fpathconf d_fpathconf
8954 eval $inlibc
8955
8956
8957 : check for fpos64_t
8958 echo " "
8959 echo "Checking to see if you have fpos64_t..." >&4
8960 $cat >try.c <<EOCP
8961 #include <stdio.h>
8962 int main() { fpos64_t x = 7; }
8963 EOCP
8964 set try
8965 if eval $compile; then
8966         val="$define"
8967         echo "You have fpos64_t."
8968 else
8969         val="$undef"
8970         echo "You do not have fpos64_t."
8971         case "$fpossize" in
8972         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
8973         esac
8974 fi
8975 $rm -f try.* try
8976 set d_fpos64_t
8977 eval $setvar
8978
8979 hasstruct='varname=$1; struct=$2; shift; shift;
8980 while $test $# -ge 2; do
8981         case "$1" in
8982         $define) echo "#include <$2>";;
8983         esac ;
8984     shift 2;
8985 done > try.c;
8986 echo "int main () { struct $struct foo; }" >> try.c;
8987 set try;
8988 if eval $compile; then
8989         val="$define";
8990 else
8991         val="$undef";
8992 fi;
8993 set $varname;
8994 eval $setvar;
8995 $rm -f try.c try.o'
8996
8997 : see if this is a sys/param system
8998 set sys/param.h i_sysparam
8999 eval $inhdr
9000
9001 : see if this is a sys/mount.h system
9002 set sys/mount.h i_sysmount
9003 eval $inhdr
9004
9005 : see if sys/types.h has to be included
9006 set sys/types.h i_systypes
9007 eval $inhdr
9008
9009
9010 echo " "
9011 echo "Checking to see if your system supports struct fs_data..." >&4
9012 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9013 eval $hasstruct
9014 case "$d_fs_data_s" in
9015 "$define")      echo "Yes, it does."   ;;
9016 *)              echo "No, it doesn't." ;;
9017 esac
9018
9019 : see if fseeko exists
9020 set fseeko d_fseeko
9021 eval $inlibc
9022 case "$longsize" in
9023 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9024 esac
9025
9026 : see if fsetpos exists
9027 set fsetpos d_fsetpos
9028 eval $inlibc
9029
9030
9031 : see if fstatfs exists
9032 set fstatfs d_fstatfs
9033 eval $inlibc
9034
9035
9036 : see if statvfs exists
9037 set statvfs d_statvfs
9038 eval $inlibc
9039
9040 : see if fstatvfs exists
9041 set fstatvfs d_fstatvfs
9042 eval $inlibc
9043
9044
9045 : see if ftello exists
9046 set ftello d_ftello
9047 eval $inlibc
9048 case "$longsize" in
9049 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9050 esac
9051
9052 : see if getcwd exists
9053 set getcwd d_getcwd
9054 eval $inlibc
9055
9056
9057 : see if getfsstat exists
9058 set getfsstat d_getfsstat
9059 eval $inlibc
9060
9061 : see if getgrent exists
9062 set getgrent d_getgrent
9063 eval $inlibc
9064
9065 : see if gethostbyaddr exists
9066 set gethostbyaddr d_gethbyaddr
9067 eval $inlibc
9068
9069 : see if gethostbyname exists
9070 set gethostbyname d_gethbyname
9071 eval $inlibc
9072
9073 : see if gethostent exists
9074 set gethostent d_gethent
9075 eval $inlibc
9076
9077 : see how we will look up host name
9078 echo " "
9079 call=''
9080 if set gethostname val -f d_gethname; eval $csym; $val; then
9081         echo 'gethostname() found.' >&4
9082         d_gethname="$define"
9083         call=gethostname
9084 fi
9085 if set uname val -f d_uname; eval $csym; $val; then
9086         if ./xenix; then
9087                 $cat <<'EOM'
9088 uname() was found, but you're running xenix, and older versions of xenix
9089 have a broken uname(). If you don't really know whether your xenix is old
9090 enough to have a broken system call, use the default answer.
9091
9092 EOM
9093                 dflt=y
9094                 case "$d_uname" in
9095                 "$define") dflt=n;;
9096                 esac
9097                 rp='Is your uname() broken?'
9098                 . ./myread
9099                 case "$ans" in
9100                 n*) d_uname="$define"; call=uname;;
9101                 esac
9102         else
9103                 echo 'uname() found.' >&4
9104                 d_uname="$define"
9105                 case "$call" in
9106                 '') call=uname ;;
9107                 esac
9108         fi
9109 fi
9110 case "$d_gethname" in
9111 '') d_gethname="$undef";;
9112 esac
9113 case "$d_uname" in
9114 '') d_uname="$undef";;
9115 esac
9116 case "$d_uname$d_gethname" in
9117 *define*)
9118         dflt=n
9119         cat <<EOM
9120  
9121 Every now and then someone has a $call() that lies about the hostname
9122 but can't be fixed for political or economic reasons.  If you wish, I can
9123 pretend $call() isn't there and maybe compute hostname at run-time
9124 thanks to the '$phostname' command.
9125
9126 EOM
9127         rp="Shall I ignore $call() from now on?"
9128         . ./myread
9129         case "$ans" in
9130         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9131         esac;;
9132 esac
9133 case "$phostname" in
9134 '') aphostname='';;
9135 *) case "$aphostname" in
9136         /*) ;;
9137         *) set X $phostname
9138                 shift
9139                 file=$1
9140                 shift
9141                 file=`./loc $file $file $pth`
9142                 aphostname=`echo $file $*`
9143                 ;;
9144         esac
9145         ;;
9146 esac
9147 case "$d_uname$d_gethname" in
9148 *define*) ;;
9149 *)
9150         case "$phostname" in
9151         '')
9152                 echo "There will be no way for $package to get your hostname." >&4;;
9153         *)
9154         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9155                 ;;
9156         esac;;
9157 esac
9158 case "$d_phostname" in
9159 '') d_phostname="$undef";;
9160 esac
9161
9162 : see if this is a netdb.h system
9163 set netdb.h i_netdb
9164 eval $inhdr
9165
9166 : see if prototypes for various gethostxxx netdb.h functions are available
9167 echo " "
9168 set d_gethostprotos gethostent $i_netdb netdb.h
9169 eval $hasproto
9170
9171 : see if getlogin exists
9172 set getlogin d_getlogin
9173 eval $inlibc
9174
9175 : see if getmnt exists
9176 set getmnt d_getmnt
9177 eval $inlibc
9178
9179 : see if getmntent exists
9180 set getmntent d_getmntent
9181 eval $inlibc
9182
9183 : see if getnetbyaddr exists
9184 set getnetbyaddr d_getnbyaddr
9185 eval $inlibc
9186
9187 : see if getnetbyname exists
9188 set getnetbyname d_getnbyname
9189 eval $inlibc
9190
9191 : see if getnetent exists
9192 set getnetent d_getnent
9193 eval $inlibc
9194
9195 : see if prototypes for various getnetxxx netdb.h functions are available
9196 echo " "
9197 set d_getnetprotos getnetent $i_netdb netdb.h
9198 eval $hasproto
9199
9200
9201 : see if getprotobyname exists
9202 set getprotobyname d_getpbyname
9203 eval $inlibc
9204
9205 : see if getprotobynumber exists
9206 set getprotobynumber d_getpbynumber
9207 eval $inlibc
9208
9209 : see if getprotoent exists
9210 set getprotoent d_getpent
9211 eval $inlibc
9212
9213 : see if getpgid exists
9214 set getpgid d_getpgid
9215 eval $inlibc
9216
9217 : see if getpgrp2 exists
9218 set getpgrp2 d_getpgrp2
9219 eval $inlibc
9220
9221 : see if getppid exists
9222 set getppid d_getppid
9223 eval $inlibc
9224
9225 : see if getpriority exists
9226 set getpriority d_getprior
9227 eval $inlibc
9228
9229 : see if prototypes for various getprotoxxx netdb.h functions are available
9230 echo " "
9231 set d_getprotoprotos getprotoent $i_netdb netdb.h
9232 eval $hasproto
9233
9234 : see if getpwent exists
9235 set getpwent d_getpwent
9236 eval $inlibc
9237
9238
9239 : see if getservbyname exists
9240 set getservbyname d_getsbyname
9241 eval $inlibc
9242
9243 : see if getservbyport exists
9244 set getservbyport d_getsbyport
9245 eval $inlibc
9246
9247 : see if getservent exists
9248 set getservent d_getsent
9249 eval $inlibc
9250
9251 : see if prototypes for various getservxxx netdb.h functions are available
9252 echo " "
9253 set d_getservprotos getservent $i_netdb netdb.h
9254 eval $hasproto
9255
9256 : see if getspent exists
9257 set getspent d_getspent
9258 eval $inlibc
9259
9260 : see if getspnam exists
9261 set getspnam d_getspnam
9262 eval $inlibc
9263
9264 : see if gettimeofday or ftime exists
9265 set gettimeofday d_gettimeod
9266 eval $inlibc
9267 case "$d_gettimeod" in
9268 "$undef")
9269         set ftime d_ftime 
9270         eval $inlibc
9271         ;;
9272 *)
9273         val="$undef"; set d_ftime; eval $setvar
9274         ;;
9275 esac
9276 case "$d_gettimeod$d_ftime" in
9277 "$undef$undef")
9278         echo " "
9279         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9280         ;;
9281 esac
9282
9283 : see if this is an grp system
9284 set grp.h i_grp
9285 eval $inhdr
9286
9287 case "$i_grp" in
9288 $define)
9289         xxx=`./findhdr grp.h`
9290         $cppstdin $cppflags $cppminus < $xxx >$$.h
9291
9292         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9293                 val="$define"
9294         else
9295                 val="$undef"
9296         fi
9297         set d_grpasswd
9298         eval $setvar
9299
9300         $rm -f $$.h
9301         ;;
9302 *)
9303         val="$undef";
9304         set d_grpasswd; eval $setvar
9305         ;;
9306 esac
9307
9308 : see if hasmntopt exists
9309 set hasmntopt d_hasmntopt
9310 eval $inlibc
9311
9312 : see if this is a netinet/in.h or sys/in.h system
9313 set netinet/in.h i_niin sys/in.h i_sysin
9314 eval $inhdr
9315
9316 : see if arpa/inet.h has to be included
9317 set arpa/inet.h i_arpainet
9318 eval $inhdr
9319
9320 : see if htonl --and friends-- exists
9321 val=''
9322 set htonl val
9323 eval $inlibc
9324
9325 : Maybe they are macros.
9326 case "$val" in
9327 $undef)
9328         $cat >htonl.c <<EOM
9329 #include <stdio.h>
9330 #include <sys/types.h>
9331 #$i_niin I_NETINET_IN
9332 #$i_sysin I_SYS_IN
9333 #$i_arpainet I_ARPA_INET
9334 #ifdef I_NETINET_IN
9335 #include <netinet/in.h>
9336 #endif
9337 #ifdef I_SYS_IN
9338 #include <sys/in.h>
9339 #endif
9340 #ifdef I_ARPA_INET
9341 #include <arpa/inet.h>
9342 #endif
9343 #ifdef htonl
9344 printf("Defined as a macro.");
9345 #endif
9346 EOM
9347         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9348         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9349                 val="$define"
9350                 echo "But it seems to be defined as a macro." >&4
9351         fi
9352         $rm -f htonl.?
9353         ;;
9354 esac
9355 set d_htonl
9356 eval $setvar
9357
9358 : see if iconv exists
9359 set iconv d_iconv
9360 eval $inlibc
9361
9362 : index or strchr
9363 echo " "
9364 if set index val -f; eval $csym; $val; then
9365         if set strchr val -f d_strchr; eval $csym; $val; then
9366                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9367                         val="$define"
9368                         vali="$undef"
9369                         echo "strchr() found." >&4
9370                 else
9371                         val="$undef"
9372                         vali="$define"
9373                         echo "index() found." >&4
9374                 fi
9375         else
9376                 val="$undef"
9377                 vali="$define"
9378                 echo "index() found." >&4
9379         fi
9380 else
9381         if set strchr val -f d_strchr; eval $csym; $val; then
9382                 val="$define"
9383                 vali="$undef"
9384                 echo "strchr() found." >&4
9385         else
9386                 echo "No index() or strchr() found!" >&4
9387                 val="$undef"
9388                 vali="$undef"
9389         fi
9390 fi
9391 set d_strchr; eval $setvar
9392 val="$vali"
9393 set d_index; eval $setvar
9394
9395 : check whether inet_aton exists
9396 set inet_aton d_inetaton
9397 eval $inlibc
9398
9399 : see if inttypes.h is available
9400 : we want a real compile instead of Inhdr because some systems
9401 : have an inttypes.h which includes non-existent headers
9402 echo " "
9403 $cat >try.c <<EOCP
9404 #include <inttypes.h>
9405 int main() {
9406         static int32_t foo32 = 0x12345678;
9407 }
9408 EOCP
9409 set try
9410 if eval $compile; then
9411         echo "<inttypes.h> found." >&4
9412         val="$define"
9413 else
9414         echo "<inttypes.h> NOT found." >&4
9415         val="$undef"
9416 fi
9417 $rm -f try.c try
9418 set i_inttypes
9419 eval $setvar
9420
9421 : check for int64_t
9422 echo " "
9423 echo "Checking to see if you have int64_t..." >&4
9424 $cat >try.c <<EOCP
9425 #include <sys/types.h>
9426 #$i_inttypes I_INTTYPES
9427 #ifdef I_INTTYPES
9428 #include <inttypes.h>
9429 #endif
9430 int main() { int64_t x = 7; }
9431 EOCP
9432 set try
9433 if eval $compile; then
9434         val="$define"
9435         echo "You have int64_t."
9436 else
9437         val="$undef"
9438         echo "You do not have int64_t."
9439 fi
9440 $rm -f try try.*
9441 set d_int64_t
9442 eval $setvar
9443
9444 : Look for isascii
9445 echo " "
9446 $cat >isascii.c <<'EOCP'
9447 #include <stdio.h>
9448 #include <ctype.h>
9449 int main() {
9450         int c = 'A';
9451         if (isascii(c))
9452                 exit(0);
9453         else
9454                 exit(1);
9455 }
9456 EOCP
9457 set isascii
9458 if eval $compile; then
9459         echo "isascii() found." >&4
9460         val="$define"
9461 else
9462         echo "isascii() NOT found." >&4
9463         val="$undef"
9464 fi
9465 set d_isascii
9466 eval $setvar
9467 $rm -f isascii*
9468
9469 : see if killpg exists
9470 set killpg d_killpg
9471 eval $inlibc
9472
9473 : see if lchown exists
9474 echo " "
9475 $cat > try.c <<'EOCP'
9476 /* System header to define __stub macros and hopefully few prototypes,
9477     which can conflict with char lchown(); below.  */
9478 #include <assert.h>
9479 /* Override any gcc2 internal prototype to avoid an error.  */
9480 /* We use char because int might match the return type of a gcc2
9481    builtin and then its argument prototype would still apply.  */
9482 char lchown();
9483 int main() {
9484     /*  The GNU C library defines this for functions which it implements
9485         to always fail with ENOSYS.  Some functions are actually named
9486         something starting with __ and the normal name is an alias.  */
9487 #if defined (__stub_lchown) || defined (__stub___lchown)
9488 choke me
9489 #else
9490 lchown();
9491 #endif
9492 ; return 0; }
9493 EOCP
9494 set try
9495 if eval $compile; then
9496     $echo "lchown() found." >&4
9497     val="$define"
9498 else
9499     $echo "lchown() NOT found." >&4
9500     val="$undef"
9501 fi
9502 set d_lchown
9503 eval $setvar
9504
9505 : See if number of significant digits in a double precision number is known
9506 echo " "
9507 $cat >ldbl_dig.c <<EOM
9508 #$i_limits I_LIMITS
9509 #$i_float I_FLOAT
9510 #ifdef I_LIMITS
9511 #include <limits.h>
9512 #endif
9513 #ifdef I_FLOAT
9514 #include <float.h>
9515 #endif
9516 #ifdef LDBL_DIG
9517 printf("Contains LDBL_DIG");
9518 #endif
9519 EOM
9520 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9521 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9522         echo "LDBL_DIG found." >&4
9523         val="$define"
9524 else
9525         echo "LDBL_DIG NOT found." >&4
9526         val="$undef"
9527 fi
9528 $rm -f ldbl_dig.?
9529 set d_ldbl_dig
9530 eval $setvar
9531
9532 : see if link exists
9533 set link d_link
9534 eval $inlibc
9535
9536 : see if localeconv exists
9537 set localeconv d_locconv
9538 eval $inlibc
9539
9540 : see if lockf exists
9541 set lockf d_lockf
9542 eval $inlibc
9543
9544 : check for long long
9545 echo " "
9546 echo "Checking to see if you have long long..." >&4
9547 echo 'int main() { long long x = 7; return 0; }' > try.c
9548 set try
9549 if eval $compile; then
9550         val="$define"
9551         echo "You have have long long."
9552 else
9553         val="$undef"
9554         echo "You do not have long long."
9555 fi
9556 $rm try.*
9557 set d_longlong
9558 eval $setvar
9559
9560 : check for length of long long
9561 case "${d_longlong}${longlongsize}" in
9562 $define)
9563         echo " "
9564         echo "Checking to see how big your long longs are..." >&4
9565         $cat >try.c <<'EOCP'
9566 #include <stdio.h>
9567 int main()
9568 {
9569     printf("%d\n", (int)sizeof(long long));
9570     return(0);
9571 }
9572 EOCP
9573         set try
9574         if eval $compile_ok; then
9575                 longlongsize=`./try$exe_ext`
9576                 echo "Your long longs are $longlongsize bytes long."
9577         else
9578                 dflt='8'
9579                 echo " "
9580                 echo "(I can't seem to compile the test program.  Guessing...)"
9581                 rp="What is the size of a long long (in bytes)?"
9582                 . ./myread
9583                 longlongsize="$ans"
9584         fi
9585         if $test "X$longsize" = "X$longlongsize"; then
9586                 echo "(That isn't any different from an ordinary long.)"
9587         fi      
9588         ;;
9589 esac
9590 $rm -f try.* try
9591
9592 : see if prototype for lseek is available
9593 echo " "
9594 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9595 eval $hasproto
9596
9597 : see if lstat exists
9598 set lstat d_lstat
9599 eval $inlibc
9600
9601 : see if madvise exists
9602 set madvise d_madvise
9603 eval $inlibc
9604
9605 : see if mblen exists
9606 set mblen d_mblen
9607 eval $inlibc
9608
9609 : see if mbstowcs exists
9610 set mbstowcs d_mbstowcs
9611 eval $inlibc
9612
9613 : see if mbtowc exists
9614 set mbtowc d_mbtowc
9615 eval $inlibc
9616
9617 : see if memchr exists
9618 set memchr d_memchr
9619 eval $inlibc
9620
9621 : see if memcmp exists
9622 set memcmp d_memcmp
9623 eval $inlibc
9624
9625 : see if memcpy exists
9626 set memcpy d_memcpy
9627 eval $inlibc
9628
9629 : see if memmove exists
9630 set memmove d_memmove
9631 eval $inlibc
9632
9633 : see if memset exists
9634 set memset d_memset
9635 eval $inlibc
9636
9637 : see if mkdir exists
9638 set mkdir d_mkdir
9639 eval $inlibc
9640
9641 : see if mkdtemp exists
9642 set mkdtemp d_mkdtemp
9643 eval $inlibc
9644
9645 : see if mkfifo exists
9646 set mkfifo d_mkfifo
9647 eval $inlibc
9648
9649 : see if mkstemp exists
9650 set mkstemp d_mkstemp
9651 eval $inlibc
9652
9653 : see if mkstemps exists
9654 set mkstemps d_mkstemps
9655 eval $inlibc
9656
9657 : see if mktime exists
9658 set mktime d_mktime
9659 eval $inlibc
9660
9661 : see if this is a sys/mman.h system
9662 set sys/mman.h i_sysmman
9663 eval $inhdr
9664
9665 : see if mmap exists
9666 set mmap d_mmap
9667 eval $inlibc
9668 : see what shmat returns
9669 : default to something harmless
9670 mmaptype='void *'
9671 case "$i_sysmman$d_mmap" in
9672 "$define$define")
9673         $cat >mmap.c <<'END'
9674 #include <sys/mman.h>
9675 void *mmap();
9676 END
9677         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9678                 mmaptype='void *'
9679         else
9680                 mmaptype='caddr_t'
9681         fi
9682         echo "and it returns ($mmaptype)." >&4
9683         ;;
9684 esac
9685
9686
9687
9688 : see if mprotect exists
9689 set mprotect d_mprotect
9690 eval $inlibc
9691
9692 : see if msgctl exists
9693 set msgctl d_msgctl
9694 eval $inlibc
9695
9696 : see if msgget exists
9697 set msgget d_msgget
9698 eval $inlibc
9699
9700 : see if msgsnd exists
9701 set msgsnd d_msgsnd
9702 eval $inlibc
9703
9704 : see if msgrcv exists
9705 set msgrcv d_msgrcv
9706 eval $inlibc
9707
9708 : see how much of the 'msg*(2)' library is present.
9709 h_msg=true
9710 echo " "
9711 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9712 *"$undef"*) h_msg=false;;
9713 esac
9714 case "$osname" in
9715 freebsd)
9716     case "`ipcs 2>&1`" in
9717     "SVID messages"*"not configured"*)
9718         echo "Your $osname does not have the msg*(2) configured." >&4
9719         h_msg=false
9720         val="$undef"
9721         set msgctl d_msgctl
9722         eval $setvar
9723         set msgget d_msgget
9724         eval $setvar
9725         set msgsnd d_msgsnd
9726         eval $setvar
9727         set msgrcv d_msgrcv
9728         eval $setvar
9729         ;;
9730     esac
9731     ;;
9732 esac
9733 : we could also check for sys/ipc.h ...
9734 if $h_msg && $test `./findhdr sys/msg.h`; then
9735         echo "You have the full msg*(2) library." >&4
9736         val="$define"
9737 else
9738         echo "You don't have the full msg*(2) library." >&4
9739         val="$undef"
9740 fi
9741 set d_msg
9742 eval $setvar
9743
9744 : see if msync exists
9745 set msync d_msync
9746 eval $inlibc
9747
9748 : see if munmap exists
9749 set munmap d_munmap
9750 eval $inlibc
9751
9752 : see if nice exists
9753 set nice d_nice
9754 eval $inlibc
9755
9756
9757 echo " "
9758 echo "Checking which 64-bit integer type we could use..." >&4
9759
9760 case "$intsize" in
9761 8) val=int
9762    set quadtype
9763    eval $setvar
9764    val='"unsigned int"'
9765    set uquadtype
9766    eval $setvar
9767    quadkind=1
9768    ;;
9769 *) case "$longsize" in
9770    8) val=long
9771       set quadtype
9772       eval $setvar
9773       val='"unsigned long"'
9774       set uquadtype
9775       eval $setvar
9776       quadkind=2
9777       ;;
9778    *) case "$d_longlong:$longlongsize" in
9779       define:8)
9780         val='"long long"'
9781         set quadtype
9782         eval $setvar
9783         val='"unsigned long long"'
9784         set uquadtype
9785         eval $setvar
9786         quadkind=3
9787         ;;
9788       *) case "$d_int64_t" in
9789          define)
9790            val=int64_t
9791            set quadtype
9792            eval $setvar
9793            val=uint64_t
9794            set uquadtype
9795            eval $setvar
9796            quadkind=4
9797            ;;
9798          esac
9799          ;;
9800       esac
9801       ;;
9802    esac
9803    ;;
9804 esac
9805
9806 case "$quadtype" in
9807 '')     echo "Alas, no 64-bit integer types in sight." >&4
9808         d_quad="$undef"
9809         ;;
9810 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
9811             verb="will"
9812         else
9813             verb="could"
9814         fi
9815         echo "We $verb use '$quadtype' for 64-bit integers." >&4
9816         d_quad="$define"
9817         ;;
9818 esac
9819
9820 : check for length of character
9821 echo " "
9822 case "$charsize" in
9823 '')
9824         echo "Checking to see how big your characters are (hey, you never know)..." >&4
9825         $cat >try.c <<'EOCP'
9826 #include <stdio.h>
9827 int main()
9828 {
9829     printf("%d\n", (int)sizeof(char));
9830     exit(0);
9831 }
9832 EOCP
9833         set try
9834         if eval $compile_ok; then
9835                 dflt=`./try`
9836         else
9837                 dflt='1'
9838                 echo "(I can't seem to compile the test program.  Guessing...)"
9839         fi
9840         ;;
9841 *)
9842         dflt="$charsize"
9843         ;;
9844 esac
9845 rp="What is the size of a character (in bytes)?"
9846 . ./myread
9847 charsize="$ans"
9848 $rm -f try.c try
9849
9850
9851 echo " "
9852 $echo "Choosing the C types to be used for Perl's internal types..." >&4
9853
9854 case "$use64bitint:$d_quad:$quadtype" in
9855 define:define:?*)
9856         ivtype="$quadtype"
9857         uvtype="$uquadtype"
9858         ivsize=8
9859         uvsize=8
9860         ;;
9861 *)      ivtype="long"
9862         uvtype="unsigned long"
9863         ivsize=$longsize
9864         uvsize=$longsize
9865         ;;
9866 esac
9867
9868 case "$uselongdouble:$d_longdbl" in
9869 define:define)
9870         nvtype="long double"
9871         nvsize=$longdblsize
9872         ;;
9873 *)      nvtype=double
9874         nvsize=$doublesize
9875         ;;
9876 esac
9877
9878 $echo "(IV will be "$ivtype", $ivsize bytes)"
9879 $echo "(UV will be "$uvtype", $uvsize bytes)"
9880 $echo "(NV will be "$nvtype", $nvsize bytes)"
9881
9882 $cat >try.c <<EOCP
9883 #$i_inttypes I_INTTYPES
9884 #ifdef I_INTTYPES
9885 #include <inttypes.h>
9886 #endif
9887 #include <stdio.h>
9888 int main() {
9889 #ifdef INT8
9890    int8_t i =  INT8_MAX;
9891   uint8_t u = UINT8_MAX;
9892   printf("int8_t\n");
9893 #endif
9894 #ifdef INT16
9895    int16_t i =  INT16_MAX;
9896   uint16_t i = UINT16_MAX;
9897   printf("int16_t\n");
9898 #endif
9899 #ifdef INT32
9900    int32_t i =  INT32_MAX;
9901   uint32_t u = UINT32_MAX;
9902   printf("int32_t\n");
9903 #endif
9904 }
9905 EOCP
9906
9907 case "$i8type" in
9908 '')     case "$charsize" in
9909         1)      i8type=char
9910                 u8type="unsigned char"
9911                 i8size=$charsize
9912                 u8size=$charsize
9913                 ;;
9914         esac
9915         ;;
9916 esac
9917 case "$i8type" in
9918 '')     set try -DINT8
9919         if eval $compile; then
9920                 case "`./try$exe_ext`" in
9921                 int8_t) i8type=int8_t
9922                         u8type=uint8_t
9923                         i8size=1
9924                         u8size=1
9925                         ;;
9926                 esac
9927         fi
9928         ;;
9929 esac
9930 case "$i8type" in
9931 '')     if $test $charsize -ge 1; then
9932                 i8type=char
9933                 u8type="unsigned char"
9934                 i8size=$charsize
9935                 u8size=$charsize
9936         fi
9937         ;;
9938 esac
9939
9940 case "$i16type" in
9941 '')     case "$shortsize" in
9942         2)      i16type=short
9943                 u16type="unsigned short"
9944                 i16size=$shortsize
9945                 u16size=$shortsize
9946                 ;;
9947         esac
9948         ;;
9949 esac
9950 case "$i16type" in
9951 '')     set try -DINT16
9952         if eval $compile; then
9953                 case "`./try$exe_ext`" in
9954                 int16_t)
9955                         i16type=int16_t
9956                         u16type=uint16_t
9957                         i16size=2
9958                         u16size=2
9959                         ;;
9960                 esac
9961         fi
9962         ;;
9963 esac
9964 case "$i16type" in
9965 '')     if $test $shortsize -ge 2; then
9966                 i16type=short
9967                 u16type="unsigned short"
9968                 i16size=$shortsize
9969                 u16size=$shortsize
9970         fi
9971         ;;
9972 esac
9973
9974 case "$i32type" in
9975 '')     case "$longsize" in
9976         4)      i32type=long
9977                 u32type="unsigned long"
9978                 i32size=$longsize
9979                 u32size=$longsize
9980                 ;;
9981         *)      case "$intsize" in
9982                 4)      i32type=int
9983                         u32type="unsigned int"
9984                         i32size=$intsize
9985                         u32size=$intsize
9986                         ;;
9987                 esac
9988                 ;;
9989         esac
9990         ;;
9991 esac
9992 case "$i32type" in
9993 '')     set try -DINT32
9994         if eval $compile; then
9995                 case "`./try$exe_ext`" in
9996                 int32_t)
9997                         i32type=int32_t
9998                         u32type=uint32_t
9999                         i32size=4
10000                         u32size=4
10001                         ;;
10002                 esac
10003         fi
10004         ;;
10005 esac
10006 case "$i32type" in
10007 '')     if $test $intsize -ge 4; then
10008                 i32type=int
10009                 u32type="unsigned int"
10010                 i32size=$intsize
10011                 u32size=$intsize
10012         fi
10013         ;;
10014 esac
10015
10016 case "$i64type" in
10017 '')     case "$d_quad:$quadtype" in
10018         define:?*)
10019                 i64type="$quadtype"
10020                 u64type="$uquadtype"
10021                 i64size=8
10022                 u64size=8
10023                 ;;
10024         esac
10025         ;;
10026 esac
10027
10028 $echo "Checking whether your NVs can preserve your UVs..." >&4
10029 $cat <<EOP >try.c
10030 #include <stdio.h>
10031 int main() {
10032     $uvtype k = ($uvtype)~0, l;
10033     $nvtype d;
10034     l = k;
10035     d = ($nvtype)l;
10036     l = ($uvtype)d;
10037     if (l == k)
10038        printf("preserve\n");
10039     exit(0);
10040 }
10041 EOP
10042 set try
10043 if eval $compile; then
10044         case "`./try$exe_ext`" in
10045         preserve) d_nv_preserves_uv="$define" ;;
10046         esac
10047 fi      
10048 case "$d_nv_preserves_uv" in
10049 $define) $echo "Yes, they can."  2>&1 ;;
10050 *)       $echo "No, they can't." 2>&1
10051          d_nv_preserves_uv="$undef"
10052          ;;
10053 esac
10054
10055 $rm -f try.* try
10056
10057
10058 : check for off64_t
10059 echo " "
10060 echo "Checking to see if you have off64_t..." >&4
10061 $cat >try.c <<EOCP
10062 #include <sys/types.h>
10063 #include <unistd.h>
10064 int main() { off64_t x = 7; }
10065 EOCP
10066 set try
10067 if eval $compile; then
10068         val="$define"
10069         echo "You have off64_t."
10070 else
10071         val="$undef"
10072         echo "You do not have off64_t."
10073         case "$lseeksize" in
10074         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10075         esac
10076 fi
10077 $rm -f try.* try
10078 set d_off64_t
10079 eval $setvar
10080
10081 : see if POSIX threads are available
10082 set pthread.h i_pthread
10083 eval $inhdr
10084
10085
10086
10087
10088 : how to create joinable pthreads
10089 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10090         echo " "
10091         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10092         $cat >try.c <<'EOCP'
10093 #include <pthread.h>
10094 int main() {
10095     int detachstate = JOINABLE;
10096 }
10097 EOCP
10098         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10099         if eval $compile; then
10100                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10101                 val="$undef" # Yes, undef.
10102                 set d_old_pthread_create_joinable
10103                 eval $setvar
10104                 val=""
10105                 set old_pthread_create_joinable
10106                 eval $setvar
10107         else
10108                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10109                 if eval $compile; then
10110                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10111                         val="$define"
10112                         set d_old_pthread_create_joinable
10113                         eval $setvar
10114                         val=PTHREAD_CREATE_UNDETACHED
10115                         set old_pthread_create_joinable
10116                         eval $setvar
10117                 else            
10118                         set try -DJOINABLE=__UNDETACHED
10119                         if eval $compile; then
10120                                 echo "You seem to use __UNDETACHED." >&4
10121                                 val="$define"
10122                                 set d_old_pthread_create_joinable
10123                                 eval $setvar
10124                                 val=__UNDETACHED
10125                                 set old_pthread_create_joinable
10126                                 eval $setvar
10127                         else
10128                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10129                                 val="$define"
10130                                 set d_old_pthread_create_joinable
10131                                 eval $setvar
10132                                 val=0
10133                                 set old_pthread_create_joinable
10134                                 eval $setvar
10135                         fi
10136                 fi
10137         fi
10138         $rm -f try try.*
10139 else
10140     d_old_pthread_create_joinable="$undef"
10141     old_pthread_create_joinable=""
10142 fi
10143
10144 : see if pause exists
10145 set pause d_pause
10146 eval $inlibc
10147
10148 : see if pipe exists
10149 set pipe d_pipe
10150 eval $inlibc
10151
10152 : see if poll exists
10153 set poll d_poll
10154 eval $inlibc
10155
10156
10157 : see whether the various POSIXish _yields exist
10158 $cat >try.c <<EOP
10159 #include <pthread.h>
10160 #include <stdio.h>
10161 int main() {
10162 #ifdef SCHED_YIELD
10163         sched_yield();
10164 #else
10165 #ifdef PTHREAD_YIELD
10166         pthread_yield();
10167 #else
10168 #ifdef PTHREAD_YIELD_NULL
10169         pthread_yield(NULL);
10170 #endif
10171 #endif
10172 #endif
10173 }
10174 EOP
10175 : see if sched_yield exists
10176 set try -DSCHED_YIELD
10177 if eval $compile; then
10178     val="$define"
10179     sched_yield='sched_yield()'
10180 else
10181     val="$undef"
10182 fi
10183 case "$usethreads" in
10184 $define)
10185         case "$val" in
10186         $define) echo 'sched_yield() found.' >&4        ;;
10187         *)       echo 'sched_yield() NOT found.' >&4    ;;
10188         esac
10189 esac
10190 set d_sched_yield
10191 eval $setvar
10192
10193 : see if pthread_yield exists
10194 set try -DPTHREAD_YIELD
10195 if eval $compile; then
10196     val="$define"
10197     case "$sched_yield" in
10198     '') sched_yield='pthread_yield()' ;;
10199     esac
10200 else
10201     set try -DPTHREAD_YIELD_NULL
10202     if eval $compile; then
10203         val="$define"
10204         case "$sched_yield" in
10205         '') sched_yield='pthread_yield(NULL)' ;;
10206         esac
10207     else
10208         val="$undef"
10209     fi
10210 fi
10211 case "$usethreads" in
10212 $define)
10213         case "$val" in
10214         $define) echo 'pthread_yield() found.' >&4      ;;
10215         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10216         esac
10217         ;;
10218 esac
10219 set d_pthread_yield
10220 eval $setvar
10221
10222 case "$sched_yield" in
10223 '') sched_yield=undef ;;
10224 esac
10225
10226 $rm -f try try.*
10227
10228 : see if this is a pwd.h system
10229 set pwd.h i_pwd
10230 eval $inhdr
10231
10232 case "$i_pwd" in
10233 $define)
10234         xxx=`./findhdr pwd.h`
10235         $cppstdin $cppflags $cppminus < $xxx >$$.h
10236
10237         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10238                 val="$define"
10239         else
10240                 val="$undef"
10241         fi
10242         set d_pwquota
10243         eval $setvar
10244
10245         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10246                 val="$define"
10247         else
10248                 val="$undef"
10249         fi
10250         set d_pwage
10251         eval $setvar
10252
10253         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10254                 val="$define"
10255         else
10256                 val="$undef"
10257         fi
10258         set d_pwchange
10259         eval $setvar
10260
10261         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10262                 val="$define"
10263         else
10264                 val="$undef"
10265         fi
10266         set d_pwclass
10267         eval $setvar
10268
10269         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10270                 val="$define"
10271         else
10272                 val="$undef"
10273         fi
10274         set d_pwexpire
10275         eval $setvar
10276
10277         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10278                 val="$define"
10279         else
10280                 val="$undef"
10281         fi
10282         set d_pwcomment
10283         eval $setvar
10284
10285         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10286                 val="$define"
10287         else
10288                 val="$undef"
10289         fi
10290         set d_pwgecos
10291         eval $setvar
10292
10293         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10294                 val="$define"
10295         else
10296                 val="$undef"
10297         fi
10298         set d_pwpasswd
10299         eval $setvar
10300
10301         $rm -f $$.h
10302         ;;
10303 *)
10304         val="$undef"; 
10305         set d_pwquota; eval $setvar
10306         set d_pwage; eval $setvar
10307         set d_pwchange; eval $setvar
10308         set d_pwclass; eval $setvar
10309         set d_pwexpire; eval $setvar
10310         set d_pwcomment; eval $setvar
10311         set d_pwgecos; eval $setvar
10312         set d_pwpasswd; eval $setvar
10313         ;;
10314 esac
10315
10316 : see if readdir and friends exist
10317 set readdir d_readdir
10318 eval $inlibc
10319 set seekdir d_seekdir
10320 eval $inlibc
10321 set telldir d_telldir
10322 eval $inlibc
10323 set rewinddir d_rewinddir
10324 eval $inlibc
10325
10326 : see if readlink exists
10327 set readlink d_readlink
10328 eval $inlibc
10329
10330 : see if rename exists
10331 set rename d_rename
10332 eval $inlibc
10333
10334 : see if rmdir exists
10335 set rmdir d_rmdir
10336 eval $inlibc
10337
10338 : see if memory.h is available.
10339 val=''
10340 set memory.h val
10341 eval $inhdr
10342
10343 : See if it conflicts with string.h
10344 case "$val" in
10345 $define)
10346         case "$strings" in
10347         '') ;;
10348         *)
10349                 $cppstdin $cppflags $cppminus < $strings > mem.h
10350                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10351                         echo " "
10352                         echo "We won't be including <memory.h>."
10353                         val="$undef"
10354                 fi
10355                 $rm -f mem.h
10356                 ;;
10357         esac
10358 esac
10359 set i_memory
10360 eval $setvar
10361
10362 : can bcopy handle overlapping blocks?
10363 val="$undef"
10364 case "$d_bcopy" in
10365 "$define")
10366         echo " "
10367         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10368         $cat >try.c <<EOCP
10369 #$i_memory I_MEMORY
10370 #$i_stdlib I_STDLIB
10371 #$i_string I_STRING
10372 #$i_unistd I_UNISTD
10373 EOCP
10374         $cat >>try.c <<'EOCP'
10375 #include <stdio.h>
10376 #ifdef I_MEMORY
10377 #  include <memory.h>
10378 #endif
10379 #ifdef I_STDLIB
10380 #  include <stdlib.h>
10381 #endif
10382 #ifdef I_STRING
10383 #  include <string.h>
10384 #else
10385 #  include <strings.h>
10386 #endif
10387 #ifdef I_UNISTD
10388 #  include <unistd.h>  /* Needed for NetBSD */
10389 #endif
10390 int main()
10391 {
10392 char buf[128], abc[128];
10393 char *b;
10394 int len;
10395 int off;
10396 int align;
10397
10398 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10399
10400 for (align = 7; align >= 0; align--) {
10401         for (len = 36; len; len--) {
10402                 b = buf+align;
10403                 bcopy(abc, b, len);
10404                 for (off = 1; off <= len; off++) {
10405                         bcopy(b, b+off, len);
10406                         bcopy(b+off, b, len);
10407                         if (bcmp(b, abc, len))
10408                                 exit(1);
10409                 }
10410         }
10411 }
10412 exit(0);
10413 }
10414 EOCP
10415         set try
10416         if eval $compile_ok; then
10417                 if ./try 2>/dev/null; then
10418                         echo "Yes, it can."
10419                         val="$define"
10420                 else
10421                         echo "It can't, sorry."
10422                         case "$d_memmove" in
10423                         "$define") echo "But that's Ok since you have memmove()." ;;
10424                         esac
10425                 fi
10426         else
10427                 echo "(I can't compile the test program, so we'll assume not...)"
10428                 case "$d_memmove" in
10429                 "$define") echo "But that's Ok since you have memmove()." ;;
10430                 esac
10431         fi
10432         ;;
10433 esac
10434 $rm -f try.* try core
10435 set d_safebcpy
10436 eval $setvar
10437
10438 : can memcpy handle overlapping blocks?
10439 val="$undef"
10440 case "$d_memcpy" in
10441 "$define")
10442         echo " "
10443         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10444         $cat >try.c <<EOCP
10445 #$i_memory I_MEMORY
10446 #$i_stdlib I_STDLIB
10447 #$i_string I_STRING
10448 #$i_unistd I_UNISTD
10449 EOCP
10450         $cat >>try.c <<'EOCP'
10451 #include <stdio.h>
10452 #ifdef I_MEMORY
10453 #  include <memory.h>
10454 #endif
10455 #ifdef I_STDLIB
10456 #  include <stdlib.h>
10457 #endif
10458 #ifdef I_STRING
10459 #  include <string.h>
10460 #else
10461 #  include <strings.h>
10462 #endif
10463 #ifdef I_UNISTD
10464 #  include <unistd.h>  /* Needed for NetBSD */
10465 #endif
10466 int main()
10467 {
10468 char buf[128], abc[128];
10469 char *b;
10470 int len;
10471 int off;
10472 int align;
10473
10474 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10475    try to store the string in read-only memory. */
10476 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10477
10478 for (align = 7; align >= 0; align--) {
10479         for (len = 36; len; len--) {
10480                 b = buf+align;
10481                 memcpy(b, abc, len);
10482                 for (off = 1; off <= len; off++) {
10483                         memcpy(b+off, b, len);
10484                         memcpy(b, b+off, len);
10485                         if (memcmp(b, abc, len))
10486                                 exit(1);
10487                 }
10488         }
10489 }
10490 exit(0);
10491 }
10492 EOCP
10493         set try
10494         if eval $compile_ok; then
10495                 if ./try 2>/dev/null; then
10496                         echo "Yes, it can."
10497                         val="$define"
10498                 else
10499                         echo "It can't, sorry."
10500                         case "$d_memmove" in
10501                         "$define") echo "But that's Ok since you have memmove()." ;;
10502                         esac
10503                 fi
10504         else
10505                 echo "(I can't compile the test program, so we'll assume not...)"
10506                 case "$d_memmove" in
10507                 "$define") echo "But that's Ok since you have memmove()." ;;
10508                 esac
10509         fi
10510         ;;
10511 esac
10512 $rm -f try.* try core
10513 set d_safemcpy
10514 eval $setvar
10515
10516 : can memcmp be trusted to compare relative magnitude?
10517 val="$undef"
10518 case "$d_memcmp" in
10519 "$define")
10520         echo " "
10521         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10522         $cat >try.c <<EOCP
10523 #$i_memory I_MEMORY
10524 #$i_stdlib I_STDLIB
10525 #$i_string I_STRING
10526 #$i_unistd I_UNISTD
10527 EOCP
10528         $cat >>try.c <<'EOCP'
10529 #include <stdio.h>
10530 #ifdef I_MEMORY
10531 #  include <memory.h>
10532 #endif
10533 #ifdef I_STDLIB
10534 #  include <stdlib.h>
10535 #endif
10536 #ifdef I_STRING
10537 #  include <string.h>
10538 #else
10539 #  include <strings.h>
10540 #endif
10541 #ifdef I_UNISTD
10542 #  include <unistd.h>  /* Needed for NetBSD */
10543 #endif
10544 int main()
10545 {
10546 char a = -1;
10547 char b = 0;
10548 if ((a < b) && memcmp(&a, &b, 1) < 0)
10549         exit(1);
10550 exit(0);
10551 }
10552 EOCP
10553         set try
10554         if eval $compile_ok; then
10555                 if ./try 2>/dev/null; then
10556                         echo "Yes, it can."
10557                         val="$define"
10558                 else
10559                         echo "No, it can't (it uses signed chars)."
10560                 fi
10561         else
10562                 echo "(I can't compile the test program, so we'll assume not...)"
10563         fi
10564         ;;
10565 esac
10566 $rm -f try.* try core
10567 set d_sanemcmp
10568 eval $setvar
10569
10570 : see if select exists
10571 set select d_select
10572 eval $inlibc
10573
10574 : see if semctl exists
10575 set semctl d_semctl
10576 eval $inlibc
10577
10578 : see if semget exists
10579 set semget d_semget
10580 eval $inlibc
10581
10582 : see if semop exists
10583 set semop d_semop
10584 eval $inlibc
10585
10586 : see how much of the 'sem*(2)' library is present.
10587 h_sem=true
10588 echo " "
10589 case "$d_semctl$d_semget$d_semop" in
10590 *"$undef"*) h_sem=false;;
10591 esac
10592 case "$osname" in
10593 freebsd)
10594     case "`ipcs 2>&1`" in
10595     "SVID messages"*"not configured"*)
10596         echo "Your $osname does not have the sem*(2) configured." >&4
10597         h_sem=false
10598         val="$undef"
10599         set semctl d_semctl
10600         eval $setvar
10601         set semget d_semget
10602         eval $setvar
10603         set semop d_semop
10604         eval $setvar
10605         ;;
10606     esac
10607     ;;
10608 esac
10609 : we could also check for sys/ipc.h ...
10610 if $h_sem && $test `./findhdr sys/sem.h`; then
10611         echo "You have the full sem*(2) library." >&4
10612         val="$define"
10613 else
10614         echo "You don't have the full sem*(2) library." >&4
10615         val="$undef"
10616 fi
10617 set d_sem
10618 eval $setvar
10619
10620 : see whether sys/sem.h defines union semun
10621 echo " "
10622 $cat > try.c <<'END'
10623 #include <sys/types.h>
10624 #include <sys/ipc.h>
10625 #include <sys/sem.h>
10626 int main () { union semun semun; semun.buf = 0; }
10627 END
10628 set try
10629 if eval $compile; then
10630     echo "You have union semun in <sys/sem.h>." >&4
10631     val="$define"
10632 else
10633     echo "You do not have union semun in <sys/sem.h>." >&4
10634     val="$undef"
10635 fi
10636 $rm -f try try.c try.h
10637 set d_union_semun
10638 eval $setvar
10639
10640 : see how to do semctl IPC_STAT
10641 case "$d_sem" in
10642 $define)
10643     : see whether semctl IPC_STAT can use union semun
10644     echo " "
10645     $cat > try.h <<END
10646 #ifndef S_IRUSR
10647 #   ifdef S_IREAD
10648 #       define S_IRUSR S_IREAD
10649 #       define S_IWUSR S_IWRITE
10650 #       define S_IXUSR S_IEXEC
10651 #   else
10652 #       define S_IRUSR 0400
10653 #       define S_IWUSR 0200
10654 #       define S_IXUSR 0100
10655 #   endif
10656 #   define S_IRGRP (S_IRUSR>>3)
10657 #   define S_IWGRP (S_IWUSR>>3)
10658 #   define S_IXGRP (S_IXUSR>>3)
10659 #   define S_IROTH (S_IRUSR>>6)
10660 #   define S_IWOTH (S_IWUSR>>6)
10661 #   define S_IXOTH (S_IXUSR>>6)
10662 #endif
10663 #ifndef S_IRWXU
10664 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10665 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10666 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10667 #endif
10668 END
10669
10670     $cat > try.c <<END
10671 #include <sys/types.h>
10672 #include <sys/ipc.h>
10673 #include <sys/sem.h>
10674 #include <sys/stat.h>
10675 #include <stdio.h>
10676 #include <errno.h>
10677 #include "try.h"
10678 #ifndef errno
10679 extern int errno;
10680 #endif
10681 #$d_union_semun HAS_UNION_SEMUN
10682 int main() {
10683     union semun
10684 #ifndef HAS_UNION_SEMUN
10685     {
10686         int val;
10687         struct semid_ds *buf;
10688         unsigned short *array;
10689     }
10690 #endif
10691     arg;
10692     int sem, st;
10693
10694 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10695     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10696     if (sem > -1) {
10697         struct semid_ds argbuf;
10698         arg.buf = &argbuf;
10699 #       ifdef IPC_STAT
10700         st = semctl(sem, 0, IPC_STAT, arg);
10701         if (st == 0)
10702             printf("semun\n");
10703         else
10704 #       endif /* IPC_STAT */
10705             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10706 #       ifdef IPC_RMID
10707         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10708 #       endif /* IPC_RMID */
10709             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10710     } else
10711 #endif /* IPC_PRIVATE && ... */
10712         printf("semget failed: errno = %d\n", errno);
10713   return 0;
10714 }
10715 END
10716     val="$undef"
10717     set try
10718     if eval $compile; then
10719         xxx=`./try`
10720         case "$xxx" in
10721         semun) val="$define" ;;
10722         esac
10723     fi
10724     $rm -f try try.c
10725     set d_semctl_semun
10726     eval $setvar
10727     case "$d_semctl_semun" in
10728     $define)
10729         echo "You can use union semun for semctl IPC_STAT." >&4
10730         also='also'
10731         ;;
10732     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10733         also=''
10734         ;;
10735     esac
10736
10737     : see whether semctl IPC_STAT can use struct semid_ds pointer
10738     $cat > try.c <<'END'
10739 #include <sys/types.h>
10740 #include <sys/ipc.h>
10741 #include <sys/sem.h>
10742 #include <sys/stat.h>
10743 #include "try.h"
10744 #include <stdio.h>
10745 #include <errno.h>
10746 #ifndef errno
10747 extern int errno;
10748 #endif
10749 int main() {
10750     struct semid_ds arg;
10751     int sem, st;
10752
10753 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
10754     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10755     if (sem > -1) {
10756 #       ifdef IPC_STAT
10757         st = semctl(sem, 0, IPC_STAT, &arg);
10758         if (st == 0)
10759             printf("semid_ds\n");
10760         else
10761 #       endif /* IPC_STAT */
10762             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10763 #       ifdef IPC_RMID
10764         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10765 #       endif /* IPC_RMID */
10766             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10767     } else
10768 #endif /* IPC_PRIVATE && ... */
10769         printf("semget failed: errno = %d\n", errno);
10770
10771     return 0;
10772 }
10773 END
10774     val="$undef"
10775     set try
10776     if eval $compile; then
10777         xxx=`./try`
10778         case "$xxx" in
10779         semid_ds) val="$define" ;;
10780         esac
10781     fi
10782     $rm -f try try.c
10783     set d_semctl_semid_ds
10784     eval $setvar
10785     case "$d_semctl_semid_ds" in
10786     $define)
10787         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10788         ;;
10789     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10790         ;;
10791     esac
10792     $rm -f try.h
10793     ;;
10794 *)  val="$undef"
10795
10796     # We do not have the full sem*(2) library, so assume we can not
10797     # use either.
10798
10799     set d_semctl_semun
10800     eval $setvar
10801
10802     set d_semctl_semid_ds
10803     eval $setvar
10804     ;;
10805 esac
10806
10807 : see if setegid exists
10808 set setegid d_setegid
10809 eval $inlibc
10810
10811 : see if seteuid exists
10812 set seteuid d_seteuid
10813 eval $inlibc
10814
10815 : see if setgrent exists
10816 set setgrent d_setgrent
10817 eval $inlibc
10818
10819 : see if sethostent exists
10820 set sethostent d_sethent
10821 eval $inlibc
10822
10823 : see if setlinebuf exists
10824 set setlinebuf d_setlinebuf
10825 eval $inlibc
10826
10827 : see if setlocale exists
10828 set setlocale d_setlocale
10829 eval $inlibc
10830
10831 : see if setnetent exists
10832 set setnetent d_setnent
10833 eval $inlibc
10834
10835 : see if setprotoent exists
10836 set setprotoent d_setpent
10837 eval $inlibc
10838
10839 : see if setpgid exists
10840 set setpgid d_setpgid
10841 eval $inlibc
10842
10843 : see if setpgrp2 exists
10844 set setpgrp2 d_setpgrp2
10845 eval $inlibc
10846
10847 : see if setpriority exists
10848 set setpriority d_setprior
10849 eval $inlibc
10850
10851 : see if setpwent exists
10852 set setpwent d_setpwent
10853 eval $inlibc
10854
10855 : see if setregid exists
10856 set setregid d_setregid
10857 eval $inlibc
10858 set setresgid d_setresgid
10859 eval $inlibc
10860
10861 : see if setreuid exists
10862 set setreuid d_setreuid
10863 eval $inlibc
10864 set setresuid d_setresuid
10865 eval $inlibc
10866
10867 : see if setrgid exists
10868 set setrgid d_setrgid
10869 eval $inlibc
10870
10871 : see if setruid exists
10872 set setruid d_setruid
10873 eval $inlibc
10874
10875 : see if setservent exists
10876 set setservent d_setsent
10877 eval $inlibc
10878
10879 : see if setsid exists
10880 set setsid d_setsid
10881 eval $inlibc
10882
10883 : see if setspent exists
10884 set setspent d_setspent
10885 eval $inlibc
10886
10887 : see if setvbuf exists
10888 set setvbuf d_setvbuf
10889 eval $inlibc
10890
10891 : see if sfio.h is available
10892 set sfio.h i_sfio
10893 eval $inhdr
10894
10895
10896 : see if sfio library is available
10897 case "$i_sfio" in
10898 $define)
10899         val=''
10900         set sfreserve val
10901         eval $inlibc
10902         ;;
10903 *)
10904         val="$undef"
10905         ;;
10906 esac
10907 : Ok, but do we want to use it.
10908 case "$val" in
10909 $define)
10910         case "$usesfio" in
10911         true|$define|[yY]*) dflt='y';;
10912         *) dflt='n';;
10913         esac
10914         echo "$package can use the sfio library, but it is experimental."
10915         rp="You seem to have sfio available, do you want to try using it?"
10916         . ./myread
10917         case "$ans" in
10918         y|Y) ;;
10919         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
10920                 val="$undef"
10921                 : Remove sfio from list of libraries to use
10922                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
10923                 shift
10924                 libs="$*"
10925                 echo "libs = $libs" >&4
10926                 ;;
10927         esac
10928         ;;
10929 *)      case "$usesfio" in
10930         true|$define|[yY]*)
10931                 echo "Sorry, cannot find sfio on this machine" >&4
10932                 echo "Ignoring your setting of usesfio=$usesfio" >&4
10933                 ;;
10934         esac
10935         ;;
10936 esac
10937 set d_sfio
10938 eval $setvar
10939 case "$d_sfio" in
10940 $define) usesfio='true';;
10941 *) usesfio='false';;
10942 esac
10943
10944 : see if shmctl exists
10945 set shmctl d_shmctl
10946 eval $inlibc
10947
10948 : see if shmget exists
10949 set shmget d_shmget
10950 eval $inlibc
10951
10952 : see if shmat exists
10953 set shmat d_shmat
10954 eval $inlibc
10955 : see what shmat returns
10956 case "$d_shmat" in
10957 "$define")
10958         $cat >shmat.c <<'END'
10959 #include <sys/shm.h>
10960 void *shmat();
10961 END
10962         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
10963                 shmattype='void *'
10964         else
10965                 shmattype='char *'
10966         fi
10967         echo "and it returns ($shmattype)." >&4
10968         : see if a prototype for shmat is available
10969         xxx=`./findhdr sys/shm.h`
10970         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
10971         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
10972                 val="$define"
10973         else
10974                 val="$undef"
10975         fi
10976         $rm -f shmat.[co]
10977         ;;
10978 *)
10979         val="$undef"
10980         ;;
10981 esac
10982 set d_shmatprototype
10983 eval $setvar
10984
10985 : see if shmdt exists
10986 set shmdt d_shmdt
10987 eval $inlibc
10988
10989 : see how much of the 'shm*(2)' library is present.
10990 h_shm=true
10991 echo " "
10992 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
10993 *"$undef"*) h_shm=false;;
10994 esac
10995 case "$osname" in
10996 freebsd)
10997     case "`ipcs 2>&1`" in
10998     "SVID shared memory"*"not configured"*)
10999         echo "Your $osname does not have the shm*(2) configured." >&4
11000         h_shm=false
11001         val="$undef"
11002         set shmctl d_shmctl
11003         evat $setvar
11004         set shmget d_shmget
11005         evat $setvar
11006         set shmat d_shmat
11007         evat $setvar
11008         set shmdt d_shmdt
11009         evat $setvar
11010         ;;
11011     esac
11012     ;;
11013 esac
11014 : we could also check for sys/ipc.h ...
11015 if $h_shm && $test `./findhdr sys/shm.h`; then
11016         echo "You have the full shm*(2) library." >&4
11017         val="$define"
11018 else
11019         echo "You don't have the full shm*(2) library." >&4
11020         val="$undef"
11021 fi
11022 set d_shm
11023 eval $setvar
11024
11025 echo " "
11026 : see if we have sigaction
11027 if set sigaction val -f d_sigaction; eval $csym; $val; then
11028         echo 'sigaction() found.' >&4
11029         $cat > try.c <<'EOP'
11030 #include <stdio.h>
11031 #include <sys/types.h>
11032 #include <signal.h>
11033 int main()
11034 {
11035     struct sigaction act, oact;
11036     act.sa_flags = 0;
11037     oact.sa_handler = 0;
11038     /* so that act and oact are used */
11039     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11040 }
11041 EOP
11042         set try
11043         if eval $compile_ok; then
11044                 val="$define"
11045         else
11046                 echo "But you don't seem to have a useable struct sigaction." >&4
11047                 val="$undef"
11048         fi
11049 else
11050         echo 'sigaction NOT found.' >&4
11051         val="$undef"
11052 fi
11053 set d_sigaction; eval $setvar
11054 $rm -f try try$_o try.c
11055
11056 : see if sigsetjmp exists
11057 echo " "
11058 case "$d_sigsetjmp" in
11059 '')
11060         $cat >try.c <<'EOP'
11061 #include <setjmp.h>
11062 sigjmp_buf env;
11063 int set = 1;
11064 int main()
11065 {
11066         if (sigsetjmp(env,1))
11067                 exit(set);
11068         set = 0;
11069         siglongjmp(env, 1);
11070         exit(1);
11071 }
11072 EOP
11073         set try
11074         if eval $compile; then
11075                 if ./try >/dev/null 2>&1; then
11076                         echo "POSIX sigsetjmp found." >&4
11077                         val="$define"
11078                 else
11079                         $cat >&4 <<EOM
11080 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11081 I'll ignore them.
11082 EOM
11083                         val="$undef"
11084                 fi
11085         else
11086                 echo "sigsetjmp not found." >&4
11087                 val="$undef"
11088         fi
11089         ;;
11090 *) val="$d_sigsetjmp"
11091         case "$d_sigsetjmp" in
11092         $define) echo "POSIX sigsetjmp found." >&4;;
11093         $undef) echo "sigsetjmp not found." >&4;;
11094         esac
11095         ;;
11096 esac
11097 set d_sigsetjmp
11098 eval $setvar
11099 $rm -f try.c try
11100
11101 : see if sys/stat.h is available
11102 set sys/stat.h i_sysstat
11103 eval $inhdr
11104
11105
11106 : see if stat knows about block sizes
11107 echo " "
11108 echo "Checking to see if your struct stat has st_blocks field..." >&4
11109 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11110 eval $hasfield
11111
11112
11113 : see if this is a sys/vfs.h system
11114 set sys/vfs.h i_sysvfs
11115 eval $inhdr
11116
11117
11118 : see if this is a sys/statfs.h system
11119 set sys/statfs.h i_sysstatfs
11120 eval $inhdr
11121
11122
11123 echo " "
11124 echo "Checking to see if your system supports struct statfs..." >&4
11125 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
11126 eval $hasstruct
11127 case "$d_statfs_s" in
11128 "$define")      echo "Yes, it does."   ;;
11129 *)              echo "No, it doesn't." ;;
11130 esac
11131
11132
11133
11134 : see if struct statfs knows about f_flags
11135 case "$d_statfs_s" in
11136 define) 
11137         echo " "
11138         echo "Checking to see if your struct statfs has f_flags field..." >&4
11139         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
11140         eval $hasfield
11141         ;;
11142 *)      val="$undef"
11143         set d_statfs_f_flags
11144         eval $setvar
11145         ;;
11146 esac
11147 case "$d_statfs_f_flags" in
11148 "$define")      echo "Yes, it does."   ;;
11149 *)              echo "No, it doesn't." ;;
11150 esac
11151
11152 : see if _ptr and _cnt from stdio act std
11153 echo " "
11154 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11155         echo "(Looks like you have stdio.h from Linux.)"
11156         case "$stdio_ptr" in
11157         '') stdio_ptr='((fp)->_IO_read_ptr)'
11158                 ptr_lval=$define
11159                 ;;
11160         *)      ptr_lval=$d_stdio_ptr_lval;;
11161         esac
11162         case "$stdio_cnt" in
11163         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11164                 cnt_lval=$undef
11165                 ;;
11166         *)      cnt_lval=$d_stdio_cnt_lval;;
11167         esac
11168         case "$stdio_base" in
11169         '') stdio_base='((fp)->_IO_read_base)';;
11170         esac
11171         case "$stdio_bufsiz" in
11172         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11173         esac
11174 else
11175         case "$stdio_ptr" in
11176         '') stdio_ptr='((fp)->_ptr)'
11177                 ptr_lval=$define
11178                 ;;
11179         *)      ptr_lval=$d_stdio_ptr_lval;;
11180         esac
11181         case "$stdio_cnt" in
11182         '') stdio_cnt='((fp)->_cnt)'
11183                 cnt_lval=$define
11184                 ;;
11185         *)      cnt_lval=$d_stdio_cnt_lval;;
11186         esac
11187         case "$stdio_base" in
11188         '') stdio_base='((fp)->_base)';;
11189         esac
11190         case "$stdio_bufsiz" in
11191         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11192         esac
11193 fi
11194 : test whether _ptr and _cnt really work
11195 echo "Checking how std your stdio is..." >&4
11196 $cat >try.c <<EOP
11197 #include <stdio.h>
11198 #define FILE_ptr(fp)    $stdio_ptr
11199 #define FILE_cnt(fp)    $stdio_cnt
11200 int main() {
11201         FILE *fp = fopen("try.c", "r");
11202         char c = getc(fp);
11203         if (
11204                 18 <= FILE_cnt(fp) &&
11205                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11206         )
11207                 exit(0);
11208         exit(1);
11209 }
11210 EOP
11211 val="$undef"
11212 set try
11213 if eval $compile; then
11214         if ./try; then
11215                 echo "Your stdio acts pretty std."
11216                 val="$define"
11217         else
11218                 echo "Your stdio isn't very std."
11219         fi
11220 else
11221         echo "Your stdio doesn't appear very std."
11222 fi
11223 $rm -f try.c try
11224 set d_stdstdio
11225 eval $setvar
11226
11227 : Can _ptr be used as an lvalue?
11228 case "$d_stdstdio$ptr_lval" in
11229 $define$define) val=$define ;;
11230 *) val=$undef ;;
11231 esac
11232 set d_stdio_ptr_lval
11233 eval $setvar
11234
11235 : Can _cnt be used as an lvalue?
11236 case "$d_stdstdio$cnt_lval" in
11237 $define$define) val=$define ;;
11238 *) val=$undef ;;
11239 esac
11240 set d_stdio_cnt_lval
11241 eval $setvar
11242
11243 : see if _base is also standard
11244 val="$undef"
11245 case "$d_stdstdio" in
11246 $define)
11247         $cat >try.c <<EOP
11248 #include <stdio.h>
11249 #define FILE_base(fp)   $stdio_base
11250 #define FILE_bufsiz(fp) $stdio_bufsiz
11251 int main() {
11252         FILE *fp = fopen("try.c", "r");
11253         char c = getc(fp);
11254         if (
11255                 19 <= FILE_bufsiz(fp) &&
11256                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11257         )
11258                 exit(0);
11259         exit(1);
11260 }
11261 EOP
11262         set try
11263         if eval $compile; then
11264                 if ./try; then
11265                         echo "And its _base field acts std."
11266                         val="$define"
11267                 else
11268                         echo "But its _base field isn't std."
11269                 fi
11270         else
11271                 echo "However, it seems to be lacking the _base field."
11272         fi
11273         $rm -f try.c try
11274         ;;
11275 esac
11276 set d_stdiobase
11277 eval $setvar
11278
11279 $cat >&4 <<EOM
11280 Checking how to access stdio streams by file descriptor number...
11281 EOM
11282 case "$stdio_stream_array" in
11283 '')     $cat >try.c <<EOCP
11284 #include <stdio.h>
11285 int main() {
11286   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11287     printf("yes\n");
11288 }
11289 EOCP
11290         for s in _iob __iob __sF
11291         do
11292                 set try -DSTDIO_STREAM_ARRAY=$s
11293                 if eval $compile; then
11294                         case "`./try$exe_ext`" in
11295                         yes)    stdio_stream_array=$s; break ;;
11296                         esac
11297                 fi
11298         done
11299         $rm -f try.* try$exe_ext
11300 esac
11301 case "$stdio_stream_array" in
11302 '')     $cat >&4 <<EOM
11303 I can't figure out how to access stdio streams by file descriptor number.
11304 EOM
11305         d_stdio_stream_array="$undef"
11306         ;;
11307 *)      $cat >&4 <<EOM
11308 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11309 EOM
11310         d_stdio_stream_array="$define"
11311         ;;
11312 esac
11313
11314 : see if strcoll exists
11315 set strcoll d_strcoll
11316 eval $inlibc
11317
11318 : check for structure copying
11319 echo " "
11320 echo "Checking to see if your C compiler can copy structs..." >&4
11321 $cat >try.c <<'EOCP'
11322 int main()
11323 {
11324         struct blurfl {
11325                 int dyick;
11326         } foo, bar;
11327
11328         foo = bar;
11329 }
11330 EOCP
11331 if $cc -c try.c >/dev/null 2>&1 ; then
11332         val="$define"
11333         echo "Yup, it can."
11334 else
11335         val="$undef"
11336         echo "Nope, it can't."
11337 fi
11338 set d_strctcpy
11339 eval $setvar
11340 $rm -f try.*
11341
11342 : see if strerror and/or sys_errlist[] exist
11343 echo " "
11344 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11345     if set strerror val -f d_strerror; eval $csym; $val; then
11346                 echo 'strerror() found.' >&4
11347                 d_strerror="$define"
11348                 d_strerrm='strerror(e)'
11349                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11350                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11351                         d_syserrlst="$define"
11352                 else
11353                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11354                         d_syserrlst="$undef"
11355                 fi
11356     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11357                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11358                 echo 'strerror() found in string header.' >&4
11359                 d_strerror="$define"
11360                 d_strerrm='strerror(e)'
11361                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11362                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11363                                 d_syserrlst="$define"
11364                 else
11365                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11366                         d_syserrlst="$undef"
11367                 fi
11368     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11369                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11370                 d_strerror="$undef"
11371                 d_syserrlst="$define"
11372                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11373     else
11374                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11375                 d_strerror="$undef"
11376                 d_syserrlst="$undef"
11377                 d_strerrm='"unknown"'
11378     fi
11379 fi
11380
11381 : see if strtod exists
11382 set strtod d_strtod
11383 eval $inlibc
11384
11385 : see if strtol exists
11386 set strtol d_strtol
11387 eval $inlibc
11388
11389 : see if strtold exists
11390 set strtold d_strtold
11391 eval $inlibc
11392
11393 : see if strtoll exists
11394 set strtoll d_strtoll
11395 eval $inlibc
11396
11397 : see if strtoul exists
11398 set strtoul d_strtoul
11399 eval $inlibc
11400
11401 : see if strtoull exists
11402 set strtoull d_strtoull
11403 eval $inlibc
11404
11405 : see if strtouq exists
11406 set strtouq d_strtouq
11407 eval $inlibc
11408
11409 : see if strxfrm exists
11410 set strxfrm d_strxfrm
11411 eval $inlibc
11412
11413 : see if symlink exists
11414 set symlink d_symlink
11415 eval $inlibc
11416
11417 : see if syscall exists
11418 set syscall d_syscall
11419 eval $inlibc
11420
11421 : see if sysconf exists
11422 set sysconf d_sysconf
11423 eval $inlibc
11424
11425 : see if system exists
11426 set system d_system
11427 eval $inlibc
11428
11429 : see if tcgetpgrp exists
11430 set tcgetpgrp d_tcgetpgrp
11431 eval $inlibc
11432
11433 : see if tcsetpgrp exists
11434 set tcsetpgrp d_tcsetpgrp
11435 eval $inlibc
11436
11437 : see if prototype for telldir is available
11438 echo " "
11439 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11440 eval $hasproto
11441
11442 : see if this is a sys/times.h system
11443 set sys/times.h i_systimes
11444 eval $inhdr
11445
11446 : see if times exists
11447 echo " "
11448 if set times val -f d_times; eval $csym; $val; then
11449         echo 'times() found.' >&4
11450         d_times="$define"
11451         inc=''
11452         case "$i_systimes" in
11453         "$define") inc='sys/times.h';;
11454         esac
11455         rp="What is the type returned by times() on this system?"
11456         set clock_t clocktype long stdio.h sys/types.h $inc
11457         eval $typedef_ask
11458 else
11459         echo 'times() NOT found, hope that will do.' >&4
11460         d_times="$undef"
11461         clocktype='int'
11462 fi
11463
11464 : see if truncate exists
11465 set truncate d_truncate
11466 eval $inlibc
11467
11468 : see if tzname[] exists
11469 echo " "
11470 if set tzname val -a d_tzname; eval $csym; $val; then
11471         val="$define"
11472         echo 'tzname[] found.' >&4
11473 else
11474         val="$undef"
11475         echo 'tzname[] NOT found.' >&4
11476 fi
11477 set d_tzname
11478 eval $setvar
11479
11480 : see if umask exists
11481 set umask d_umask
11482 eval $inlibc
11483
11484 : see if ustat exists
11485 set ustat d_ustat
11486 eval $inlibc
11487
11488 : backward compatibility for d_hvfork
11489 if test X$d_hvfork != X; then
11490         d_vfork="$d_hvfork"
11491         d_hvfork=''
11492 fi
11493 : see if there is a vfork
11494 val=''
11495 set vfork val
11496 eval $inlibc
11497
11498 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11499 : perl on Solaris 2.x, and probably elsewhere.
11500 case "$val" in
11501 $define)
11502         echo " "
11503         case "$usevfork" in
11504         false) dflt='n';;
11505         *) dflt='y';;
11506         esac
11507         cat <<'EOM'
11508  
11509 Perl can only use a vfork() that doesn't suffer from strict
11510 restrictions on calling functions or modifying global data in
11511 the child.  For example, glibc-2.1 contains such a vfork()
11512 that is unsuitable.  If your system provides a proper fork()
11513 call, chances are that you do NOT want perl to use vfork().
11514
11515 EOM
11516         rp="Do you still want to use vfork()?"
11517         . ./myread
11518         case "$ans" in
11519         y|Y) ;;
11520         *)
11521                 echo "Ok, we won't use vfork()."
11522                 val="$undef"
11523                 ;;
11524         esac
11525         ;;
11526 esac
11527 set d_vfork
11528 eval $setvar
11529 case "$d_vfork" in
11530 $define) usevfork='true';;
11531 *) usevfork='false';;
11532 esac
11533
11534 : see if this is an sysdir system
11535 set sys/dir.h i_sysdir
11536 eval $inhdr
11537
11538 : see if this is an sysndir system
11539 set sys/ndir.h i_sysndir
11540 eval $inhdr
11541
11542 : see if closedir exists
11543 set closedir d_closedir
11544 eval $inlibc
11545
11546 case "$d_closedir" in
11547 "$define")
11548         echo " "
11549         echo "Checking whether closedir() returns a status..." >&4
11550         cat > closedir.c <<EOM
11551 #$i_dirent I_DIRENT             /**/
11552 #$i_sysdir I_SYS_DIR            /**/
11553 #$i_sysndir I_SYS_NDIR          /**/
11554 #$i_systypes I_SYS_TYPES        /**/
11555
11556 #if defined(I_SYS_TYPES)
11557 #include <sys/types.h>
11558 #endif
11559 #if defined(I_DIRENT)
11560 #include <dirent.h>
11561 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11562 #include <sys/dir.h>
11563 #endif
11564 #else
11565 #ifdef I_SYS_NDIR
11566 #include <sys/ndir.h>
11567 #else
11568 #ifdef I_SYS_DIR
11569 #ifdef hp9000s500
11570 #include <ndir.h>       /* may be wrong in the future */
11571 #else
11572 #include <sys/dir.h>
11573 #endif
11574 #endif
11575 #endif
11576 #endif 
11577 int main() { return closedir(opendir(".")); }
11578 EOM
11579         set closedir
11580         if eval $compile_ok; then
11581                 if ./closedir > /dev/null 2>&1 ; then
11582                         echo "Yes, it does."
11583                         val="$undef"
11584                 else
11585                         echo "No, it doesn't."
11586                         val="$define"
11587                 fi
11588         else
11589                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11590                 val="$define"
11591         fi
11592         ;;
11593 *)
11594         val="$undef";
11595         ;;
11596 esac
11597 set d_void_closedir
11598 eval $setvar
11599 $rm -f closedir*
11600 : check for volatile keyword
11601 echo " "
11602 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11603 $cat >try.c <<'EOCP'
11604 int main()
11605 {
11606         typedef struct _goo_struct goo_struct;
11607         goo_struct * volatile goo = ((goo_struct *)0);
11608         struct _goo_struct {
11609                 long long_int;
11610                 int reg_int;
11611                 char char_var;
11612         };
11613         typedef unsigned short foo_t;
11614         char *volatile foo;
11615         volatile int bar;
11616         volatile foo_t blech;
11617         foo = foo;
11618 }
11619 EOCP
11620 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11621         val="$define"
11622         echo "Yup, it does."
11623 else
11624         val="$undef"
11625         echo "Nope, it doesn't."
11626 fi
11627 set d_volatile
11628 eval $setvar
11629 $rm -f try.*
11630
11631 : see if there is a wait4
11632 set wait4 d_wait4
11633 eval $inlibc
11634
11635 : see if waitpid exists
11636 set waitpid d_waitpid
11637 eval $inlibc
11638
11639 : see if wcstombs exists
11640 set wcstombs d_wcstombs
11641 eval $inlibc
11642
11643 : see if wctomb exists
11644 set wctomb d_wctomb
11645 eval $inlibc
11646
11647 : preserve RCS keywords in files with variable substitution, grrr
11648 Date='$Date'
11649 Id='$Id'
11650 Log='$Log'
11651 RCSfile='$RCSfile'
11652 Revision='$Revision'
11653
11654 case "$crosscompile" in
11655 ''|[nN]*) crosscompile="$undef" ;;
11656 esac
11657
11658 case "$osname" in
11659 next|rhapsody|darwin) multiarch="$define" ;;
11660 esac
11661 case "$multiarch" in
11662 ''|[nN]*) multiarch="$undef" ;;
11663 esac
11664
11665 : check for alignment requirements
11666 echo " "
11667 case "$crosscompile$multiarch" in
11668 *$define*)
11669         $cat <<EOM
11670 You seem to be either cross-compiling or doing a multiarchitecture build,
11671 skipping the memory alignment check.
11672
11673 EOM
11674         case "$alignbytes" in
11675         '') alignbytes=8 ;;
11676         esac
11677         ;;
11678 *)
11679         case "$alignbytes" in
11680         '') echo "Checking alignment constraints..." >&4
11681                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
11682                         $cat >try.c <<'EOCP'
11683 typedef long double NV;
11684 EOCP
11685                 else
11686                         $cat >try.c <<'EOCP'
11687 typedef double NV;
11688 EOCP
11689                 fi
11690                 $cat >>try.c <<'EOCP'
11691 #include <stdio.h>
11692 struct foobar {
11693         char foo;
11694         NV bar;
11695 } try_algn;
11696 int main()
11697 {
11698     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11699     return(0);
11700 }
11701 EOCP
11702                 set try
11703                 if eval $compile_ok; then
11704                         dflt=`./try`
11705                 else
11706                         dflt='8'
11707                         echo "(I can't seem to compile the test program...)"
11708                 fi
11709                 ;;
11710         *) dflt="$alignbytes"
11711                 ;;
11712         esac
11713         rp="Doubles must be aligned on a how-many-byte boundary?"
11714         . ./myread
11715         alignbytes="$ans"
11716         $rm -f try.c try
11717         ;;
11718 esac
11719
11720
11721 : set the base revision
11722 baserev=5.0
11723
11724 : check for ordering of bytes in a long
11725 echo " "
11726 case "$crosscompile$multiarch" in
11727 *$define*)
11728         $cat <<EOM
11729 You seem to be either cross-compiling or doing a multiarchitecture build,
11730 skipping the byteorder check.
11731
11732 EOM
11733         byteorder='0xffff'
11734         ;;
11735 *)
11736         case "$byteorder" in
11737         '')
11738                 $cat <<'EOM'
11739 In the following, larger digits indicate more significance.  A big-endian
11740 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11741 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11742 machines may have weird orders like 3412.  A Cray will report 87654321,
11743 an Alpha will report 12345678. If the test program works the default is
11744 probably right.
11745 I'm now running the test program...
11746 EOM
11747                 $cat >try.c <<'EOCP'
11748 #include <stdio.h>
11749 int main()
11750 {
11751         int i;
11752         union {
11753                 unsigned long l;
11754                 char c[sizeof(long)];
11755         } u;
11756
11757         if (sizeof(long) > 4)
11758                 u.l = (0x08070605L << 32) | 0x04030201L;
11759         else
11760                 u.l = 0x04030201L;
11761         for (i = 0; i < sizeof(long); i++)
11762                 printf("%c", u.c[i]+'0');
11763         printf("\n");
11764         exit(0);
11765 }
11766 EOCP
11767                 xxx_prompt=y
11768                 set try
11769                 if eval $compile && ./try > /dev/null; then
11770                         dflt=`./try`
11771                         case "$dflt" in
11772                         [1-4][1-4][1-4][1-4]|12345678|87654321)
11773                                 echo "(The test program ran ok.)"
11774                                 echo "byteorder=$dflt"
11775                                 xxx_prompt=n
11776                         ;;
11777                         ????|????????) echo "(The test program ran ok.)" ;;
11778                         *) echo "(The test program didn't run right for some reason.)" ;;
11779                         esac
11780                 else
11781                         dflt='4321'
11782                         cat <<'EOM'
11783 (I can't seem to compile the test program.  Guessing big-endian...)
11784 EOM
11785                 fi
11786                 case "$xxx_prompt" in
11787                 y)
11788                         rp="What is the order of bytes in a long?"
11789                         . ./myread
11790                         byteorder="$ans"
11791                         ;;
11792                 *)      byteorder=$dflt
11793                         ;;
11794                 esac
11795                 ;;
11796         esac
11797         $rm -f try.c try
11798         ;;
11799 esac
11800
11801
11802 : how do we catenate cpp tokens here?
11803 echo " "
11804 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11805 $cat >cpp_stuff.c <<'EOCP'
11806 #define RCAT(a,b)a/**/b
11807 #define ACAT(a,b)a ## b
11808 RCAT(Rei,ser)
11809 ACAT(Cir,cus)
11810 EOCP
11811 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
11812 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
11813         echo "Oh!  Smells like ANSI's been here." >&4
11814         echo "We can catify or stringify, separately or together!"
11815         cpp_stuff=42
11816 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
11817         echo "Ah, yes!  The good old days!" >&4
11818         echo "However, in the good old days we don't know how to stringify and"
11819         echo "catify at the same time."
11820         cpp_stuff=1
11821 else
11822         $cat >&4 <<EOM
11823 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
11824 to have to edit the values of CAT[2-5] in config.h...
11825 EOM
11826         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
11827 fi
11828 $rm -f cpp_stuff.*
11829
11830 : see if this is a db.h system
11831 set db.h i_db
11832 eval $inhdr
11833
11834 case "$i_db" in
11835 $define)
11836         : Check db version.
11837         echo " "
11838         echo "Checking Berkeley DB version ..." >&4
11839         $cat >try.c <<EOCP
11840 #$d_const HASCONST
11841 #ifndef HASCONST
11842 #define const
11843 #endif
11844 #include <sys/types.h>
11845 #include <stdio.h>
11846 #include <db.h>
11847 int main()
11848 {
11849 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
11850     int Major, Minor, Patch ;
11851     unsigned long Version ;
11852     (void)db_version(&Major, &Minor, &Patch) ;
11853     printf("You have Berkeley DB Version 2 or greater\n");
11854
11855     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
11856                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
11857     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
11858                 Major, Minor, Patch) ;
11859
11860     /* check that db.h & libdb are compatible */
11861     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
11862         printf("db.h and libdb are incompatible\n") ;
11863         exit(3);        
11864     }
11865
11866     printf("db.h and libdb are compatible\n") ;
11867
11868     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
11869                 + DB_VERSION_PATCH ;
11870
11871     /* needs to be >= 2.3.4 */
11872     if (Version < 2003004) {
11873     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
11874         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
11875         exit(2);        
11876     }
11877
11878     exit(0);
11879 #else
11880 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
11881     printf("You have Berkeley DB Version 1\n");
11882     exit(0);    /* DB version < 2: the coast is clear. */
11883 #else
11884     exit(1);    /* <db.h> not Berkeley DB? */
11885 #endif
11886 #endif
11887 }
11888 EOCP
11889         set try
11890         if eval $compile_ok && ./try; then
11891                 echo 'Looks OK.' >&4
11892         else
11893                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
11894                 i_db=$undef
11895                 case " $libs " in
11896                 *"-ldb "*)
11897                         : Remove db from list of libraries to use
11898                         echo "Removing unusable -ldb from library list" >&4
11899                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
11900                         shift
11901                         libs="$*"
11902                         echo "libs = $libs" >&4
11903                         ;;
11904                 esac
11905         fi
11906         $rm -f try.*
11907         ;;
11908 esac
11909
11910 case "$i_db" in
11911 define)
11912         : Check the return type needed for hash 
11913         echo " "
11914         echo "Checking return type needed for hash for Berkeley DB ..." >&4
11915         $cat >try.c <<EOCP
11916 #$d_const HASCONST
11917 #ifndef HASCONST
11918 #define const
11919 #endif
11920 #include <sys/types.h>
11921 #include <db.h>
11922
11923 #ifndef DB_VERSION_MAJOR
11924 u_int32_t hash_cb (ptr, size)
11925 const void *ptr;
11926 size_t size;
11927 {
11928 }
11929 HASHINFO info;
11930 int main()
11931 {
11932         info.hash = hash_cb;
11933 }
11934 #endif
11935 EOCP
11936         if $cc $ccflags -c try.c >try.out 2>&1 ; then
11937                 if $contains warning try.out >>/dev/null 2>&1 ; then
11938                         db_hashtype='int'
11939                 else
11940                         db_hashtype='u_int32_t'
11941                 fi
11942         else
11943                 : XXX Maybe we should just give up here.
11944                 db_hashtype=u_int32_t
11945                 $cat try.out >&4
11946                 echo "Help:  I can't seem to compile the db test program." >&4
11947                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
11948         fi
11949         $rm -f try.*
11950         echo "Your version of Berkeley DB uses $db_hashtype for hash."
11951         ;;
11952 *)      db_hashtype=u_int32_t
11953         ;;
11954 esac
11955 case "$i_db" in
11956 define)
11957         : Check the return type needed for prefix 
11958         echo " "
11959         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
11960         cat >try.c <<EOCP
11961 #$d_const HASCONST
11962 #ifndef HASCONST
11963 #define const
11964 #endif
11965 #include <sys/types.h>
11966 #include <db.h>
11967
11968 #ifndef DB_VERSION_MAJOR
11969 size_t prefix_cb (key1, key2)
11970 const DBT *key1;
11971 const DBT *key2;
11972 {
11973 }
11974 BTREEINFO info;
11975 int main()
11976 {
11977         info.prefix = prefix_cb;
11978 }
11979 #endif
11980 EOCP
11981         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
11982                 if $contains warning try.out >>/dev/null 2>&1 ; then
11983                         db_prefixtype='int'
11984                 else
11985                         db_prefixtype='size_t'
11986                 fi
11987         else
11988                 db_prefixtype='size_t'
11989                 : XXX Maybe we should just give up here.
11990                 $cat try.out >&4
11991                 echo "Help:  I can't seem to compile the db test program." >&4
11992                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
11993         fi
11994         $rm -f try.*
11995         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
11996         ;;
11997 *)      db_prefixtype='size_t'
11998         ;;
11999 esac
12000
12001 : check for void type
12002 echo " "
12003 echo "Checking to see how well your C compiler groks the void type..." >&4
12004 case "$voidflags" in
12005 '')
12006         $cat >try.c <<'EOCP'
12007 #if TRY & 1
12008 void sub() {
12009 #else
12010 sub() {
12011 #endif
12012         extern void moo();      /* function returning void */
12013         void (*goo)();          /* ptr to func returning void */
12014 #if TRY & 8
12015         void *hue;              /* generic ptr */
12016 #endif
12017 #if TRY & 2
12018         void (*foo[10])();
12019 #endif
12020
12021 #if TRY & 4
12022         if(goo == moo) {
12023                 exit(0);
12024         }
12025 #endif
12026         exit(0);
12027 }
12028 int main() { sub(); }
12029 EOCP
12030         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12031                 voidflags=$defvoidused
12032         echo "Good.  It appears to support void to the level $package wants.">&4
12033                 if $contains warning .out >/dev/null 2>&1; then
12034                         echo "However, you might get some warnings that look like this:"
12035                         $cat .out
12036                 fi
12037         else
12038 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12039                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12040                         echo "It supports 1..."
12041                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12042                                 echo "It also supports 2..."
12043                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12044                                         voidflags=7
12045                                         echo "And it supports 4 but not 8 definitely."
12046                                 else
12047                                         echo "It doesn't support 4..."
12048                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12049                                                 voidflags=11
12050                                                 echo "But it supports 8."
12051                                         else
12052                                                 voidflags=3
12053                                                 echo "Neither does it support 8."
12054                                         fi
12055                                 fi
12056                         else
12057                                 echo "It does not support 2..."
12058                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12059                                         voidflags=13
12060                                         echo "But it supports 4 and 8."
12061                                 else
12062                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12063                                                 voidflags=5
12064                                                 echo "And it supports 4 but has not heard about 8."
12065                                         else
12066                                                 echo "However it supports 8 but not 4."
12067                                         fi
12068                                 fi
12069                         fi
12070                 else
12071                         echo "There is no support at all for void."
12072                         voidflags=0
12073                 fi
12074         fi
12075 esac
12076 case "$voidflags" in
12077 "$defvoidused") ;;
12078 *)      $cat >&4 <<'EOM'
12079   Support flag bits are:
12080     1: basic void declarations.
12081     2: arrays of pointers to functions returning void.
12082     4: operations between pointers to and addresses of void functions.
12083     8: generic void pointers.
12084 EOM
12085         dflt="$voidflags";
12086         rp="Your void support flags add up to what?"
12087         . ./myread
12088         voidflags="$ans"
12089         ;;
12090 esac
12091 $rm -f try.* .out
12092
12093
12094 : How can we generate normalized random numbers ?
12095 echo " "
12096 echo "Looking for a random number function..." >&4
12097 case "$randfunc" in
12098 '')
12099         if set drand48 val -f; eval $csym; $val; then
12100                 dflt="drand48"
12101                 echo "Good, found drand48()." >&4
12102         elif set random val -f; eval $csym; $val; then
12103                 dflt="random"
12104                 echo "OK, found random()." >&4
12105         else
12106                 dflt="rand"
12107                 echo "Yick, looks like I have to use rand()." >&4
12108         fi
12109         echo " "
12110         ;;
12111 *)
12112         dflt="$randfunc"
12113         ;;
12114 esac
12115 cont=true
12116
12117 case "$ccflags" in
12118 *-Dmy_rand=*|*-Dmy_srand=*)
12119         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12120         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12121         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12122         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12123         ;;
12124 esac
12125
12126 while $test "$cont"; do
12127         rp="Use which function to generate random numbers?"
12128         . ./myread
12129         if $test "$ans" = "$dflt"; then
12130                 : null
12131         else
12132                 randbits=''
12133         fi
12134         randfunc="$ans"
12135         if set $ans val -f; eval $csym; $val; then
12136                 cont=''
12137         else
12138                 dflt=y
12139                 rp="I cannot find function $ans. Use that name anyway?"
12140                 . ./myread
12141                 dflt=rand
12142                 case "$ans" in
12143                         [yY]*) cont='';;
12144                 esac
12145         fi
12146         case "$cont" in
12147         '')
12148                 case "$randfunc" in
12149                 drand48)
12150                         drand01="drand48()"
12151                         seedfunc="srand48"
12152                         randbits=48
12153                         randseedtype=long
12154                         ;;
12155                 rand|random)
12156                         case "$randbits" in
12157                         '')
12158 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12159                                 $cat >try.c <<EOCP
12160 #$i_unistd I_UNISTD
12161 #$i_stdlib I_STDLIB
12162 #include <stdio.h>
12163 #ifdef I_UNISTD
12164 #  include <unistd.h>
12165 #endif
12166 #ifdef I_STDLIB
12167 #  include <stdlib.h>
12168 #endif
12169 int main()
12170 {
12171         register int i;
12172         register unsigned long tmp;
12173         register unsigned long max = 0L;
12174
12175         for (i = 1000; i; i--) {
12176                 tmp = (unsigned long) $randfunc();
12177                 if (tmp > max) max = tmp;
12178         }
12179         for (i = 0; max; i++)
12180                 max /= 2;
12181         printf("%d\n",i);
12182 }
12183 EOCP
12184                                 set try
12185                                 if eval $compile_ok; then
12186                                         dflt=`try`
12187                                 else
12188                                         dflt='?'
12189                                         echo "(I can't seem to compile the test program...)"
12190                                 fi
12191                                 ;;
12192                         *)
12193                                 dflt="$randbits"
12194                                 ;;
12195                         esac
12196                         rp="How many bits does your $randfunc() function produce?"
12197                         . ./myread
12198                         randbits="$ans"
12199                         $rm -f try.c try
12200                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12201                         seedfunc="s$randfunc"
12202                         randseedtype=unsigned
12203                         ;;
12204                 *)
12205                         dflt="31"
12206                         rp="How many bits does your $randfunc() function produce?"
12207                         . ./myread
12208                         randbits="$ans"
12209                         seedfunc="s$randfunc"
12210                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12211                         if set $seedfunc val -f; eval $csym; $val; then
12212                                 echo "(Using $seedfunc() to seed random generator)"
12213                         else
12214                                 echo "(Warning: no $seedfunc() to seed random generator)"
12215                                 seedfunc=rand
12216                         fi
12217                         randseedtype=unsigned
12218                         ;;
12219                 esac
12220                 ;;
12221         esac
12222 done
12223
12224 echo " "
12225 echo "Determining whether or not we are on an EBCDIC system..." >&4
12226 $cat >tebcdic.c <<'EOM'
12227 int main()
12228 {
12229   if ('M'==0xd4) return 0;
12230   return 1;
12231 }
12232 EOM
12233
12234 val=$undef
12235 set tebcdic
12236 if eval $compile_ok; then
12237         if ./tebcdic; then
12238                 echo "You have EBCDIC." >&4
12239                 val="$define"
12240         else
12241                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12242         fi
12243 else
12244         echo "I'm unable to compile the test program." >&4
12245         echo "I'll assume ASCII or some ISO Latin." >&4
12246 fi
12247 $rm -f tebcdic.c tebcdic
12248 set ebcdic
12249 eval $setvar
12250
12251 echo " "
12252 $cat >&4 <<EOM
12253 Checking how to flush all pending stdio output...
12254 EOM
12255 # I only know how to find the first 32 possibly open files on SunOS.
12256 # See also hints/sunos_4_1.sh and util.c  --AD
12257 case "$osname" in
12258 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12259 esac
12260 $cat >>try.c <<EOCP
12261 #include <stdio.h>
12262 #$i_unistd I_UNISTD
12263 #ifdef I_UNISTD
12264 # include <unistd.h>
12265 #endif
12266 #$d_sysconf HAS_SYSCONF
12267 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12268 #ifdef HAS_STDIO_STREAM_ARRAY
12269 # define STDIO_STREAM_ARRAY $stdio_stream_array
12270 #endif
12271 int main() {
12272   FILE* p = fopen("try.out", "w");
12273 #ifdef TRY_FPUTC
12274   fputc('x', p);
12275 #else
12276 # ifdef TRY_FPRINTF
12277   fprintf(p, "x");
12278 # endif
12279 #endif
12280 #ifdef TRY_FFLUSH_NULL
12281   fflush(NULL);
12282 #endif
12283 #ifdef TRY_FFLUSH_ALL
12284   {
12285     long open_max = -1;
12286 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12287     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12288 # else
12289 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12290     open_max = sysconf(_SC_OPEN_MAX);
12291 #  else
12292 #   ifdef FOPEN_MAX
12293     open_max = FOPEN_MAX;
12294 #   else
12295 #    ifdef OPEN_MAX
12296     open_max = OPEN_MAX;
12297 #    else
12298 #     ifdef _NFILE
12299     open_max = _NFILE;
12300 #     endif
12301 #    endif
12302 #   endif
12303 #  endif
12304 # endif 
12305 # ifdef HAS_STDIO_STREAM_ARRAY
12306     if (open_max > 0) {
12307       long i;
12308       for (i = 0; i < open_max; i++)
12309             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12310                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12311                 STDIO_STREAM_ARRAY[i]._flag)
12312                 fflush(&STDIO_STREAM_ARRAY[i]);
12313     }   
12314   }
12315 # endif
12316 #endif
12317   _exit(42);
12318 }
12319 EOCP
12320 : first we have to find out how _not_ to flush
12321 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12322     output=''
12323     set try -DTRY_FPUTC
12324     if eval $compile; then
12325             $rm -f try.out
12326             ./try$exe_ext 2>/dev/null
12327             if $test ! -s try.out -a "X$?" = X42; then
12328                 output=-DTRY_FPUTC
12329             fi
12330     fi
12331     case "$output" in
12332     '')
12333             set try -DTRY_FPRINTF
12334             $rm -f try.out
12335             if eval $compile; then
12336                     $rm -f try.out
12337                     ./try$exe_ext 2>/dev/null
12338                     if $test ! -s try.out -a "X$?" = X42; then
12339                         output=-DTRY_FPRINTF
12340                     fi
12341             fi
12342         ;;
12343     esac
12344 fi
12345 : check for fflush NULL behaviour
12346 case "$fflushNULL" in
12347 '')     set try -DTRY_FFLUSH_NULL $output
12348         if eval $compile; then
12349                 $rm -f try.out
12350                 ./try$exe_ext 2>/dev/null
12351                 code="$?"
12352                 if $test -s try.out -a "X$code" = X42; then
12353                         fflushNULL="`$cat try.out`"
12354                 else
12355                         if $test "X$code" != X42; then
12356                                 $cat >&4 <<EOM
12357 (If this test failed, don't worry, we'll try another method shortly.)
12358 EOM
12359                         fi
12360                 fi
12361         fi
12362         $rm -f core try.core core.try.*
12363         case "$fflushNULL" in
12364         x)      $cat >&4 <<EOM
12365 Your fflush(NULL) works okay.
12366 EOM
12367                 fflushNULL="$define"
12368                 ;;
12369         '')     $cat >&4 <<EOM
12370 Your fflush(NULL) isn't working (contrary to ANSI C).
12371 EOM
12372                 fflushNULL="$undef"
12373                 ;;
12374         *)      $cat >&4 <<EOM
12375 Cannot figure out whether your fflush(NULL) works or not.
12376 I'm assuming it doesn't (contrary to ANSI C).
12377 EOM
12378                 fflushNULL="$undef"
12379                 ;;
12380         esac
12381         ;;
12382 $define|true|[yY]*)
12383         fflushNULL="$define"
12384         ;;
12385 *)
12386         fflushNULL="$undef"
12387         ;;
12388 esac
12389 : check explicit looping only if NULL did not work
12390 case "$fflushNULL" in
12391 "$undef")
12392         : check for fflush all behaviour
12393         case "$fflushall" in
12394         '')     set try -DTRY_FFLUSH_ALL $output
12395                 if eval $compile; then
12396                         $cat >&4 <<EOM
12397 (Now testing the other method--but note that also this may fail.)
12398 EOM
12399                         $rm -f try.out
12400                         ./try$exe_ext 2>/dev/null
12401                         if $test -s try.out -a "X$?" = X42; then
12402                                 fflushall="`$cat try.out`"
12403                         fi
12404                 fi
12405                 $rm -f core try.core core.try.*
12406                 case "$fflushall" in
12407                 x)      $cat >&4 <<EOM
12408 Whew. Flushing explicitly all the stdio streams works.
12409 EOM
12410                         fflushall="$define"
12411                         ;;
12412                 '')     $cat >&4 <<EOM
12413 Sigh. Flushing explicitly all the stdio streams doesn't work.
12414 EOM
12415                         fflushall="$undef"
12416                         ;;
12417                 *)      $cat >&4 <<EOM
12418 Cannot figure out whether flushing stdio streams explicitly works or not.
12419 I'm assuming it doesn't.
12420 EOM
12421                         fflushall="$undef"
12422                         ;;
12423                 esac
12424                 ;;
12425         "$define"|true|[yY]*)
12426                 fflushall="$define"
12427                 ;;
12428         *)
12429                 fflushall="$undef"
12430                 ;;
12431         esac
12432         ;;
12433 *)      fflushall="$undef"      
12434         ;;
12435 esac
12436 case "$fflushNULL$fflushall" in
12437 undefundef)
12438         $cat <<EOM
12439 I cannot figure out how to flush pending stdio output.
12440 EOM
12441         ;;
12442 esac
12443 $rm -f try.* try$exe_ext
12444
12445 : Store the full pathname to the ar program for use in the C program
12446 : Respect a hint or command line value for full_ar.
12447 case "$full_ar" in
12448 '') full_ar=$ar ;;
12449 esac
12450
12451 : Store the full pathname to the sed program for use in the C program
12452 full_sed=$sed
12453
12454 : see what type gids are declared as in the kernel
12455 echo " "
12456 echo "Looking for the type for group ids returned by getgid()."
12457 set gid_t gidtype xxx stdio.h sys/types.h
12458 eval $typedef
12459 case "$gidtype" in
12460 xxx)
12461         xxx=`./findhdr sys/user.h`
12462         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12463         case $1 in
12464         unsigned) dflt="$1 $2" ;;
12465         *) dflt="$1" ;;
12466         esac
12467         ;;
12468 *) dflt="$gidtype";;
12469 esac
12470 case "$gidtype" in
12471 gid_t) echo "gid_t found." ;;
12472 *)      rp="What is the type for group ids returned by getgid()?"
12473         . ./myread
12474         gidtype="$ans"
12475         ;;
12476 esac
12477
12478 echo " "
12479 case "$gidtype" in
12480 *_t) zzz="$gidtype"     ;;
12481 *)   zzz="gid"          ;;
12482 esac
12483 echo "Checking the size of $zzz..." >&4 
12484 cat > try.c <<EOCP
12485 #include <sys/types.h>
12486 #include <stdio.h>
12487 int main() {
12488     printf("%d\n", (int)sizeof($gidtype));
12489     exit(0);
12490 }
12491 EOCP
12492 set try
12493 if eval $compile_ok; then
12494         yyy=`./try`
12495         case "$yyy" in
12496         '')     gidsize=4
12497                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12498                 ;;
12499         *)      gidsize=$yyy
12500                 echo "Your $zzz is $gidsize bytes long."
12501                 ;;
12502         esac
12503 else
12504         gidsize=4
12505         echo "(I can't compile the test program--guessing $gidsize.)" >&4
12506 fi
12507
12508
12509 echo " "
12510 case "$gidtype" in
12511 *_t) zzz="$gidtype"     ;;
12512 *)   zzz="gid"          ;;
12513 esac
12514 echo "Checking the sign of $zzz..." >&4 
12515 cat > try.c <<EOCP
12516 #include <sys/types.h>
12517 #include <stdio.h>
12518 int main() {
12519         $gidtype foo = -1;
12520         if (foo < 0)
12521                 printf("-1\n");
12522         else
12523                 printf("1\n");
12524 }
12525 EOCP
12526 set try
12527 if eval $compile; then
12528         yyy=`./try`
12529         case "$yyy" in
12530         '')     gidsign=1
12531                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12532                 ;;
12533         *)      gidsign=$yyy
12534                 case "$gidsign" in
12535                  1) echo "Your $zzz is unsigned." ;;
12536                 -1) echo "Your $zzz is signed."   ;;
12537                 esac
12538                 ;;
12539         esac
12540 else
12541         gidsign=1
12542         echo "(I can't compile the test program--guessing unsigned.)" >&4
12543 fi
12544
12545
12546 echo " "
12547
12548 if $test X"$quadtype" != X; then
12549
12550 echo "Checking how to print 64-bit integers..." >&4
12551
12552 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12553         $cat >try.c <<'EOCP'
12554 #include <sys/types.h>
12555 #include <stdio.h>
12556 int main() {
12557   int q = 12345678901;
12558   printf("%ld\n", q);
12559 }
12560 EOCP
12561         set try
12562         if eval $compile; then
12563                 yyy=`./try$exe_ext`
12564                 case "$yyy" in
12565                 12345678901)
12566                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12567                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12568                         echo "We will use %d."
12569                         ;;
12570                 esac
12571         fi
12572 fi
12573
12574 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12575         $cat >try.c <<'EOCP'
12576 #include <sys/types.h>
12577 #include <stdio.h>
12578 int main() {
12579   long q = 12345678901;
12580   printf("%ld\n", q);
12581 }
12582 EOCP
12583         set try
12584         if eval $compile; then
12585                 yyy=`./try$exe_ext`
12586                 case "$yyy" in
12587                 12345678901)
12588                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12589                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12590                         echo "We will use %ld."
12591                         ;;
12592                 esac
12593         fi
12594 fi
12595
12596 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12597         $cat >try.c <<'EOCP'
12598 #include <sys/types.h>
12599 #include <inttypes.h>
12600 #include <stdio.h>
12601 int main() {
12602   int64_t q = 12345678901;
12603   printf("%" PRId64 "\n", q);
12604 }
12605 EOCP
12606         set try
12607         if eval $compile; then
12608                 yyy=`./try$exe_ext`
12609                 case "$yyy" in
12610                 12345678901)
12611                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12612                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12613                         echo "We will use the C9X style."
12614                         ;;
12615                 esac
12616         fi
12617 fi
12618
12619 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12620         $cat >try.c <<'EOCP'
12621 #include <sys/types.h>
12622 #include <stdio.h>
12623 int main() {
12624   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12625   printf("%lld\n", q);
12626 }
12627 EOCP
12628         set try
12629         if eval $compile; then
12630                 yyy=`./try$exe_ext`
12631                 case "$yyy" in
12632                 12345678901)
12633                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12634                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12635                         echo "We will use the %lld style."
12636                         ;;
12637                 esac
12638         fi
12639 fi
12640
12641 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12642         $cat >try.c <<EOCP
12643 #include <sys/types.h>
12644 #include <stdio.h>
12645 int main() {
12646   $quadtype q = 12345678901;
12647   printf("%Ld\n", q);
12648 }
12649 EOCP
12650         set try
12651         if eval $compile; then
12652                 yyy=`./try$exe_ext`
12653                 case "$yyy" in
12654                 12345678901)
12655                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12656                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12657                         echo "We will use %Ld."
12658                         ;;
12659                 esac
12660         fi
12661 fi
12662
12663 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12664         $cat >try.c <<EOCP
12665 #include <sys/types.h>
12666 #include <stdio.h>
12667 int main() {
12668   $quadtype q = 12345678901;
12669   printf("%qd\n", q);
12670 }
12671 EOCP
12672         set try
12673         if eval $compile; then
12674                 yyy=`./try$exe_ext`
12675                 case "$yyy" in
12676                 12345678901)
12677                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12678                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12679                         echo "We will use %qd."
12680                         ;;
12681                 esac
12682         fi
12683 fi
12684
12685 if $test X"$sPRId64" = X; then
12686         echo "Cannot figure out how to print 64-bit integers." >&4
12687 fi
12688
12689 $rm -f try try.*
12690
12691 fi
12692
12693 case "$sPRId64" in
12694 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
12695         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
12696         ;;
12697 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
12698         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
12699         ;;
12700 esac
12701
12702
12703 echo " "
12704 $echo "Checking the format strings to be used for Perl's internal types..." >&4
12705
12706 if $test X"$ivsize" = X8; then
12707         ivdformat="$sPRId64"
12708         uvuformat="$sPRIu64"
12709         uvoformat="$sPRIo64"
12710         uvxformat="$sPRIx64"
12711 else
12712         if $test X"$ivsize" = X"$longsize"; then
12713                 ivdformat='"ld"'
12714                 uvuformat='"lu"'
12715                 uvoformat='"lo"'
12716                 uvxformat='"lx"'
12717         else
12718                 if $test X"$ivsize" = X"$intsize"; then
12719                         ivdformat='"d"'
12720                         uvuformat='"u"'
12721                         uvoformat='"o"'
12722                         uvxformat='"x"'
12723                 else
12724                         : far out
12725                         if $test X"$ivsize" = X"$shortsize"; then
12726                                 ivdformat='"hd"'
12727                                 uvuformat='"hu"'
12728                                 uvoformat='"ho"'
12729                                 uvxformat='"hx"'
12730                         fi
12731                 fi
12732         fi
12733 fi
12734
12735 case "$ivdformat" in
12736 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
12737     exit 1
12738     ;;
12739 esac
12740
12741
12742 echo " "
12743 $echo "Checking the format string to be used for gids..." >&4
12744
12745 case "$gidsign" in
12746 -1)     if $test X"$gidsize" = X"$ivsize"; then
12747                 gidformat="$ivdformat"
12748         else
12749                 if $test X"$gidsize" = X"$longsize"; then
12750                         gidformat='"ld"'
12751                 else
12752                         if $test X"$gidsize" = X"$intsize"; then
12753                                 gidformat='"d"'
12754                         else
12755                                 if $test X"$gidsize" = X"$shortsize"; then
12756                                         gidformat='"hd"'
12757                                 fi
12758                         fi
12759                 fi
12760         fi
12761         ;;
12762 *)      if $test X"$gidsize" = X"$uvsize"; then
12763                 gidformat="$uvuformat"
12764         else
12765                 if $test X"$gidsize" = X"$longsize"; then
12766                         gidformat='"lu"'
12767                 else
12768                         if $test X"$gidsize" = X"$intsize"; then
12769                                 gidformat='"u"'
12770                         else
12771                                 if $test X"$gidsize" = X"$shortsize"; then
12772                                         gidformat='"hu"'
12773                                 fi
12774                         fi
12775                 fi
12776         fi
12777         ;;
12778 esac
12779
12780 : see if getgroups exists
12781 set getgroups d_getgrps
12782 eval $inlibc
12783
12784 : see if setgroups exists
12785 set setgroups d_setgrps
12786 eval $inlibc
12787
12788
12789 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
12790 echo " "
12791 case "$d_getgrps$d_setgrps" in
12792 *define*)
12793         case "$groupstype" in
12794         '') dflt="$gidtype" ;;
12795         *)  dflt="$groupstype" ;;
12796         esac
12797         $cat <<EOM
12798 What type of pointer is the second argument to getgroups() and setgroups()?
12799 Usually this is the same as group ids, $gidtype, but not always.
12800
12801 EOM
12802         rp='What type pointer is the second argument to getgroups() and setgroups()?'
12803         . ./myread
12804         groupstype="$ans"
12805         ;;
12806 *)  groupstype="$gidtype";;
12807 esac
12808
12809 echo " "
12810 echo "Checking if your $make program sets \$(MAKE)..." >&4
12811 case "$make_set_make" in
12812 '')
12813         $sed 's/^X //' > testmake.mak << 'EOF'
12814 Xall:
12815 X       @echo 'maketemp="$(MAKE)"'
12816 EOF
12817         case "`$make -f testmake.mak 2>/dev/null`" in
12818         *maketemp=*) make_set_make='#' ;;
12819         *)      make_set_make="MAKE=$make" ;;
12820         esac
12821         $rm -f testmake.mak
12822         ;;
12823 esac
12824 case "$make_set_make" in
12825 '#') echo "Yup, it does.";;
12826 *) echo "Nope, it doesn't.";;
12827 esac
12828
12829 : see what type is used for mode_t
12830 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
12831 set mode_t modetype int stdio.h sys/types.h
12832 eval $typedef_ask
12833
12834 : define a fucntion to check prototypes
12835 $cat > protochk <<EOSH
12836 $startsh
12837 cc="$cc"
12838 optimize="$optimize"
12839 ccflags="$ccflags"
12840 prototype="$prototype"
12841 define="$define"
12842 rm=$rm
12843 EOSH
12844
12845 $cat >> protochk <<'EOSH'
12846
12847 $rm -f try.c
12848 foo="$1"
12849 shift
12850 while test $# -ge 2; do
12851         case "$1" in
12852                 $define) echo "#include <$2>" >> try.c ;;
12853                 literal) echo "$2" >> try.c ;;
12854         esac
12855     shift 2
12856 done
12857 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
12858 cat >> try.c <<'EOCP'
12859 #ifdef CAN_PROTOTYPE
12860 #define _(args) args
12861 #else
12862 #define _(args) ()
12863 #endif
12864 EOCP
12865 echo "$foo" >> try.c
12866 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
12867 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
12868 status=$?
12869 $rm -f try.[co]
12870 exit $status
12871 EOSH
12872 chmod +x protochk
12873 $eunicefix protochk
12874
12875 : see what type is used for size_t
12876 rp="What is the type used for the length parameter for string functions?"
12877 set size_t sizetype 'unsigned int' stdio.h sys/types.h
12878 eval $typedef_ask
12879
12880 : check for type of arguments to gethostbyaddr. 
12881 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
12882         case "$d_gethbyaddr" in
12883         $define)
12884                 $cat <<EOM
12885
12886 Checking to see what type of arguments are accepted by gethostbyaddr().
12887 EOM
12888                 hdrs="$define sys/types.h
12889                         $d_socket sys/socket.h 
12890                         $i_niin netinet/in.h 
12891                         $i_netdb netdb.h
12892                         $i_unistd unistd.h"
12893                 : The first arg can 'char *' or 'void *'
12894                 : The second arg is some of integral type
12895                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
12896                         for yyy in size_t long int; do
12897                                 case "$netdb_host_type" in
12898                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
12899                                         if ./protochk "$try" $hdrs; then
12900                                                 echo "Your system accepts $xxx for the first arg."
12901                                                 echo "...and $yyy for the second arg."
12902                                                 netdb_host_type="$xxx"
12903                                                 netdb_hlen_type="$yyy"
12904                                         fi
12905                                         ;;
12906                                 esac
12907                         done
12908                 done
12909                 : In case none of those worked, prompt the user.
12910                 case "$netdb_host_type" in
12911                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
12912                         dflt='char *'
12913                         . ./myread
12914                         netdb_host_type=$ans
12915                         rp='What is the type for the 2nd argument to gethostbyaddr?'
12916                         dflt="$sizetype"
12917                         . ./myread
12918                         netdb_hlen_type=$ans
12919                         ;;
12920                 esac
12921                 ;;
12922         *)      : no gethostbyaddr, so pick harmless defaults
12923                 netdb_host_type='char *'
12924                 netdb_hlen_type="$sizetype"
12925                 ;;
12926         esac
12927         # Remove the "const" if needed. -- but then we'll have a 
12928         # prototype clash!
12929         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
12930 fi
12931
12932 : check for type of argument to gethostbyname. 
12933 if test "X$netdb_name_type" = X ; then
12934         case "$d_gethbyname" in
12935         $define)
12936                 $cat <<EOM
12937
12938 Checking to see what type of argument is accepted by gethostbyname().
12939 EOM
12940                 hdrs="$define sys/types.h
12941                         $d_socket sys/socket.h 
12942                         $i_niin netinet/in.h 
12943                         $i_netdb netdb.h
12944                         $i_unistd unistd.h"
12945                 for xxx in "const char *" "char *"; do
12946                         case "$netdb_name_type" in
12947                         '')     try="extern struct hostent *gethostbyname($xxx);"
12948                                 if ./protochk "$try" $hdrs; then
12949                                         echo "Your system accepts $xxx."
12950                                         netdb_name_type="$xxx"
12951                                 fi
12952                                 ;;
12953                         esac
12954                 done
12955                 : In case none of those worked, prompt the user.
12956                 case "$netdb_name_type" in
12957                 '')     rp='What is the type for the 1st argument to gethostbyname?'
12958                         dflt='char *'
12959                         . ./myread
12960                         netdb_name_type=$ans
12961                         ;;
12962                 esac
12963                 ;;
12964         *)      : no gethostbyname, so pick harmless default
12965                 netdb_name_type='char *'
12966                 ;;
12967         esac
12968 fi
12969
12970 : check for type of 1st argument to getnetbyaddr. 
12971 if test "X$netdb_net_type" = X ; then
12972         case "$d_getnbyaddr" in
12973         $define)
12974                 $cat <<EOM
12975
12976 Checking to see what type of 1st argument is accepted by getnetbyaddr().
12977 EOM
12978                 hdrs="$define sys/types.h
12979                         $d_socket sys/socket.h 
12980                         $i_niin netinet/in.h 
12981                         $i_netdb netdb.h
12982                         $i_unistd unistd.h"
12983                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
12984                         case "$netdb_net_type" in
12985                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
12986                                 if ./protochk "$try" $hdrs; then
12987                                         echo "Your system accepts $xxx."
12988                                         netdb_net_type="$xxx"
12989                                 fi
12990                                 ;;
12991                         esac
12992                 done
12993                 : In case none of those worked, prompt the user.
12994                 case "$netdb_net_type" in
12995                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
12996                         dflt='long'
12997                         . ./myread
12998                         netdb_net_type=$ans
12999                         ;;
13000                 esac
13001                 ;;
13002         *)      : no getnetbyaddr, so pick harmless default
13003                 netdb_net_type='long'
13004                 ;;
13005         esac
13006 fi
13007 : locate the preferred pager for this system
13008 case "$pager" in
13009 '')
13010         dflt=''
13011         case "$pg" in
13012         /*) dflt=$pg;;
13013         esac
13014         case "$more" in
13015         /*) dflt=$more;;
13016         esac
13017         case "$less" in
13018         /*) dflt=$less;;
13019         esac
13020         case "$dflt" in
13021         '') dflt=/usr/ucb/more;;
13022         esac
13023         ;;
13024 *) dflt="$pager";;
13025 esac
13026 echo " "
13027 fn=f/
13028 rp='What pager is used on your system?'
13029 . ./getfile
13030 pager="$ans"
13031
13032 : see what type pids are declared as in the kernel
13033 rp="What is the type of process ids on this system?"
13034 set pid_t pidtype int stdio.h sys/types.h
13035 eval $typedef_ask
13036
13037 : Find earliest binary compatible site_perl subdirectory perl can use.
13038 case "$bincompat5005" in
13039 "$define") xs_apiversion='5.005' ;;
13040 *) xs_apiversion=$version ;;   # The current site_perl version.
13041 esac
13042 : Find earliest pure perl site_perl subdirectory perl can use.
13043 : The versioned directories started at 5.005.
13044 pm_apiversion='5.005'
13045
13046 : check for length of pointer
13047 echo " "
13048 case "$ptrsize" in
13049 '')
13050         echo "Checking to see how big your pointers are..." >&4
13051         if test "$voidflags" -gt 7; then
13052                 echo '#define VOID_PTR char *' > try.c
13053         else
13054                 echo '#define VOID_PTR void *' > try.c
13055         fi
13056         $cat >>try.c <<'EOCP'
13057 #include <stdio.h>
13058 int main()
13059 {
13060     printf("%d\n", (int)sizeof(VOID_PTR));
13061     exit(0);
13062 }
13063 EOCP
13064         set try
13065         if eval $compile_ok; then
13066                 ptrsize=`./try`
13067                 echo "Your pointers are $ptrsize bytes long."
13068         else
13069                 dflt='4'
13070                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
13071                 rp="What is the size of a pointer (in bytes)?"
13072                 . ./myread
13073                 ptrsize="$ans"
13074         fi
13075         ;;
13076 esac
13077 $rm -f try.c try
13078
13079 : see if ar generates random libraries by itself
13080 echo " "
13081 echo "Checking how to generate random libraries on your machine..." >&4
13082 echo 'int bar1() { return bar2(); }' > bar1.c
13083 echo 'int bar2() { return 2; }' > bar2.c
13084 $cat > foo.c <<'EOP'
13085 int main() { printf("%d\n", bar1()); exit(0); }
13086 EOP
13087 $cc $ccflags -c bar1.c >/dev/null 2>&1
13088 $cc $ccflags -c bar2.c >/dev/null 2>&1
13089 $cc $ccflags -c foo.c >/dev/null 2>&1
13090 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13091 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13092         ./foobar >/dev/null 2>&1; then
13093         echo "$ar appears to generate random libraries itself."
13094         orderlib=false
13095         ranlib=":"
13096 elif $ar ts bar$_a >/dev/null 2>&1 &&
13097         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13098         ./foobar >/dev/null 2>&1; then
13099                 echo "a table of contents needs to be added with '$ar ts'."
13100                 orderlib=false
13101                 ranlib="$ar ts"
13102 else
13103         case "$ranlib" in
13104         :) ranlib='';;
13105         '')
13106                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13107                 $test -f $ranlib || ranlib=''
13108                 ;;
13109         esac
13110         if $test -n "$ranlib"; then
13111                 echo "your system has '$ranlib'; we'll use that."
13112                 orderlib=false
13113         else
13114                 echo "your system doesn't seem to support random libraries"
13115                 echo "so we'll use lorder and tsort to order the libraries."
13116                 orderlib=true
13117                 ranlib=":"
13118         fi
13119 fi
13120 $rm -f foo* bar* 
13121
13122 : check for type of arguments to select. 
13123 case "$selecttype" in
13124 '') case "$d_select" in
13125         $define)
13126                 echo " "
13127                 $cat <<EOM
13128 Checking to see what type of arguments are accepted by select().
13129 EOM
13130                 hdrs="$define sys/types.h
13131                         $i_systime sys/time.h 
13132                         $i_sysselct sys/select.h
13133                         $d_socket sys/socket.h"
13134                 : The first arg can be int, unsigned, or size_t
13135                 : The last arg may or may not be 'const'
13136                 val=''
13137                 : void pointer has been seen but using that
13138                 : breaks the selectminbits test
13139                 for xxx in 'fd_set *' 'int *'; do
13140                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13141                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
13142                                         case "$val" in
13143                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13144                                                 if ./protochk "$try" $hdrs; then
13145                                                         echo "Your system accepts $xxx."
13146                                                         val="$xxx"
13147                                                 fi
13148                                                 ;;
13149                                         esac
13150                                 done
13151                         done
13152                 done
13153                 case "$val" in
13154                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13155                         case "$d_fd_set" in
13156                                 $define) dflt="fd_set *" ;;
13157                                 *)              dflt="int *" ;;
13158                         esac
13159                         . ./myread
13160                         val=$ans
13161                         ;;
13162                 esac
13163                 selecttype="$val"
13164                 ;;
13165         *)      : no select, so pick a harmless default
13166                 selecttype='int *'
13167                 ;;
13168         esac
13169         ;;
13170 esac
13171
13172 : check for the select 'width'
13173 case "$selectminbits" in
13174 '') case "$d_select" in
13175         $define)
13176                 $cat <<EOM
13177
13178 Checking to see on how many bits at a time your select() operates...
13179 EOM
13180                 $cat >try.c <<EOCP
13181 #include <sys/types.h>
13182 #$i_time I_TIME
13183 #$i_systime I_SYS_TIME
13184 #$i_systimek I_SYS_TIME_KERNEL
13185 #ifdef I_TIME
13186 #   include <time.h>
13187 #endif
13188 #ifdef I_SYS_TIME
13189 #   ifdef I_SYS_TIME_KERNEL
13190 #       define KERNEL
13191 #   endif
13192 #   include <sys/time.h>
13193 #   ifdef I_SYS_TIME_KERNEL
13194 #       undef KERNEL
13195 #   endif
13196 #endif
13197 #$i_sysselct I_SYS_SELECT
13198 #ifdef I_SYS_SELECT
13199 #include <sys/select.h>
13200 #endif
13201 #$d_socket HAS_SOCKET
13202 #ifdef HAS_SOCKET
13203 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13204 #endif
13205 #include <stdio.h>
13206 $selecttype b;
13207 #define S sizeof(*(b))
13208 #define MINBITS 64
13209 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13210 #define NBITS  (NBYTES * 8)
13211 int main() {
13212     char s[NBYTES];
13213     struct timeval t;
13214     int i;
13215     FILE* fp;
13216     int fd;
13217
13218     fclose(stdin);
13219     fp = fopen("try.c", "r");
13220     if (fp == 0)
13221       exit(1);
13222     fd = fileno(fp);
13223     if (fd < 0)
13224       exit(2);
13225     b = ($selecttype)s;
13226     for (i = 0; i < NBITS; i++)
13227         FD_SET(i, b);
13228     t.tv_sec  = 0;
13229     t.tv_usec = 0;
13230     select(fd + 1, b, 0, 0, &t);
13231     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13232     printf("%d\n", i + 1);
13233     return 0;
13234 }
13235 EOCP
13236                 set try
13237                 if eval $compile_ok; then
13238                         selectminbits=`./try`
13239                         case "$selectminbits" in
13240                         '')     cat >&4 <<EOM
13241 Cannot figure out on how many bits at a time your select() operates.
13242 I'll play safe and guess it is 32 bits.
13243 EOM
13244                                 selectminbits=32
13245                                 bits="32 bits"
13246                                 ;;
13247                         1)      bits="1 bit" ;;
13248                         *)      bits="$selectminbits bits" ;;
13249                         esac
13250                         echo "Your select() operates on $bits at a time." >&4
13251                 else
13252                         rp='What is the minimum number of bits your select() operates on?'
13253                         case "$byteorder" in
13254                         1234|12345678)  dflt=32 ;;
13255                         *)              dflt=1  ;;
13256                         esac
13257                         . ./myread
13258                         val=$ans
13259                         selectminbits="$val"
13260                 fi
13261                 $rm -f try.* try
13262                 ;;
13263         *)      : no select, so pick a harmless default
13264                 selectminbits='32'
13265                 ;;
13266         esac
13267         ;;
13268 esac
13269
13270 : Trace out the files included by signal.h, then look for SIGxxx names.
13271 : Remove SIGARRAYSIZE used by HPUX.
13272 : Remove SIGSTKSIZE used by Linux.
13273 : Remove SIGSTKSZ used by Posix.
13274 : Remove SIGTYP void lines used by OS2.
13275 : Some cpps, like os390, dont give the file name anywhere
13276 if [ "X$fieldn" = X ]; then
13277         : Just make some guesses.  We check them later.
13278         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13279 else
13280         xxx=`echo '#include <signal.h>' |
13281         $cppstdin $cppminus $cppflags 2>/dev/null |
13282         $grep '^[       ]*#.*include' | 
13283         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13284 fi
13285 : Check this list of files to be sure we have parsed the cpp output ok.
13286 : This will also avoid potentially non-existent files, such 
13287 : as ../foo/bar.h
13288 xxxfiles=''
13289 for xx in $xxx /dev/null ; do
13290         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13291 done
13292 : If we have found no files, at least try signal.h
13293 case "$xxxfiles" in
13294 '')     xxxfiles=`./findhdr signal.h` ;;
13295 esac
13296 xxx=`awk '
13297 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13298         print substr($2, 4, 20)
13299 }
13300 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13301         print substr($3, 4, 20)
13302 }' $xxxfiles`
13303 : Append some common names just in case the awk scan failed.
13304 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13305 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13306 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13307 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13308 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13309
13310 : generate a few handy files for later
13311 $cat > signal.c <<'EOCP'
13312 #include <sys/types.h>
13313 #include <signal.h>
13314 #include <stdio.h>
13315 int main() {
13316
13317 /* Strange style to avoid deeply-nested #if/#else/#endif */
13318 #ifndef NSIG
13319 #  ifdef _NSIG
13320 #    define NSIG (_NSIG)
13321 #  endif
13322 #endif
13323
13324 #ifndef NSIG
13325 #  ifdef SIGMAX
13326 #    define NSIG (SIGMAX+1)
13327 #  endif
13328 #endif
13329
13330 #ifndef NSIG
13331 #  ifdef SIG_MAX
13332 #    define NSIG (SIG_MAX+1)
13333 #  endif
13334 #endif
13335
13336 #ifndef NSIG
13337 #  ifdef MAXSIG
13338 #    define NSIG (MAXSIG+1)
13339 #  endif
13340 #endif
13341
13342 #ifndef NSIG
13343 #  ifdef MAX_SIG
13344 #    define NSIG (MAX_SIG+1)
13345 #  endif
13346 #endif
13347
13348 #ifndef NSIG
13349 #  ifdef SIGARRAYSIZE
13350 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13351 #  endif
13352 #endif
13353
13354 #ifndef NSIG
13355 #  ifdef _sys_nsig
13356 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13357 #  endif
13358 #endif
13359
13360 /* Default to some arbitrary number that's big enough to get most
13361    of the common signals.
13362 */
13363 #ifndef NSIG
13364 #    define NSIG 50
13365 #endif
13366
13367 printf("NSIG %d\n", NSIG);
13368
13369 #ifndef JUST_NSIG
13370
13371 EOCP
13372
13373 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13374 {
13375         printf "#ifdef SIG"; printf $1; printf "\n"
13376         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13377         printf $1; printf ");\n"
13378         printf "#endif\n"
13379 }
13380 END {
13381         printf "#endif /* JUST_NSIG */\n";
13382         printf "exit(0);\n}\n";
13383 }
13384 ' >>signal.c
13385 $cat >signal.awk <<'EOP'
13386 BEGIN { ndups = 0 }
13387 $1 ~ /^NSIG$/ { nsig = $2 }
13388 ($1 !~ /^NSIG$/) && (NF == 2) {
13389     if ($2 > maxsig) { maxsig = $2 }
13390     if (sig_name[$2]) {
13391         dup_name[ndups] = $1
13392         dup_num[ndups] = $2
13393         ndups++ 
13394     }
13395     else {
13396         sig_name[$2] = $1
13397         sig_num[$2] = $2
13398     }
13399 }
13400 END { 
13401     if (nsig == 0) {
13402         nsig = maxsig + 1
13403     }
13404     printf("NSIG %d\n", nsig);
13405     for (n = 1; n < nsig; n++) {
13406         if (sig_name[n]) {
13407             printf("%s %d\n", sig_name[n], sig_num[n])
13408         }
13409         else {
13410             printf("NUM%d %d\n", n, n) 
13411         }
13412     }
13413     for (n = 0; n < ndups; n++) {
13414         printf("%s %d\n", dup_name[n], dup_num[n])
13415     }
13416 }
13417 EOP
13418 $cat >signal_cmd <<EOS
13419 $startsh
13420 if $test -s signal.lst; then
13421     echo "Using your existing signal.lst file"
13422         exit 0
13423 fi
13424 xxx="$xxx"
13425 EOS
13426 $cat >>signal_cmd <<'EOS'
13427
13428 set signal
13429 if eval $compile_ok; then
13430         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13431 else
13432         echo "(I can't seem be able to compile the whole test program)" >&4
13433         echo "(I'll try it in little pieces.)" >&4
13434         set signal -DJUST_NSIG
13435         if eval $compile_ok; then
13436                 ./signal$_exe > signal.nsg
13437                 $cat signal.nsg
13438         else
13439                 echo "I can't seem to figure out how many signals you have." >&4
13440                 echo "Guessing 50." >&4
13441                 echo 'NSIG 50' > signal.nsg
13442         fi
13443         : Now look at all the signal names, one at a time.
13444         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13445                 $cat > signal.c <<EOCP
13446 #include <sys/types.h>
13447 #include <signal.h>
13448 #include <stdio.h>
13449 int main() {
13450 printf("$xx %d\n", SIG${xx});
13451 return 0;
13452 }
13453 EOCP
13454                 set signal
13455                 if eval $compile; then
13456                         echo "SIG${xx} found."
13457                         ./signal$_exe  >> signal.ls1
13458                 else
13459                         echo "SIG${xx} NOT found."
13460                 fi
13461         done
13462         if $test -s signal.ls1; then
13463                 $cat signal.nsg signal.ls1 |
13464                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13465         fi
13466
13467 fi
13468 if $test -s signal.lst; then
13469         :
13470 else
13471         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13472         echo 'kill -l' >signal
13473         set X `csh -f <signal`
13474         $rm -f signal
13475         shift
13476         case $# in
13477         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13478         esac
13479         echo $@ | $tr ' ' $trnl | \
13480             $awk '{ printf "%s %d\n", $1, ++s; }
13481                   END { printf "NSIG %d\n", ++s }' >signal.lst
13482 fi
13483 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13484 EOS
13485 chmod a+x signal_cmd
13486 $eunicefix signal_cmd
13487
13488 : generate list of signal names
13489 echo " "
13490 case "$sig_name_init" in
13491 '') doinit=yes ;;
13492 *)  case "$sig_num_init" in
13493     ''|*,*) doinit=yes ;;
13494     esac ;;
13495 esac
13496 case "$doinit" in
13497 yes)
13498         echo "Generating a list of signal names and numbers..." >&4
13499         . ./signal_cmd
13500         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13501         sig_name=`$awk 'BEGIN { printf "ZERO " }
13502                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13503         sig_num=`$awk  'BEGIN { printf "0 " }
13504                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13505         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
13506                              !/^NSIG/   { printf "\"%s\", ", $1 }
13507                              END        { printf "0\n" }' signal.lst`
13508         sig_num_init=`$awk  'BEGIN      { printf "0, " }
13509                              !/^NSIG/   { printf "%d, ", $2}
13510                              END        { printf "0\n"}' signal.lst`
13511         ;;
13512 esac
13513 echo "The following $sig_count signals are available:"
13514 echo " "
13515 echo $sig_name | $awk \
13516 'BEGIN { linelen = 0 }
13517 {
13518         for (i = 1; i <= NF; i++) {
13519                 name = "SIG" $i " "
13520                 linelen = linelen + length(name)
13521                 if (linelen > 70) {
13522                         printf "\n"
13523                         linelen = length(name)
13524                 }
13525                 printf "%s", name
13526         }
13527         printf "\n"
13528 }'
13529 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
13530
13531 : check for socklen_t
13532 echo " "
13533 echo "Checking to see if you have socklen_t..." >&4
13534 $cat >try.c <<EOCP
13535 #include <sys/types.h>
13536 #$d_socket HAS_SOCKET
13537 #ifdef HAS_SOCKET
13538 #include <sys/socket.h>
13539 #endif
13540 int main() { socklen_t x = 16; }
13541 EOCP
13542 set try
13543 if eval $compile; then
13544         val="$define"
13545         echo "You have socklen_t."
13546 else
13547         val="$undef"
13548         echo "You do not have socklen_t."
13549         case "$sizetype" in
13550         size_t) echo "(You do have size_t, that might work.)" ;;
13551         esac
13552 fi
13553 $rm -f try try.*
13554 set d_socklen_t
13555 eval $setvar
13556
13557 : check for type of the size argument to socket calls
13558 case "$d_socket" in
13559 "$define")
13560         $cat <<EOM
13561
13562 Checking to see what type is the last argument of accept().
13563 EOM
13564         hdrs="$define sys/types.h $d_socket sys/socket.h" 
13565         yyy=''
13566         case "$d_socklen_t" in
13567         "$define") yyy="$yyy socklen_t"
13568         esac
13569         yyy="$yyy $sizetype int long"
13570         for xxx in $yyy; do
13571                 case "$socksizetype" in
13572                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
13573                         if ./protochk "$try" $hdrs; then
13574                                 echo "Your system accepts '$xxx *' for the last argument of accept()."
13575                                 socksizetype="$xxx"
13576                         fi
13577                         ;;
13578                 esac
13579         done
13580 : In case none of those worked, prompt the user.
13581         case "$socksizetype" in
13582         '')     rp='What is the type for the last argument to accept()?'
13583                 dflt='int'
13584                 . ./myread
13585                 socksizetype=$ans
13586                 ;;
13587         esac
13588         ;;
13589 *)      : no sockets, so pick relatively harmless defaults
13590         socksizetype='char *'
13591         ;;
13592 esac
13593
13594 : see what type is used for signed size_t
13595 set ssize_t ssizetype int stdio.h sys/types.h
13596 eval $typedef
13597 dflt="$ssizetype"
13598 $cat > ssize.c <<EOM
13599 #include <stdio.h>
13600 #include <sys/types.h>
13601 #define Size_t $sizetype
13602 #define SSize_t $dflt
13603 int main()
13604 {
13605         if (sizeof(Size_t) == sizeof(SSize_t))
13606                 printf("$dflt\n");
13607         else if (sizeof(Size_t) == sizeof(int))
13608                 printf("int\n");
13609         else 
13610                 printf("long\n");
13611         exit(0);
13612 }
13613 EOM
13614 echo " "
13615 set ssize
13616 if eval $compile_ok && ./ssize > /dev/null; then
13617         ssizetype=`./ssize`
13618         echo "I'll be using $ssizetype for functions returning a byte count." >&4
13619 else
13620         $cat >&4 <<EOM
13621 Help! I can't compile and run the ssize_t test program: please enlighten me!
13622 (This is probably a misconfiguration in your system or libraries, and
13623 you really ought to fix it.  Still, I'll try anyway.)
13624
13625 I need a type that is the same size as $sizetype, but is guaranteed to
13626 be signed.  Common values are ssize_t, int and long.
13627
13628 EOM
13629         rp="What signed type is the same size as $sizetype?"
13630         . ./myread
13631         ssizetype="$ans"
13632 fi
13633 $rm -f ssize ssize.*
13634
13635 : see what type of char stdio uses.
13636 echo " "
13637 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13638         echo "Your stdio uses unsigned chars." >&4
13639         stdchar="unsigned char"
13640 else
13641         echo "Your stdio uses signed chars." >&4
13642         stdchar="char"
13643 fi
13644
13645 : see if time exists
13646 echo " "
13647 if test "X$d_time" = X -o X"$timetype" = X; then
13648     if set time val -f d_time; eval $csym; $val; then
13649                 echo 'time() found.' >&4
13650                 val="$define"
13651                 rp="What is the type returned by time() on this system?"
13652                 set time_t timetype long stdio.h sys/types.h
13653                 eval $typedef_ask
13654     else
13655                 echo 'time() not found, hope that will do.' >&4
13656                 val="$undef"
13657                 timetype='int';
13658     fi
13659     set d_time
13660     eval $setvar
13661 fi
13662
13663 : see what type uids are declared as in the kernel
13664 echo " "
13665 echo "Looking for the type for user ids returned by getuid()."
13666 set uid_t uidtype xxx stdio.h sys/types.h
13667 eval $typedef
13668 case "$uidtype" in
13669 xxx)
13670         xxx=`./findhdr sys/user.h`
13671         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13672         case $1 in
13673         unsigned) dflt="$1 $2" ;;
13674         *) dflt="$1" ;;
13675         esac
13676         ;;
13677 *) dflt="$uidtype";;
13678 esac
13679 case "$uidtype" in
13680 uid_t)  echo "uid_t found." ;;
13681 *)      rp="What is the type for user ids returned by getuid()?"
13682         . ./myread
13683         uidtype="$ans"
13684         ;;
13685 esac
13686
13687 echo " "
13688 case "$uidtype" in
13689 *_t) zzz="$uidtype"     ;;
13690 *)   zzz="uid"          ;;
13691 esac
13692 echo "Checking the size of $zzz..." >&4 
13693 cat > try.c <<EOCP
13694 #include <sys/types.h>
13695 #include <stdio.h>
13696 int main() {
13697     printf("%d\n", (int)sizeof($uidtype));
13698     exit(0);
13699 }
13700 EOCP
13701 set try
13702 if eval $compile_ok; then
13703         yyy=`./try`
13704         case "$yyy" in
13705         '')     uidsize=4
13706                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
13707                 ;;
13708         *)      uidsize=$yyy
13709                 echo "Your $zzz is $uidsize bytes long."
13710                 ;;
13711         esac
13712 else
13713         uidsize=4
13714         echo "(I can't compile the test program--guessing $uidsize.)" >&4
13715 fi
13716
13717 echo " "
13718 case "$uidtype" in
13719 *_t) zzz="$uidtype"     ;;
13720 *)   zzz="uid"          ;;
13721 esac
13722 echo "Checking the sign of $zzz..." >&4
13723 cat > try.c <<EOCP
13724 #include <sys/types.h>
13725 #include <stdio.h>
13726 int main() {
13727         $uidtype foo = -1;
13728         if (foo < 0)
13729                 printf("-1\n");
13730         else
13731                 printf("1\n");
13732 }
13733 EOCP
13734 set try
13735 if eval $compile; then
13736         yyy=`./try`
13737         case "$yyy" in
13738         '')     uidsign=1
13739                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13740                 ;;
13741         *)      uidsign=$yyy
13742                 case "$uidsign" in
13743                  1) echo "Your $zzz is unsigned." ;;
13744                 -1) echo "Your $zzz is signed."   ;;
13745                 esac
13746                 ;;
13747         esac
13748 else
13749         uidsign=1
13750         echo "(I can't compile the test program--guessing unsigned.)" >&4
13751 fi
13752
13753
13754
13755 echo " "
13756 $echo "Checking the format string to be used for uids..." >&4
13757
13758 case "$uidsign" in
13759 -1)     if $test X"$uidsize" = X"$ivsize"; then
13760                 uidformat="$ivdformat"
13761         else
13762                 if $test X"$uidsize" = X"$longsize"; then
13763                         uidformat='"ld"'
13764                 else
13765                         if $test X"$uidsize" = X"$intsize"; then
13766                                 uidformat='"d"'
13767                         else
13768                                 if $test X"$uidsize" = X"$shortsize"; then
13769                                         uidformat='"hd"'
13770                                 fi
13771                         fi
13772                 fi
13773         fi
13774         ;;
13775 *)      if $test X"$uidsize" = X"$uvsize"; then
13776                 uidformat="$uvuformat"
13777         else
13778                 if $test X"$uidsize" = X"$longsize"; then
13779                         uidformat='"lu"'
13780                 else
13781                         if $test X"$uidsize" = X"$intsize"; then
13782                                 uidformat='"u"'
13783                         else
13784                                 if $test X"$uidsize" = X"$shortsize"; then
13785                                         uidformat='"hu"'
13786                                 fi
13787                         fi
13788                 fi
13789         fi
13790         ;;
13791 esac
13792
13793 : see if dbm.h is available
13794 : see if dbmclose exists
13795 set dbmclose d_dbmclose
13796 eval $inlibc
13797
13798 case "$d_dbmclose" in
13799 $define)
13800         set dbm.h i_dbm
13801         eval $inhdr
13802         case "$i_dbm" in
13803         $define)
13804                 val="$undef"
13805                 set i_rpcsvcdbm
13806                 eval $setvar
13807                 ;;
13808         *)      set rpcsvc/dbm.h i_rpcsvcdbm
13809                 eval $inhdr
13810                 ;;
13811         esac
13812         ;;
13813 *)      echo "We won't be including <dbm.h>"
13814         val="$undef"
13815         set i_dbm
13816         eval $setvar
13817         val="$undef"
13818         set i_rpcsvcdbm
13819         eval $setvar
13820         ;;
13821 esac
13822
13823 : see if this is a sys/file.h system
13824 val=''
13825 set sys/file.h val
13826 eval $inhdr
13827
13828 : do we need to include sys/file.h ?
13829 case "$val" in
13830 "$define")
13831         echo " "
13832         if $h_sysfile; then
13833                 val="$define"
13834                 echo "We'll be including <sys/file.h>." >&4
13835         else
13836                 val="$undef"
13837                 echo "We won't be including <sys/file.h>." >&4
13838         fi
13839         ;;
13840 *)
13841         h_sysfile=false
13842         ;;
13843 esac
13844 set i_sysfile
13845 eval $setvar
13846
13847 : see if fcntl.h is there
13848 val=''
13849 set fcntl.h val
13850 eval $inhdr
13851
13852 : see if we can include fcntl.h
13853 case "$val" in
13854 "$define")
13855         echo " "
13856         if $h_fcntl; then
13857                 val="$define"
13858                 echo "We'll be including <fcntl.h>." >&4
13859         else
13860                 val="$undef"
13861                 if $h_sysfile; then
13862         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
13863                 else
13864                         echo "We won't be including <fcntl.h>." >&4
13865                 fi
13866         fi
13867         ;;
13868 *)
13869         h_fcntl=false
13870         val="$undef"
13871         ;;
13872 esac
13873 set i_fcntl
13874 eval $setvar
13875
13876 : see if this is a iconv.h system
13877 set iconv.h i_iconv
13878 eval $inhdr
13879
13880 : see if locale.h is available
13881 set locale.h i_locale
13882 eval $inhdr
13883
13884 : see if mach cthreads are available
13885 if test "X$usethreads" = "X$define"; then
13886         set mach/cthreads.h i_machcthr
13887         eval $inhdr
13888 else
13889         i_machcthr="$undef"
13890 fi
13891
13892
13893
13894 : see if this is a math.h system
13895 set math.h i_math
13896 eval $inhdr
13897
13898 : see if this is a mntent.h system
13899 set mntent.h i_mntent
13900 eval $inhdr
13901
13902 : see if ndbm.h is available
13903 set ndbm.h t_ndbm
13904 eval $inhdr
13905 case "$t_ndbm" in
13906 $define)
13907         : see if dbm_open exists
13908         set dbm_open d_dbm_open
13909         eval $inlibc
13910         case "$d_dbm_open" in
13911         $undef)
13912                 t_ndbm="$undef"
13913                 echo "We won't be including <ndbm.h>"
13914                 ;;
13915         esac
13916         ;;
13917 esac
13918 val="$t_ndbm"
13919 set i_ndbm
13920 eval $setvar
13921
13922 : see if net/errno.h is available
13923 val=''
13924 set net/errno.h val
13925 eval $inhdr
13926
13927 : Unfortunately, it causes problems on some systems.  Arrgh.
13928 case "$val" in
13929 $define)
13930         cat > try.c <<'EOM'
13931 #include <stdio.h>
13932 #include <errno.h>
13933 #include <net/errno.h>
13934 int func()
13935 {
13936         return ENOTSOCK;
13937 }
13938 EOM
13939         if $cc $ccflags -c try.c >/dev/null 2>&1; then
13940                 echo "We'll be including <net/errno.h>." >&4
13941         else
13942                 echo "We won't be including <net/errno.h>." >&4
13943                 val="$undef"
13944         fi
13945         $rm -f try.* try
13946         ;;
13947 esac
13948 set i_neterrno
13949 eval $setvar
13950
13951 : see if netinet/tcp.h is available
13952 set netinet/tcp.h i_netinettcp
13953 eval $inhdr
13954
13955 : see if this is a poll.h system
13956 set poll.h i_poll
13957 eval $inhdr
13958
13959 echo " "
13960 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
13961 $cat <<'EOSH' > Cppsym.know
13962 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
13963 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
13964 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
13965 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
13966 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
13967 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
13968 bull c cadmus clipper CMU COFF COMPILER_VERSION
13969 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
13970 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
13971 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
13972 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
13973 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
13974 H3050R H3050RX hbullx20 hcx host_mips
13975 hp200 hp300 hp700 HP700 hp800 hp9000
13976 hp9000s200 hp9000s300 hp9000s400 hp9000s500
13977 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
13978 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
13979 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
13980 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
13981 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
13982 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
13983 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
13984 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
13985 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
13986 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
13987 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
13988 MATH_HAS_NO_SIDE_EFFECTS
13989 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
13990 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
13991 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
13992 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
13993 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
13994 NetBSD news1500 news1700 news1800 news1900 news3700
13995 news700 news800 news900 NeXT NLS ns16000 ns32000
13996 ns32016 ns32332 ns32k nsc32000
13997 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
13998 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
13999 pc532 pdp11 PGC PIC plexus PORTAR posix
14000 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14001 POSIX_C_SOURCE POSIX_SOURCE POWER
14002 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14003 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14004 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14005 sony sony_news sonyrisc sparc sparclite spectrum
14006 stardent stdc STDC_EXT stratos sun sun3 sun386
14007 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14008 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14009 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14010 sysV68 sysV88 Tek4132 Tek4300 titan
14011 tower tower32 tower32_200 tower32_600 tower32_700
14012 tower32_800 tower32_850 tss
14013 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14014 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14015 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14016 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14017 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14018 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14019 z8000
14020 EOSH
14021 # Maybe put other stuff here too.
14022 cat <<EOSH >>Cppsym.know
14023 $osname
14024 EOSH
14025 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14026 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14027 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
14028 $rm -f Cppsym.a Cppsym.b
14029 cat <<EOSH > Cppsym
14030 $startsh
14031 if $test \$# -gt 0; then
14032     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14033     if $test -s Cppsym.got; then
14034         $rm -f Cppsym.got
14035         exit 0
14036     fi
14037     $rm -f Cppsym.got
14038     exit 1
14039 else
14040     $tr " " "$trnl" | ./Cppsym.try
14041     exit 0
14042 fi
14043 EOSH
14044 chmod +x Cppsym
14045 $eunicefix Cppsym
14046 cat <<EOSH > Cppsym.try
14047 $startsh
14048 cat <<'EOCP' > try.c
14049 #include <stdio.h>
14050 int main() {
14051 EOCP
14052 $awk \\
14053 EOSH
14054 cat <<'EOSH' >> Cppsym.try
14055 'length($1) > 0 {
14056     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
14057     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
14058     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
14059     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
14060 }'       >> try.c
14061 echo '}' >> try.c
14062 EOSH
14063 cat <<EOSH >> Cppsym.try
14064 ccflags="$ccflags"
14065 case "$osname-$gccversion" in
14066 irix-) ccflags="\$ccflags -woff 1178" ;;
14067 esac
14068 $cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14069 EOSH
14070 chmod +x Cppsym.try
14071 $eunicefix Cppsym.try
14072 ./Cppsym < Cppsym.know > Cppsym.true
14073 : now check the C compiler for additional symbols
14074 postprocess_cc_v=''
14075 case "$osname" in
14076 aix) postprocess_cc_v="|$tr , ' '" ;;
14077 esac
14078 $cat >ccsym <<EOS
14079 $startsh
14080 $cat >tmp.c <<EOF
14081 extern int foo;
14082 EOF
14083 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14084 do
14085         case "\$i" in
14086         -D*) echo "\$i" | $sed 's/^-D//';;
14087         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14088         esac
14089 done
14090 $rm -f try.c
14091 EOS
14092 postprocess_cc_v=''
14093 chmod +x ccsym
14094 $eunicefix ccsym
14095 ./ccsym > ccsym1.raw
14096 if $test -s ccsym1.raw; then
14097        $sort ccsym1.raw | $uniq >ccsym.raw
14098 else
14099        mv ccsym1.raw ccsym.raw
14100 fi
14101
14102 $awk '/\=/ { print $0; next }
14103         { print $0"=1" }' ccsym.raw >ccsym.list
14104 $awk '/\=/ { print $0; next }
14105         { print $0"=1" }' Cppsym.true >ccsym.true
14106 $comm -13 ccsym.true ccsym.list >ccsym.own
14107 $comm -12 ccsym.true ccsym.list >ccsym.com
14108 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14109 also=''
14110 if $test -z ccsym.raw; then
14111         echo "Your C compiler doesn't seem to define any symbols!" >&4
14112         echo " "
14113         echo "However, your C preprocessor defines the following symbols:"
14114         $cat Cppsym.true
14115         ccsymbols=''
14116         cppsymbols=`$cat Cppsym.true`
14117         cppsymbols=`echo $cppsymbols`
14118         cppccsymbols="$cppsymbols"
14119 else
14120         if $test -s ccsym.com; then
14121                 echo "Your C compiler and pre-processor define these symbols:"
14122                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
14123                 also='also '
14124                 symbols='ones'
14125                 cppccsymbols=`$cat ccsym.com`
14126                 cppccsymbols=`echo $cppccsymbols`
14127                 $test "$silent" || sleep 1
14128         fi
14129         if $test -s ccsym.cpp; then
14130                 $test "$also" && echo " "
14131                 echo "Your C pre-processor ${also}defines the following symbols:"
14132                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
14133                 also='further '
14134                 cppsymbols=`$cat ccsym.cpp`
14135                 cppsymbols=`echo $cppsymbols`
14136                 $test "$silent" || sleep 1
14137         fi
14138         if $test -s ccsym.own; then
14139                 $test "$also" && echo " "
14140                 echo "Your C compiler ${also}defines the following cpp symbols:"
14141                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
14142                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14143                 ccsymbols=`$cat ccsym.own`
14144                 ccsymbols=`echo $ccsymbols`
14145                 $test "$silent" || sleep 1
14146         fi
14147 fi
14148 $rm -f ccsym*
14149
14150 : see if this is a termio system
14151 val="$undef"
14152 val2="$undef"
14153 val3="$undef"
14154 if $test `./findhdr termios.h`; then
14155         set tcsetattr i_termios
14156         eval $inlibc
14157         val3="$i_termios"
14158 fi
14159 echo " "
14160 case "$val3" in
14161 "$define") echo "You have POSIX termios.h... good!" >&4;;
14162 *) if ./Cppsym pyr; then
14163                 case "`/bin/universe`" in
14164                 ucb) if $test `./findhdr sgtty.h`; then
14165                                 val2="$define"
14166                                 echo "<sgtty.h> found." >&4
14167                         else
14168                                 echo "System is pyramid with BSD universe."
14169                                 echo "<sgtty.h> not found--you could have problems." >&4
14170                         fi;;
14171                 *) if $test `./findhdr termio.h`; then
14172                                 val="$define"
14173                                 echo "<termio.h> found." >&4
14174                         else
14175                                 echo "System is pyramid with USG universe."
14176                                 echo "<termio.h> not found--you could have problems." >&4
14177                         fi;;
14178                 esac
14179         elif ./usg; then
14180                 if $test `./findhdr termio.h`; then
14181                         echo "<termio.h> found." >&4
14182                         val="$define"
14183                 elif $test `./findhdr sgtty.h`; then
14184                         echo "<sgtty.h> found." >&4
14185                         val2="$define"
14186                 else
14187 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14188                 fi
14189         else
14190                 if $test `./findhdr sgtty.h`; then
14191                         echo "<sgtty.h> found." >&4
14192                         val2="$define"
14193                 elif $test `./findhdr termio.h`; then
14194                         echo "<termio.h> found." >&4
14195                         val="$define"
14196                 else
14197 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14198                 fi
14199         fi;;
14200 esac
14201 set i_termio; eval $setvar
14202 val=$val2; set i_sgtty; eval $setvar
14203 val=$val3; set i_termios; eval $setvar
14204
14205 : see if this is a shadow.h system
14206 set shadow.h i_shadow
14207 eval $inhdr
14208
14209 : see if this is a socks.h system
14210 set socks.h i_socks
14211 eval $inhdr
14212
14213 : see if stdarg is available
14214 echo " "
14215 if $test `./findhdr stdarg.h`; then
14216         echo "<stdarg.h> found." >&4
14217         valstd="$define"
14218 else
14219         echo "<stdarg.h> NOT found." >&4
14220         valstd="$undef"
14221 fi
14222
14223 : see if varags is available
14224 echo " "
14225 if $test `./findhdr varargs.h`; then
14226         echo "<varargs.h> found." >&4
14227 else
14228         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14229 fi
14230
14231 : set up the varargs testing programs
14232 $cat > varargs.c <<EOP
14233 #ifdef I_STDARG
14234 #include <stdarg.h>
14235 #endif
14236 #ifdef I_VARARGS
14237 #include <varargs.h>
14238 #endif
14239
14240 #ifdef I_STDARG
14241 int f(char *p, ...)
14242 #else
14243 int f(va_alist)
14244 va_dcl
14245 #endif
14246 {
14247         va_list ap;
14248 #ifndef I_STDARG
14249         char *p;
14250 #endif
14251 #ifdef I_STDARG
14252         va_start(ap,p);
14253 #else
14254         va_start(ap);
14255         p = va_arg(ap, char *);
14256 #endif
14257         va_end(ap);
14258 }
14259 EOP
14260 $cat > varargs <<EOP
14261 $startsh
14262 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14263         echo "true"
14264 else
14265         echo "false"
14266 fi
14267 $rm -f varargs$_o
14268 EOP
14269 chmod +x varargs
14270
14271 : now check which varargs header should be included
14272 echo " "
14273 i_varhdr=''
14274 case "$valstd" in
14275 "$define")
14276         if `./varargs I_STDARG`; then
14277                 val='stdarg.h'
14278         elif `./varargs I_VARARGS`; then
14279                 val='varargs.h'
14280         fi
14281         ;;
14282 *)
14283         if `./varargs I_VARARGS`; then
14284                 val='varargs.h'
14285         fi
14286         ;;
14287 esac
14288 case "$val" in
14289 '')
14290 echo "I could not find the definition for va_dcl... You have problems..." >&4
14291         val="$undef"; set i_stdarg; eval $setvar
14292         val="$undef"; set i_varargs; eval $setvar
14293         ;;
14294 *) 
14295         set i_varhdr
14296         eval $setvar
14297         case "$i_varhdr" in
14298         stdarg.h)
14299                 val="$define"; set i_stdarg; eval $setvar
14300                 val="$undef"; set i_varargs; eval $setvar
14301                 ;;
14302         varargs.h)
14303                 val="$undef"; set i_stdarg; eval $setvar
14304                 val="$define"; set i_varargs; eval $setvar
14305                 ;;
14306         esac
14307         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14308 esac
14309 $rm -f varargs*
14310
14311 : see if stddef is available
14312 set stddef.h i_stddef
14313 eval $inhdr
14314
14315 : see if sys/access.h is available
14316 set sys/access.h i_sysaccess
14317 eval $inhdr
14318
14319 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14320 set sys/filio.h i_sysfilio
14321 eval $inhdr
14322 echo " "
14323 if $test `./findhdr sys/ioctl.h`; then
14324         val="$define"
14325         echo '<sys/ioctl.h> found.' >&4
14326 else
14327         val="$undef"
14328         if $test $i_sysfilio = "$define"; then
14329             echo '<sys/ioctl.h> NOT found.' >&4
14330         else
14331                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14332                 $test $i_termio = "$define" && xxx="termio.h"
14333                 $test $i_termios = "$define" && xxx="termios.h"
14334 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14335         fi
14336 fi
14337 set i_sysioctl
14338 eval $setvar
14339
14340
14341 : see if this is a syslog.h system
14342 set syslog.h i_syslog
14343 eval $inhdr
14344
14345
14346 : see if this is a sys/mode.h system
14347 set sys/mode.h i_sysmode
14348 eval $inhdr
14349
14350 : see if sys/resource.h has to be included
14351 set sys/resource.h i_sysresrc
14352 eval $inhdr
14353
14354 : see if sys/security.h is available
14355 set sys/security.h i_syssecrt
14356 eval $inhdr
14357
14358 : see if this is a sys/statvfs.h system
14359 set sys/statvfs.h i_sysstatvfs
14360 eval $inhdr
14361
14362 : see if this is a sys/uio.h system
14363 set sys/uio.h i_sysuio
14364 eval $inhdr
14365
14366 : see if this is a sys/un.h system
14367 set sys/un.h i_sysun
14368 eval $inhdr
14369
14370
14371 : see if this is a sys/utsname.h system
14372 set sys/utsname.h i_sysutsname
14373 eval $inhdr
14374
14375 : see if this is a syswait system
14376 set sys/wait.h i_syswait
14377 eval $inhdr
14378
14379 : see if this is a ustat.h system
14380 set ustat.h i_ustat
14381 eval $inhdr
14382
14383 : see if this is an utime system
14384 set utime.h i_utime
14385 eval $inhdr
14386
14387 : see if this is a values.h system
14388 set values.h i_values
14389 eval $inhdr
14390
14391 : see if this is a vfork system
14392 case "$d_vfork" in
14393 "$define")
14394         set vfork.h i_vfork
14395         eval $inhdr
14396         ;;
14397 *)
14398         i_vfork="$undef"
14399         ;;
14400 esac
14401
14402 : see if gdbm.h is available
14403 set gdbm.h t_gdbm
14404 eval $inhdr
14405 case "$t_gdbm" in
14406 $define)
14407         : see if gdbm_open exists
14408         set gdbm_open d_gdbm_open
14409         eval $inlibc
14410         case "$d_gdbm_open" in
14411         $undef)
14412                 t_gdbm="$undef"
14413                 echo "We won't be including <gdbm.h>"
14414                 ;;
14415         esac
14416         ;;
14417 esac
14418 val="$t_gdbm"
14419 set i_gdbm
14420 eval $setvar
14421
14422 echo " "
14423 echo "Looking for extensions..." >&4
14424 : If we are using the old config.sh, known_extensions may contain
14425 : old or inaccurate or duplicate values.
14426 known_extensions=''
14427 nonxs_extensions=''
14428 : We do not use find because it might not be available.
14429 : We do not just use MANIFEST because the user may have dropped
14430 : some additional extensions into the source tree and expect them
14431 : to be built.
14432
14433 : Function to recursively find available extensions, ignoring DynaLoader
14434 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14435 find_extensions='
14436     for xxx in *; do
14437        case "$xxx" in
14438            DynaLoader|dynaload) ;;
14439            *)
14440            if $test -f $xxx/$xxx.xs; then
14441                known_extensions="$known_extensions $1$xxx";
14442            elif $test -f $xxx/Makefile.PL; then
14443                nonxs_extensions="$nonxs_extensions $1$xxx";
14444            else
14445                if $test -d $xxx -a $# -lt 10; then
14446                    set $1$xxx/ $*;
14447                    cd $xxx;
14448                    eval $find_extensions;
14449                    cd ..;
14450                    shift;
14451                fi;
14452            fi
14453            ;;
14454        esac;
14455     done'
14456 tdir=`pwd`
14457 cd $rsrc/ext
14458 set X
14459 shift
14460 eval $find_extensions
14461 set X $nonxs_extensions
14462 shift
14463 nonxs_extensions="$*"
14464 set X $known_extensions
14465 shift
14466 known_extensions="$*"
14467 cd $tdir
14468
14469 : Now see which are supported on this system.
14470 avail_ext=''
14471 for xxx in $known_extensions ; do
14472         case "$xxx" in
14473         DB_File|db_file)
14474                 case "$i_db" in
14475                 $define) avail_ext="$avail_ext $xxx" ;;
14476                 esac
14477                 ;;
14478         GDBM_File|gdbm_fil)
14479                 case "$i_gdbm" in 
14480                 $define) avail_ext="$avail_ext $xxx" ;;
14481                 esac
14482                 ;;
14483         NDBM_File|ndbm_fil)
14484                 case "$i_ndbm" in
14485                 $define)
14486                     case "$osname-$use64bitint" in
14487                     hpux-define)
14488                         case "$libs" in
14489                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14490                         esac
14491                         ;;
14492                     *) avail_ext="$avail_ext $xxx" ;;
14493                     esac
14494                     ;;
14495                 esac
14496                 ;;
14497         ODBM_File|odbm_fil) 
14498                 case "${i_dbm}${i_rpcsvcdbm}" in
14499                 *"${define}"*)
14500                     case "$osname-$use64bitint" in
14501                     hpux-define)
14502                         case "$libs" in
14503                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14504                         esac
14505                         ;;
14506                     *) avail_ext="$avail_ext $xxx" ;;
14507                     esac
14508                     ;;
14509                 esac
14510                 ;;
14511         POSIX|posix)
14512                 case "$useposix" in
14513                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14514                 esac
14515                 ;;
14516         Opcode|opcode)
14517                 case "$useopcode" in
14518                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14519                 esac
14520                 ;;
14521         Socket|socket)
14522                 case "$d_socket" in 
14523                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14524                 esac
14525                 ;;
14526         Thread|thread)
14527                 case "$usethreads" in 
14528                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14529                 esac
14530                 ;;
14531         IPC/SysV|ipc/sysv)
14532                 : XXX Do we need a useipcsysv variable here
14533                 case "${d_msg}${d_sem}${d_shm}" in 
14534                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14535                 esac
14536                 ;;
14537         *)      avail_ext="$avail_ext $xxx"
14538                 ;;
14539         esac
14540 done
14541
14542 set X $avail_ext
14543 shift
14544 avail_ext="$*"
14545
14546 : Now see which nonxs extensions are supported on this system.
14547 : For now assume all are.
14548 nonxs_ext=''
14549 for xxx in $nonxs_extensions ; do
14550         case "$xxx" in
14551         *)      nonxs_ext="$nonxs_ext $xxx"
14552                 ;;
14553         esac
14554 done
14555
14556 set X $nonxs_ext
14557 shift
14558 nonxs_ext="$*"
14559
14560 case $usedl in
14561 $define)
14562         $cat <<EOM
14563 A number of extensions are supplied with $package.  You may choose to
14564 compile these extensions for dynamic loading (the default), compile
14565 them into the $package executable (static loading), or not include
14566 them at all.  Answer "none" to include no extensions.
14567 Note that DynaLoader is always built and need not be mentioned here.
14568
14569 EOM
14570         case "$dynamic_ext" in
14571         '') dflt="$avail_ext" ;;
14572         *)      dflt="$dynamic_ext"
14573                 # Perhaps we are reusing an old out-of-date config.sh.
14574                 case "$hint" in
14575                 previous)
14576                         if test X"$dynamic_ext" != X"$avail_ext"; then
14577                                 $cat <<EOM
14578 NOTICE:  Your previous config.sh list may be incorrect. 
14579 The extensions now available to you are 
14580         ${avail_ext}
14581 but the default list from your previous config.sh is
14582         ${dynamic_ext} 
14583
14584 EOM
14585                         fi
14586                         ;;
14587                 esac
14588                 ;;
14589         esac
14590         case "$dflt" in
14591         '')     dflt=none;;
14592         esac
14593         rp="What extensions do you wish to load dynamically?"
14594         . ./myread
14595         case "$ans" in
14596         none) dynamic_ext=' ' ;;
14597         *) dynamic_ext="$ans" ;;
14598         esac
14599
14600         case "$static_ext" in
14601         '')
14602                 : Exclude those already listed in dynamic linking
14603                 dflt=''
14604                 for xxx in $avail_ext; do
14605                         case " $dynamic_ext " in
14606                         *" $xxx "*) ;;
14607                         *) dflt="$dflt $xxx" ;;
14608                         esac
14609                 done
14610                 set X $dflt
14611                 shift
14612                 dflt="$*"
14613                 ;;
14614         *)  dflt="$static_ext" 
14615                 ;;
14616         esac
14617
14618         case "$dflt" in
14619         '')     dflt=none;;
14620         esac
14621         rp="What extensions do you wish to load statically?"
14622         . ./myread
14623         case "$ans" in
14624         none) static_ext=' ' ;;
14625         *) static_ext="$ans" ;;
14626         esac
14627         ;;
14628 *)
14629         $cat <<EOM
14630 A number of extensions are supplied with $package.  Answer "none" 
14631 to include no extensions. 
14632 Note that DynaLoader is always built and need not be mentioned here.
14633
14634 EOM
14635         case "$static_ext" in
14636         '') dflt="$avail_ext" ;;
14637         *)      dflt="$static_ext"
14638                 # Perhaps we are reusing an old out-of-date config.sh.
14639                 case "$hint" in
14640                 previous)
14641                         if test X"$static_ext" != X"$avail_ext"; then
14642                                 $cat <<EOM
14643 NOTICE:  Your previous config.sh list may be incorrect. 
14644 The extensions now available to you are 
14645         ${avail_ext}
14646 but the default list from your previous config.sh is
14647         ${static_ext} 
14648
14649 EOM
14650                         fi
14651                         ;;
14652                 esac
14653                 ;;
14654         esac
14655         : Exclude those that are not xs extensions
14656         case "$dflt" in
14657         '')     dflt=none;;
14658         esac
14659         rp="What extensions do you wish to include?"
14660         . ./myread
14661         case "$ans" in
14662         none) static_ext=' ' ;;
14663         *) static_ext="$ans" ;;
14664         esac
14665         ;;
14666 esac
14667
14668 set X $dynamic_ext $static_ext $nonxs_ext
14669 shift
14670 extensions="$*"
14671
14672 : Remove build directory name from cppstdin so it can be used from
14673 : either the present location or the final installed location.
14674 echo " "
14675 : Get out of the UU directory to get correct path name.
14676 cd ..
14677 case "$cppstdin" in
14678 `pwd`/cppstdin)
14679         echo "Stripping down cppstdin path name"
14680         cppstdin=cppstdin
14681         ;;
14682 esac
14683 cd UU
14684
14685 : end of configuration questions
14686 echo " "
14687 echo "End of configuration questions."
14688 echo " "
14689
14690 : back to where it started
14691 if test -d ../UU; then
14692         cd ..
14693 fi
14694
14695 : configuration may be patched via a 'config.over' file
14696 if $test -f config.over; then
14697         echo " "
14698         dflt=y
14699         rp='I see a config.over file.  Do you wish to load it?'
14700         . UU/myread
14701         case "$ans" in
14702         n*) echo "OK, I'll ignore it.";;
14703         *)      . ./config.over
14704                 echo "Configuration override changes have been loaded."
14705                 ;;
14706         esac
14707 fi
14708
14709 : in case they want portability, strip down executable paths
14710 case "$d_portable" in
14711 "$define")
14712         echo " "
14713         echo "Stripping down executable paths..." >&4
14714         for file in $loclist $trylist; do
14715                 eval temp=\$$file
14716                 eval $file=`basename $temp`
14717         done
14718         ;;
14719 esac
14720
14721 : create config.sh file
14722 echo " "
14723 echo "Creating config.sh..." >&4
14724 $spitshell <<EOT >config.sh
14725 $startsh
14726 #
14727 # This file was produced by running the Configure script. It holds all the
14728 # definitions figured out by Configure. Should you modify one of these values,
14729 # do not forget to propagate your changes by running "Configure -der". You may
14730 # instead choose to run each of the .SH files by yourself, or "Configure -S".
14731 #
14732
14733 # Package name      : $package
14734 # Source directory  : $src
14735 # Configuration time: $cf_time
14736 # Configured by     : $cf_by
14737 # Target system     : $myuname
14738
14739 Author='$Author'
14740 Date='$Date'
14741 Header='$Header'
14742 Id='$Id'
14743 Locker='$Locker'
14744 Log='$Log'
14745 Mcc='$Mcc'
14746 RCSfile='$RCSfile'
14747 Revision='$Revision'
14748 Source='$Source'
14749 State='$State'
14750 _a='$_a'
14751 _exe='$_exe'
14752 _o='$_o'
14753 afs='$afs'
14754 alignbytes='$alignbytes'
14755 ansi2knr='$ansi2knr'
14756 aphostname='$aphostname'
14757 api_revision='$api_revision'
14758 api_subversion='$api_subversion'
14759 api_version='$api_version'
14760 api_versionstring='$api_versionstring'
14761 ar='$ar'
14762 archlib='$archlib'
14763 archlibexp='$archlibexp'
14764 archname64='$archname64'
14765 archname='$archname'
14766 archobjs='$archobjs'
14767 awk='$awk'
14768 baserev='$baserev'
14769 bash='$bash'
14770 bin='$bin'
14771 bincompat5005='$bincompat5005'
14772 binexp='$binexp'
14773 bison='$bison'
14774 byacc='$byacc'
14775 byteorder='$byteorder'
14776 c='$c'
14777 castflags='$castflags'
14778 cat='$cat'
14779 cc='$cc'
14780 cccdlflags='$cccdlflags'
14781 ccdlflags='$ccdlflags'
14782 ccflags='$ccflags'
14783 ccsymbols='$ccsymbols'
14784 cf_by='$cf_by'
14785 cf_email='$cf_email'
14786 cf_time='$cf_time'
14787 charsize='$charsize'
14788 chgrp='$chgrp'
14789 chmod='$chmod'
14790 chown='$chown'
14791 clocktype='$clocktype'
14792 comm='$comm'
14793 compress='$compress'
14794 contains='$contains'
14795 cp='$cp'
14796 cpio='$cpio'
14797 cpp='$cpp'
14798 cpp_stuff='$cpp_stuff'
14799 cppccsymbols='$cppccsymbols'
14800 cppflags='$cppflags'
14801 cpplast='$cpplast'
14802 cppminus='$cppminus'
14803 cpprun='$cpprun'
14804 cppstdin='$cppstdin'
14805 cppsymbols='$cppsymbols'
14806 crosscompile='$crosscompile'
14807 cryptlib='$cryptlib'
14808 csh='$csh'
14809 d_Gconvert='$d_Gconvert'
14810 d_PRIEldbl='$d_PRIEldbl'
14811 d_PRIFldbl='$d_PRIFldbl'
14812 d_PRIGldbl='$d_PRIGldbl'
14813 d_PRIX64='$d_PRIX64'
14814 d_PRId64='$d_PRId64'
14815 d_PRIeldbl='$d_PRIeldbl'
14816 d_PRIfldbl='$d_PRIfldbl'
14817 d_PRIgldbl='$d_PRIgldbl'
14818 d_PRIi64='$d_PRIi64'
14819 d_PRIo64='$d_PRIo64'
14820 d_PRIu64='$d_PRIu64'
14821 d_PRIx64='$d_PRIx64'
14822 d_access='$d_access'
14823 d_accessx='$d_accessx'
14824 d_alarm='$d_alarm'
14825 d_archlib='$d_archlib'
14826 d_atolf='$d_atolf'
14827 d_atoll='$d_atoll'
14828 d_attribut='$d_attribut'
14829 d_bcmp='$d_bcmp'
14830 d_bcopy='$d_bcopy'
14831 d_bincompat5005='$d_bincompat5005'
14832 d_bsd='$d_bsd'
14833 d_bsdgetpgrp='$d_bsdgetpgrp'
14834 d_bsdsetpgrp='$d_bsdsetpgrp'
14835 d_bzero='$d_bzero'
14836 d_casti32='$d_casti32'
14837 d_castneg='$d_castneg'
14838 d_charvspr='$d_charvspr'
14839 d_chown='$d_chown'
14840 d_chroot='$d_chroot'
14841 d_chsize='$d_chsize'
14842 d_closedir='$d_closedir'
14843 d_const='$d_const'
14844 d_crypt='$d_crypt'
14845 d_csh='$d_csh'
14846 d_cuserid='$d_cuserid'
14847 d_dbl_dig='$d_dbl_dig'
14848 d_difftime='$d_difftime'
14849 d_dirnamlen='$d_dirnamlen'
14850 d_dlerror='$d_dlerror'
14851 d_dlopen='$d_dlopen'
14852 d_dlsymun='$d_dlsymun'
14853 d_dosuid='$d_dosuid'
14854 d_drand48proto='$d_drand48proto'
14855 d_dup2='$d_dup2'
14856 d_eaccess='$d_eaccess'
14857 d_endgrent='$d_endgrent'
14858 d_endhent='$d_endhent'
14859 d_endnent='$d_endnent'
14860 d_endpent='$d_endpent'
14861 d_endpwent='$d_endpwent'
14862 d_endsent='$d_endsent'
14863 d_endspent='$d_endspent'
14864 d_eofnblk='$d_eofnblk'
14865 d_eunice='$d_eunice'
14866 d_fchmod='$d_fchmod'
14867 d_fchown='$d_fchown'
14868 d_fcntl='$d_fcntl'
14869 d_fd_macros='$d_fd_macros'
14870 d_fd_set='$d_fd_set'
14871 d_fds_bits='$d_fds_bits'
14872 d_fgetpos='$d_fgetpos'
14873 d_flexfnam='$d_flexfnam'
14874 d_flock='$d_flock'
14875 d_fork='$d_fork'
14876 d_fpathconf='$d_fpathconf'
14877 d_fpos64_t='$d_fpos64_t'
14878 d_fs_data_s='$d_fs_data_s'
14879 d_fseeko='$d_fseeko'
14880 d_fsetpos='$d_fsetpos'
14881 d_fstatfs='$d_fstatfs'
14882 d_fstatvfs='$d_fstatvfs'
14883 d_ftello='$d_ftello'
14884 d_ftime='$d_ftime'
14885 d_getcwd='$d_getcwd'
14886 d_getfsstat='$d_getfsstat'
14887 d_getgrent='$d_getgrent'
14888 d_getgrps='$d_getgrps'
14889 d_gethbyaddr='$d_gethbyaddr'
14890 d_gethbyname='$d_gethbyname'
14891 d_gethent='$d_gethent'
14892 d_gethname='$d_gethname'
14893 d_gethostprotos='$d_gethostprotos'
14894 d_getlogin='$d_getlogin'
14895 d_getmnt='$d_getmnt'
14896 d_getmntent='$d_getmntent'
14897 d_getnbyaddr='$d_getnbyaddr'
14898 d_getnbyname='$d_getnbyname'
14899 d_getnent='$d_getnent'
14900 d_getnetprotos='$d_getnetprotos'
14901 d_getpbyname='$d_getpbyname'
14902 d_getpbynumber='$d_getpbynumber'
14903 d_getpent='$d_getpent'
14904 d_getpgid='$d_getpgid'
14905 d_getpgrp2='$d_getpgrp2'
14906 d_getpgrp='$d_getpgrp'
14907 d_getppid='$d_getppid'
14908 d_getprior='$d_getprior'
14909 d_getprotoprotos='$d_getprotoprotos'
14910 d_getpwent='$d_getpwent'
14911 d_getsbyname='$d_getsbyname'
14912 d_getsbyport='$d_getsbyport'
14913 d_getsent='$d_getsent'
14914 d_getservprotos='$d_getservprotos'
14915 d_getspent='$d_getspent'
14916 d_getspnam='$d_getspnam'
14917 d_gettimeod='$d_gettimeod'
14918 d_gnulibc='$d_gnulibc'
14919 d_grpasswd='$d_grpasswd'
14920 d_hasmntopt='$d_hasmntopt'
14921 d_htonl='$d_htonl'
14922 d_iconv='$d_iconv'
14923 d_index='$d_index'
14924 d_inetaton='$d_inetaton'
14925 d_int64_t='$d_int64_t'
14926 d_isascii='$d_isascii'
14927 d_killpg='$d_killpg'
14928 d_lchown='$d_lchown'
14929 d_ldbl_dig='$d_ldbl_dig'
14930 d_link='$d_link'
14931 d_locconv='$d_locconv'
14932 d_lockf='$d_lockf'
14933 d_longdbl='$d_longdbl'
14934 d_longlong='$d_longlong'
14935 d_lseekproto='$d_lseekproto'
14936 d_lstat='$d_lstat'
14937 d_madvise='$d_madvise'
14938 d_mblen='$d_mblen'
14939 d_mbstowcs='$d_mbstowcs'
14940 d_mbtowc='$d_mbtowc'
14941 d_memchr='$d_memchr'
14942 d_memcmp='$d_memcmp'
14943 d_memcpy='$d_memcpy'
14944 d_memmove='$d_memmove'
14945 d_memset='$d_memset'
14946 d_mkdir='$d_mkdir'
14947 d_mkdtemp='$d_mkdtemp'
14948 d_mkfifo='$d_mkfifo'
14949 d_mkstemp='$d_mkstemp'
14950 d_mkstemps='$d_mkstemps'
14951 d_mktime='$d_mktime'
14952 d_mmap='$d_mmap'
14953 d_mprotect='$d_mprotect'
14954 d_msg='$d_msg'
14955 d_msg_ctrunc='$d_msg_ctrunc'
14956 d_msg_dontroute='$d_msg_dontroute'
14957 d_msg_oob='$d_msg_oob'
14958 d_msg_peek='$d_msg_peek'
14959 d_msg_proxy='$d_msg_proxy'
14960 d_msgctl='$d_msgctl'
14961 d_msgget='$d_msgget'
14962 d_msgrcv='$d_msgrcv'
14963 d_msgsnd='$d_msgsnd'
14964 d_msync='$d_msync'
14965 d_munmap='$d_munmap'
14966 d_mymalloc='$d_mymalloc'
14967 d_nice='$d_nice'
14968 d_nv_preserves_uv='$d_nv_preserves_uv'
14969 d_off64_t='$d_off64_t'
14970 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
14971 d_oldpthreads='$d_oldpthreads'
14972 d_oldsock='$d_oldsock'
14973 d_open3='$d_open3'
14974 d_pathconf='$d_pathconf'
14975 d_pause='$d_pause'
14976 d_phostname='$d_phostname'
14977 d_pipe='$d_pipe'
14978 d_poll='$d_poll'
14979 d_portable='$d_portable'
14980 d_pthread_yield='$d_pthread_yield'
14981 d_pwage='$d_pwage'
14982 d_pwchange='$d_pwchange'
14983 d_pwclass='$d_pwclass'
14984 d_pwcomment='$d_pwcomment'
14985 d_pwexpire='$d_pwexpire'
14986 d_pwgecos='$d_pwgecos'
14987 d_pwpasswd='$d_pwpasswd'
14988 d_pwquota='$d_pwquota'
14989 d_quad='$d_quad'
14990 d_readdir='$d_readdir'
14991 d_readlink='$d_readlink'
14992 d_rename='$d_rename'
14993 d_rewinddir='$d_rewinddir'
14994 d_rmdir='$d_rmdir'
14995 d_safebcpy='$d_safebcpy'
14996 d_safemcpy='$d_safemcpy'
14997 d_sanemcmp='$d_sanemcmp'
14998 d_sched_yield='$d_sched_yield'
14999 d_scm_rights='$d_scm_rights'
15000 d_seekdir='$d_seekdir'
15001 d_select='$d_select'
15002 d_sem='$d_sem'
15003 d_semctl='$d_semctl'
15004 d_semctl_semid_ds='$d_semctl_semid_ds'
15005 d_semctl_semun='$d_semctl_semun'
15006 d_semget='$d_semget'
15007 d_semop='$d_semop'
15008 d_setegid='$d_setegid'
15009 d_seteuid='$d_seteuid'
15010 d_setgrent='$d_setgrent'
15011 d_setgrps='$d_setgrps'
15012 d_sethent='$d_sethent'
15013 d_setlinebuf='$d_setlinebuf'
15014 d_setlocale='$d_setlocale'
15015 d_setnent='$d_setnent'
15016 d_setpent='$d_setpent'
15017 d_setpgid='$d_setpgid'
15018 d_setpgrp2='$d_setpgrp2'
15019 d_setpgrp='$d_setpgrp'
15020 d_setprior='$d_setprior'
15021 d_setpwent='$d_setpwent'
15022 d_setregid='$d_setregid'
15023 d_setresgid='$d_setresgid'
15024 d_setresuid='$d_setresuid'
15025 d_setreuid='$d_setreuid'
15026 d_setrgid='$d_setrgid'
15027 d_setruid='$d_setruid'
15028 d_setsent='$d_setsent'
15029 d_setsid='$d_setsid'
15030 d_setspent='$d_setspent'
15031 d_setvbuf='$d_setvbuf'
15032 d_sfio='$d_sfio'
15033 d_shm='$d_shm'
15034 d_shmat='$d_shmat'
15035 d_shmatprototype='$d_shmatprototype'
15036 d_shmctl='$d_shmctl'
15037 d_shmdt='$d_shmdt'
15038 d_shmget='$d_shmget'
15039 d_sigaction='$d_sigaction'
15040 d_sigsetjmp='$d_sigsetjmp'
15041 d_socket='$d_socket'
15042 d_socklen_t='$d_socklen_t'
15043 d_sockpair='$d_sockpair'
15044 d_sqrtl='$d_sqrtl'
15045 d_statblks='$d_statblks'
15046 d_statfs_f_flags='$d_statfs_f_flags'
15047 d_statfs_s='$d_statfs_s'
15048 d_statvfs='$d_statvfs'
15049 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15050 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15051 d_stdio_stream_array='$d_stdio_stream_array'
15052 d_stdiobase='$d_stdiobase'
15053 d_stdstdio='$d_stdstdio'
15054 d_strchr='$d_strchr'
15055 d_strcoll='$d_strcoll'
15056 d_strctcpy='$d_strctcpy'
15057 d_strerrm='$d_strerrm'
15058 d_strerror='$d_strerror'
15059 d_strtod='$d_strtod'
15060 d_strtol='$d_strtol'
15061 d_strtold='$d_strtold'
15062 d_strtoll='$d_strtoll'
15063 d_strtoul='$d_strtoul'
15064 d_strtoull='$d_strtoull'
15065 d_strtouq='$d_strtouq'
15066 d_strxfrm='$d_strxfrm'
15067 d_suidsafe='$d_suidsafe'
15068 d_symlink='$d_symlink'
15069 d_syscall='$d_syscall'
15070 d_sysconf='$d_sysconf'
15071 d_sysernlst='$d_sysernlst'
15072 d_syserrlst='$d_syserrlst'
15073 d_system='$d_system'
15074 d_tcgetpgrp='$d_tcgetpgrp'
15075 d_tcsetpgrp='$d_tcsetpgrp'
15076 d_telldir='$d_telldir'
15077 d_telldirproto='$d_telldirproto'
15078 d_time='$d_time'
15079 d_times='$d_times'
15080 d_truncate='$d_truncate'
15081 d_tzname='$d_tzname'
15082 d_umask='$d_umask'
15083 d_uname='$d_uname'
15084 d_union_semun='$d_union_semun'
15085 d_ustat='$d_ustat'
15086 d_vendorbin='$d_vendorbin'
15087 d_vendorlib='$d_vendorlib'
15088 d_vfork='$d_vfork'
15089 d_void_closedir='$d_void_closedir'
15090 d_voidsig='$d_voidsig'
15091 d_voidtty='$d_voidtty'
15092 d_volatile='$d_volatile'
15093 d_vprintf='$d_vprintf'
15094 d_wait4='$d_wait4'
15095 d_waitpid='$d_waitpid'
15096 d_wcstombs='$d_wcstombs'
15097 d_wctomb='$d_wctomb'
15098 d_xenix='$d_xenix'
15099 date='$date'
15100 db_hashtype='$db_hashtype'
15101 db_prefixtype='$db_prefixtype'
15102 defvoidused='$defvoidused'
15103 direntrytype='$direntrytype'
15104 dlext='$dlext'
15105 dlsrc='$dlsrc'
15106 doublesize='$doublesize'
15107 drand01='$drand01'
15108 dynamic_ext='$dynamic_ext'
15109 eagain='$eagain'
15110 ebcdic='$ebcdic'
15111 echo='$echo'
15112 egrep='$egrep'
15113 emacs='$emacs'
15114 eunicefix='$eunicefix'
15115 exe_ext='$exe_ext'
15116 expr='$expr'
15117 extensions='$extensions'
15118 fflushNULL='$fflushNULL'
15119 fflushall='$fflushall'
15120 find='$find'
15121 firstmakefile='$firstmakefile'
15122 flex='$flex'
15123 fpossize='$fpossize'
15124 fpostype='$fpostype'
15125 freetype='$freetype'
15126 full_ar='$full_ar'
15127 full_csh='$full_csh'
15128 full_sed='$full_sed'
15129 gccversion='$gccversion'
15130 gidformat='$gidformat'
15131 gidsign='$gidsign'
15132 gidsize='$gidsize'
15133 gidtype='$gidtype'
15134 glibpth='$glibpth'
15135 grep='$grep'
15136 groupcat='$groupcat'
15137 groupstype='$groupstype'
15138 gzip='$gzip'
15139 h_fcntl='$h_fcntl'
15140 h_sysfile='$h_sysfile'
15141 hint='$hint'
15142 hostcat='$hostcat'
15143 huge='$huge'
15144 i16size='$i16size'
15145 i16type='$i16type'
15146 i32size='$i32size'
15147 i32type='$i32type'
15148 i64size='$i64size'
15149 i64type='$i64type'
15150 i8size='$i8size'
15151 i8type='$i8type'
15152 i_arpainet='$i_arpainet'
15153 i_bsdioctl='$i_bsdioctl'
15154 i_db='$i_db'
15155 i_dbm='$i_dbm'
15156 i_dirent='$i_dirent'
15157 i_dld='$i_dld'
15158 i_dlfcn='$i_dlfcn'
15159 i_fcntl='$i_fcntl'
15160 i_float='$i_float'
15161 i_gdbm='$i_gdbm'
15162 i_grp='$i_grp'
15163 i_iconv='$i_iconv'
15164 i_inttypes='$i_inttypes'
15165 i_limits='$i_limits'
15166 i_locale='$i_locale'
15167 i_machcthr='$i_machcthr'
15168 i_malloc='$i_malloc'
15169 i_math='$i_math'
15170 i_memory='$i_memory'
15171 i_mntent='$i_mntent'
15172 i_ndbm='$i_ndbm'
15173 i_netdb='$i_netdb'
15174 i_neterrno='$i_neterrno'
15175 i_netinettcp='$i_netinettcp'
15176 i_niin='$i_niin'
15177 i_poll='$i_poll'
15178 i_pthread='$i_pthread'
15179 i_pwd='$i_pwd'
15180 i_rpcsvcdbm='$i_rpcsvcdbm'
15181 i_sfio='$i_sfio'
15182 i_sgtty='$i_sgtty'
15183 i_shadow='$i_shadow'
15184 i_socks='$i_socks'
15185 i_stdarg='$i_stdarg'
15186 i_stddef='$i_stddef'
15187 i_stdlib='$i_stdlib'
15188 i_string='$i_string'
15189 i_sysaccess='$i_sysaccess'
15190 i_sysdir='$i_sysdir'
15191 i_sysfile='$i_sysfile'
15192 i_sysfilio='$i_sysfilio'
15193 i_sysin='$i_sysin'
15194 i_sysioctl='$i_sysioctl'
15195 i_syslog='$i_syslog'
15196 i_sysmman='$i_sysmman'
15197 i_sysmode='$i_sysmode'
15198 i_sysmount='$i_sysmount'
15199 i_sysndir='$i_sysndir'
15200 i_sysparam='$i_sysparam'
15201 i_sysresrc='$i_sysresrc'
15202 i_syssecrt='$i_syssecrt'
15203 i_sysselct='$i_sysselct'
15204 i_syssockio='$i_syssockio'
15205 i_sysstat='$i_sysstat'
15206 i_sysstatfs='$i_sysstatfs'
15207 i_sysstatvfs='$i_sysstatvfs'
15208 i_systime='$i_systime'
15209 i_systimek='$i_systimek'
15210 i_systimes='$i_systimes'
15211 i_systypes='$i_systypes'
15212 i_sysuio='$i_sysuio'
15213 i_sysun='$i_sysun'
15214 i_sysutsname='$i_sysutsname'
15215 i_sysvfs='$i_sysvfs'
15216 i_syswait='$i_syswait'
15217 i_termio='$i_termio'
15218 i_termios='$i_termios'
15219 i_time='$i_time'
15220 i_unistd='$i_unistd'
15221 i_ustat='$i_ustat'
15222 i_utime='$i_utime'
15223 i_values='$i_values'
15224 i_varargs='$i_varargs'
15225 i_varhdr='$i_varhdr'
15226 i_vfork='$i_vfork'
15227 ignore_versioned_solibs='$ignore_versioned_solibs'
15228 inc_version_list='$inc_version_list'
15229 inc_version_list_init='$inc_version_list_init'
15230 incpath='$incpath'
15231 inews='$inews'
15232 installarchlib='$installarchlib'
15233 installbin='$installbin'
15234 installman1dir='$installman1dir'
15235 installman3dir='$installman3dir'
15236 installprefix='$installprefix'
15237 installprefixexp='$installprefixexp'
15238 installprivlib='$installprivlib'
15239 installscript='$installscript'
15240 installsitearch='$installsitearch'
15241 installsitebin='$installsitebin'
15242 installsitelib='$installsitelib'
15243 installstyle='$installstyle'
15244 installusrbinperl='$installusrbinperl'
15245 installvendorbin='$installvendorbin'
15246 installvendorlib='$installvendorlib'
15247 intsize='$intsize'
15248 ivdformat='$ivdformat'
15249 ivsize='$ivsize'
15250 ivtype='$ivtype'
15251 known_extensions='$known_extensions'
15252 ksh='$ksh'
15253 large='$large'
15254 ld='$ld'
15255 lddlflags='$lddlflags'
15256 ldflags='$ldflags'
15257 ldlibpthname='$ldlibpthname'
15258 less='$less'
15259 lib_ext='$lib_ext'
15260 libc='$libc'
15261 libperl='$libperl'
15262 libpth='$libpth'
15263 libs='$libs'
15264 libsdirs='$libsdirs'
15265 libsfiles='$libsfiles'
15266 libsfound='$libsfound'
15267 libspath='$libspath'
15268 libswanted='$libswanted'
15269 line='$line'
15270 lint='$lint'
15271 lkflags='$lkflags'
15272 ln='$ln'
15273 lns='$lns'
15274 locincpth='$locincpth'
15275 loclibpth='$loclibpth'
15276 longdblsize='$longdblsize'
15277 longlongsize='$longlongsize'
15278 longsize='$longsize'
15279 lp='$lp'
15280 lpr='$lpr'
15281 ls='$ls'
15282 lseeksize='$lseeksize'
15283 lseektype='$lseektype'
15284 mail='$mail'
15285 mailx='$mailx'
15286 make='$make'
15287 make_set_make='$make_set_make'
15288 mallocobj='$mallocobj'
15289 mallocsrc='$mallocsrc'
15290 malloctype='$malloctype'
15291 man1dir='$man1dir'
15292 man1direxp='$man1direxp'
15293 man1ext='$man1ext'
15294 man3dir='$man3dir'
15295 man3direxp='$man3direxp'
15296 man3ext='$man3ext'
15297 medium='$medium'
15298 mips_type='$mips_type'
15299 mkdir='$mkdir'
15300 mmaptype='$mmaptype'
15301 models='$models'
15302 modetype='$modetype'
15303 more='$more'
15304 multiarch='$multiarch'
15305 mv='$mv'
15306 myarchname='$myarchname'
15307 mydomain='$mydomain'
15308 myhostname='$myhostname'
15309 myuname='$myuname'
15310 n='$n'
15311 netdb_hlen_type='$netdb_hlen_type'
15312 netdb_host_type='$netdb_host_type'
15313 netdb_name_type='$netdb_name_type'
15314 netdb_net_type='$netdb_net_type'
15315 nm='$nm'
15316 nm_opt='$nm_opt'
15317 nm_so_opt='$nm_so_opt'
15318 nonxs_ext='$nonxs_ext'
15319 nroff='$nroff'
15320 nvsize='$nvsize'
15321 nvtype='$nvtype'
15322 o_nonblock='$o_nonblock'
15323 obj_ext='$obj_ext'
15324 old_pthread_create_joinable='$old_pthread_create_joinable'
15325 optimize='$optimize'
15326 orderlib='$orderlib'
15327 osname='$osname'
15328 osvers='$osvers'
15329 package='$package'
15330 pager='$pager'
15331 passcat='$passcat'
15332 patchlevel='$patchlevel'
15333 path_sep='$path_sep'
15334 perl5='$perl5'
15335 perl='$perl'
15336 perladmin='$perladmin'
15337 perlpath='$perlpath'
15338 pg='$pg'
15339 phostname='$phostname'
15340 pidtype='$pidtype'
15341 plibpth='$plibpth'
15342 pm_apiversion='$pm_apiversion'
15343 pmake='$pmake'
15344 pr='$pr'
15345 prefix='$prefix'
15346 prefixexp='$prefixexp'
15347 privlib='$privlib'
15348 privlibexp='$privlibexp'
15349 prototype='$prototype'
15350 ptrsize='$ptrsize'
15351 quadkind='$quadkind'
15352 quadtype='$quadtype'
15353 randbits='$randbits'
15354 randfunc='$randfunc'
15355 randseedtype='$randseedtype'
15356 ranlib='$ranlib'
15357 rd_nodata='$rd_nodata'
15358 revision='$revision'
15359 rm='$rm'
15360 rmail='$rmail'
15361 runnm='$runnm'
15362 sPRIEldbl='$sPRIEldbl'
15363 sPRIFldbl='$sPRIFldbl'
15364 sPRIGldbl='$sPRIGldbl'
15365 sPRIX64='$sPRIX64'
15366 sPRId64='$sPRId64'
15367 sPRIeldbl='$sPRIeldbl'
15368 sPRIfldbl='$sPRIfldbl'
15369 sPRIgldbl='$sPRIgldbl'
15370 sPRIi64='$sPRIi64'
15371 sPRIo64='$sPRIo64'
15372 sPRIu64='$sPRIu64'
15373 sPRIx64='$sPRIx64'
15374 sched_yield='$sched_yield'
15375 scriptdir='$scriptdir'
15376 scriptdirexp='$scriptdirexp'
15377 sed='$sed'
15378 seedfunc='$seedfunc'
15379 selectminbits='$selectminbits'
15380 selecttype='$selecttype'
15381 sendmail='$sendmail'
15382 sh='$sh'
15383 shar='$shar'
15384 sharpbang='$sharpbang'
15385 shmattype='$shmattype'
15386 shortsize='$shortsize'
15387 shrpenv='$shrpenv'
15388 shsharp='$shsharp'
15389 sig_count='$sig_count'
15390 sig_name='$sig_name'
15391 sig_name_init='$sig_name_init'
15392 sig_num='$sig_num'
15393 sig_num_init='$sig_num_init'
15394 signal_t='$signal_t'
15395 sitearch='$sitearch'
15396 sitearchexp='$sitearchexp'
15397 sitebin='$sitebin'
15398 sitebinexp='$sitebinexp'
15399 sitelib='$sitelib'
15400 sitelibexp='$sitelibexp'
15401 siteprefix='$siteprefix'
15402 siteprefixexp='$siteprefixexp'
15403 sizetype='$sizetype'
15404 sleep='$sleep'
15405 smail='$smail'
15406 small='$small'
15407 so='$so'
15408 sockethdr='$sockethdr'
15409 socketlib='$socketlib'
15410 socksizetype='$socksizetype'
15411 sort='$sort'
15412 spackage='$spackage'
15413 spitshell='$spitshell'
15414 split='$split'
15415 src='$src'
15416 ssizetype='$ssizetype'
15417 startperl='$startperl'
15418 startsh='$startsh'
15419 static_ext='$static_ext'
15420 stdchar='$stdchar'
15421 stdio_base='$stdio_base'
15422 stdio_bufsiz='$stdio_bufsiz'
15423 stdio_cnt='$stdio_cnt'
15424 stdio_filbuf='$stdio_filbuf'
15425 stdio_ptr='$stdio_ptr'
15426 stdio_stream_array='$stdio_stream_array'
15427 strings='$strings'
15428 submit='$submit'
15429 subversion='$subversion'
15430 sysman='$sysman'
15431 tail='$tail'
15432 tar='$tar'
15433 tbl='$tbl'
15434 tee='$tee'
15435 test='$test'
15436 timeincl='$timeincl'
15437 timetype='$timetype'
15438 touch='$touch'
15439 tr='$tr'
15440 trnl='$trnl'
15441 troff='$troff'
15442 u16size='$u16size'
15443 u16type='$u16type'
15444 u32size='$u32size'
15445 u32type='$u32type'
15446 u64size='$u64size'
15447 u64type='$u64type'
15448 u8size='$u8size'
15449 u8type='$u8type'
15450 uidformat='$uidformat'
15451 uidsign='$uidsign'
15452 uidsize='$uidsize'
15453 uidtype='$uidtype'
15454 uname='$uname'
15455 uniq='$uniq'
15456 uquadtype='$uquadtype'
15457 use5005threads='$use5005threads'
15458 use64bitall='$use64bitall'
15459 use64bitint='$use64bitint'
15460 usedl='$usedl'
15461 useithreads='$useithreads'
15462 uselargefiles='$uselargefiles'
15463 uselongdouble='$uselongdouble'
15464 usemorebits='$usemorebits'
15465 usemultiplicity='$usemultiplicity'
15466 usemymalloc='$usemymalloc'
15467 usenm='$usenm'
15468 useopcode='$useopcode'
15469 useperlio='$useperlio'
15470 useposix='$useposix'
15471 usesfio='$usesfio'
15472 useshrplib='$useshrplib'
15473 usesocks='$usesocks'
15474 usethreads='$usethreads'
15475 usevendorprefix='$usevendorprefix'
15476 usevfork='$usevfork'
15477 usrinc='$usrinc'
15478 uuname='$uuname'
15479 uvoformat='$uvoformat'
15480 uvsize='$uvsize'
15481 uvtype='$uvtype'
15482 uvuformat='$uvuformat'
15483 uvxformat='$uvxformat'
15484 vendorbin='$vendorbin'
15485 vendorbinexp='$vendorbinexp'
15486 vendorlib='$vendorlib'
15487 vendorlibexp='$vendorlibexp'
15488 vendorprefix='$vendorprefix'
15489 vendorprefixexp='$vendorprefixexp'
15490 version='$version'
15491 vi='$vi'
15492 voidflags='$voidflags'
15493 xlibpth='$xlibpth'
15494 xs_apiversion='$xs_apiversion'
15495 zcat='$zcat'
15496 zip='$zip'
15497 EOT
15498
15499 : Add in command line options if available
15500 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15501
15502 : add special variables
15503 $test -f $src/patchlevel.h && \
15504 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15505 echo "CONFIGDOTSH=true" >>config.sh
15506
15507 : propagate old symbols
15508 if $test -f UU/config.sh; then
15509         <UU/config.sh sort | uniq >UU/oldconfig.sh
15510         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15511         sort | uniq -u >UU/oldsyms
15512         set X `cat UU/oldsyms`
15513         shift
15514         case $# in
15515         0) ;;
15516         *)
15517                 cat <<EOM
15518 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15519 EOM
15520                 echo "# Variables propagated from previous config.sh file." >>config.sh
15521                 for sym in `cat UU/oldsyms`; do
15522                         echo "    Propagating $hint variable "'$'"$sym..."
15523                         eval 'tmp="$'"${sym}"'"'
15524                         echo "$tmp" | \
15525                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15526                 done
15527                 ;;
15528         esac
15529 fi
15530
15531 : Finish up by extracting the .SH files
15532 case "$alldone" in
15533 exit)
15534         $rm -rf UU
15535         echo "Done."
15536         exit 0
15537         ;;
15538 cont)
15539         ;;
15540 '')
15541         dflt=''
15542         nostick=true
15543         $cat <<EOM
15544
15545 If you'd like to make any changes to the config.sh file before I begin
15546 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15547
15548 EOM
15549         rp="Press return or use a shell escape to edit config.sh:"
15550         . UU/myread
15551         nostick=''
15552         case "$ans" in
15553         '') ;;
15554         *) : in case they cannot read
15555                 sh 1>&4 -c "$ans";;
15556         esac
15557         ;;
15558 esac
15559
15560 : if this fails, just run all the .SH files by hand
15561 . ./config.sh
15562
15563 echo " "
15564 exec 1>&4
15565 . ./UU/extract
15566
15567 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15568         dflt=y
15569         case "$silent" in
15570         true) ;;
15571         *)
15572                 $cat <<EOM
15573
15574 Now you need to generate make dependencies by running "$make depend".
15575 You might prefer to run it in background: "$make depend > makedepend.out &"
15576 It can take a while, so you might not want to run it right now.
15577
15578 EOM
15579                 ;;
15580         esac
15581         rp="Run $make depend now?"
15582         . UU/myread
15583         case "$ans" in
15584         y*)
15585                 $make depend && echo "Now you must run a $make."
15586                 ;;
15587         *)
15588                 echo "You must run '$make depend' then '$make'."
15589                 ;;
15590         esac
15591 elif test -f [Mm]akefile; then
15592         echo " "
15593         echo "Now you must run a $make."
15594 else
15595         echo "Done."
15596 fi
15597
15598 if $test -f Policy.sh; then
15599     $cat <<EOM
15600
15601 If you compile $package on a different machine or from a different object
15602 directory, copy the Policy.sh file from this object directory to the
15603 new one before you run Configure -- this will help you with most of
15604 the policy defaults.
15605
15606 EOM
15607 fi
15608 if $test -f config.msg; then
15609     echo "Hmm.  I also noted the following information while running:"
15610     echo " "
15611     $cat config.msg >&4
15612     $rm -f config.msg
15613 fi
15614 $rm -f kit*isdone ark*isdone
15615 $rm -rf UU
15616
15617 : End of Configure
15618