Integrate with Sarathy.
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Mon May  8 19:06:18 EET DST 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_fchmod=''
347 d_fchown=''
348 d_fcntl=''
349 d_fd_macros=''
350 d_fd_set=''
351 d_fds_bits=''
352 d_fgetpos=''
353 d_flexfnam=''
354 d_flock=''
355 d_fork=''
356 d_fpos64_t=''
357 d_frexpl=''
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_getspnam=''
399 d_getsbyname=''
400 d_getsbyport=''
401 d_gnulibc=''
402 d_hasmntopt=''
403 d_htonl=''
404 d_iconv=''
405 d_inetaton=''
406 d_int64_t=''
407 d_isascii=''
408 d_isnan=''
409 d_isnanl=''
410 d_killpg=''
411 d_lchown=''
412 d_ldbl_dig=''
413 d_link=''
414 d_locconv=''
415 d_lockf=''
416 d_longdbl=''
417 longdblsize=''
418 d_longlong=''
419 longlongsize=''
420 d_lseekproto=''
421 d_lstat=''
422 d_madvise=''
423 d_mblen=''
424 d_mbstowcs=''
425 d_mbtowc=''
426 d_memchr=''
427 d_memcmp=''
428 d_memcpy=''
429 d_memmove=''
430 d_memset=''
431 d_mkdir=''
432 d_mkdtemp=''
433 d_mkfifo=''
434 d_mkstemp=''
435 d_mkstemps=''
436 d_mktime=''
437 d_mmap=''
438 mmaptype=''
439 d_modfl=''
440 d_mprotect=''
441 d_msg=''
442 d_msgctl=''
443 d_msgget=''
444 d_msgrcv=''
445 d_msgsnd=''
446 d_msync=''
447 d_munmap=''
448 d_nice=''
449 d_off64_t=''
450 d_open3=''
451 d_fpathconf=''
452 d_pathconf=''
453 d_pause=''
454 d_pipe=''
455 d_poll=''
456 d_portable=''
457 d_old_pthread_create_joinable=''
458 old_pthread_create_joinable=''
459 d_pthread_yield=''
460 d_sched_yield=''
461 sched_yield=''
462 d_qgcvt=''
463 d_readdir=''
464 d_rewinddir=''
465 d_seekdir=''
466 d_telldir=''
467 d_readlink=''
468 d_rename=''
469 d_rmdir=''
470 d_safebcpy=''
471 d_safemcpy=''
472 d_sanemcmp=''
473 d_select=''
474 d_sem=''
475 d_semctl=''
476 d_semget=''
477 d_semop=''
478 d_setegid=''
479 d_seteuid=''
480 d_setgrent=''
481 d_setgrps=''
482 d_sethent=''
483 d_setlinebuf=''
484 d_setlocale=''
485 d_setnent=''
486 d_setpent=''
487 d_setpgid=''
488 d_setpgrp2=''
489 d_bsdsetpgrp=''
490 d_setpgrp=''
491 d_setprior=''
492 d_setpwent=''
493 d_setregid=''
494 d_setresgid=''
495 d_setresuid=''
496 d_setreuid=''
497 d_setrgid=''
498 d_setruid=''
499 d_setsent=''
500 d_setsid=''
501 d_setvbuf=''
502 d_sfio=''
503 usesfio=''
504 d_shm=''
505 d_shmat=''
506 d_shmatprototype=''
507 shmattype=''
508 d_shmctl=''
509 d_shmdt=''
510 d_shmget=''
511 d_sigaction=''
512 d_sigsetjmp=''
513 d_msg_ctrunc=''
514 d_msg_dontroute=''
515 d_msg_oob=''
516 d_msg_peek=''
517 d_msg_proxy=''
518 d_oldsock=''
519 d_scm_rights=''
520 d_socket=''
521 d_sockpair=''
522 sockethdr=''
523 socketlib=''
524 d_socklen_t=''
525 d_sqrtl=''
526 d_statblks=''
527 d_statfs_f_flags=''
528 d_statfs_s=''
529 d_fstatvfs=''
530 d_statvfs=''
531 d_stdio_cnt_lval=''
532 d_stdio_ptr_lval=''
533 d_stdiobase=''
534 d_stdstdio=''
535 stdio_base=''
536 stdio_bufsiz=''
537 stdio_cnt=''
538 stdio_filbuf=''
539 stdio_ptr=''
540 d_index=''
541 d_strchr=''
542 d_strcoll=''
543 d_strctcpy=''
544 d_strerrm=''
545 d_strerror=''
546 d_sysernlst=''
547 d_syserrlst=''
548 d_strtod=''
549 d_strtol=''
550 d_strtold=''
551 d_strtoll=''
552 d_strtoul=''
553 d_strtoull=''
554 d_strtouq=''
555 d_strxfrm=''
556 d_symlink=''
557 d_syscall=''
558 d_sysconf=''
559 d_system=''
560 d_tcgetpgrp=''
561 d_tcsetpgrp=''
562 d_telldirproto=''
563 d_time=''
564 timetype=''
565 clocktype=''
566 d_times=''
567 d_truncate=''
568 d_tzname=''
569 d_umask=''
570 d_semctl_semid_ds=''
571 d_semctl_semun=''
572 d_union_semun=''
573 d_ustat=''
574 d_vfork=''
575 usevfork=''
576 d_voidsig=''
577 signal_t=''
578 d_volatile=''
579 d_charvspr=''
580 d_vprintf=''
581 d_wait4=''
582 d_waitpid=''
583 d_wcstombs=''
584 d_wctomb=''
585 dlext=''
586 cccdlflags=''
587 ccdlflags=''
588 dlsrc=''
589 ld=''
590 lddlflags=''
591 usedl=''
592 doublesize=''
593 ebcdic=''
594 fflushNULL=''
595 fflushall=''
596 fpossize=''
597 fpostype=''
598 gidformat=''
599 gidsign=''
600 gidsize=''
601 gidtype=''
602 groupstype=''
603 h_fcntl=''
604 h_sysfile=''
605 i_arpainet=''
606 db_hashtype=''
607 db_prefixtype=''
608 i_db=''
609 i_dbm=''
610 i_rpcsvcdbm=''
611 d_dirnamlen=''
612 direntrytype=''
613 i_dirent=''
614 i_dld=''
615 i_dlfcn=''
616 i_fcntl=''
617 i_float=''
618 i_gdbm=''
619 d_grpasswd=''
620 i_grp=''
621 i_iconv=''
622 i_ieeefp=''
623 i_inttypes=''
624 i_limits=''
625 i_locale=''
626 i_machcthr=''
627 i_malloc=''
628 i_math=''
629 i_memory=''
630 i_mntent=''
631 i_ndbm=''
632 i_netdb=''
633 i_neterrno=''
634 i_netinettcp=''
635 i_niin=''
636 i_sysin=''
637 i_poll=''
638 i_pthread=''
639 d_pwage=''
640 d_pwchange=''
641 d_pwclass=''
642 d_pwcomment=''
643 d_pwexpire=''
644 d_pwgecos=''
645 d_pwpasswd=''
646 d_pwquota=''
647 i_pwd=''
648 i_sfio=''
649 i_shadow=''
650 i_socks=''
651 i_stddef=''
652 i_stdlib=''
653 i_string=''
654 strings=''
655 i_sunmath=''
656 i_sysaccess=''
657 i_sysdir=''
658 i_sysfile=''
659 d_voidtty=''
660 i_bsdioctl=''
661 i_sysfilio=''
662 i_sysioctl=''
663 i_syssockio=''
664 i_syslog=''
665 i_sysmman=''
666 i_sysmode=''
667 i_sysmount=''
668 i_sysndir=''
669 i_sysparam=''
670 i_sysresrc=''
671 i_syssecrt=''
672 i_sysselct=''
673 i_sysstat=''
674 i_sysstatfs=''
675 i_sysstatvfs=''
676 i_systimes=''
677 i_systypes=''
678 i_sysuio=''
679 i_sysun=''
680 i_sysutsname=''
681 i_sysvfs=''
682 i_syswait=''
683 i_sgtty=''
684 i_termio=''
685 i_termios=''
686 i_systime=''
687 i_systimek=''
688 i_time=''
689 timeincl=''
690 i_unistd=''
691 i_ustat=''
692 i_utime=''
693 i_values=''
694 i_stdarg=''
695 i_varargs=''
696 i_varhdr=''
697 i_vfork=''
698 inc_version_list=''
699 inc_version_list_init=''
700 installprefix=''
701 installprefixexp=''
702 installstyle=''
703 installusrbinperl=''
704 intsize=''
705 longsize=''
706 shortsize=''
707 libc=''
708 ldlibpthname=''
709 libperl=''
710 shrpenv=''
711 useshrplib=''
712 glibpth=''
713 libpth=''
714 loclibpth=''
715 plibpth=''
716 xlibpth=''
717 ignore_versioned_solibs=''
718 libs=''
719 libsdirs=''
720 libsfiles=''
721 libsfound=''
722 libspath=''
723 lns=''
724 d_PRIEldbl=''
725 d_PRIFldbl=''
726 d_PRIGldbl=''
727 d_PRIeldbl=''
728 d_PRIfldbl=''
729 d_PRIgldbl=''
730 sPRIEldbl=''
731 sPRIFldbl=''
732 sPRIGldbl=''
733 sPRIeldbl=''
734 sPRIfldbl=''
735 sPRIgldbl=''
736 lseeksize=''
737 lseektype=''
738 make_set_make=''
739 d_mymalloc=''
740 freetype=''
741 mallocobj=''
742 mallocsrc=''
743 malloctype=''
744 usemymalloc=''
745 installman1dir=''
746 man1dir=''
747 man1direxp=''
748 man1ext=''
749 installman3dir=''
750 man3dir=''
751 man3direxp=''
752 man3ext=''
753 huge=''
754 large=''
755 medium=''
756 models=''
757 small=''
758 split=''
759 modetype=''
760 multiarch=''
761 mydomain=''
762 myhostname=''
763 phostname=''
764 c=''
765 n=''
766 d_eofnblk=''
767 eagain=''
768 o_nonblock=''
769 rd_nodata=''
770 netdb_hlen_type=''
771 netdb_host_type=''
772 netdb_name_type=''
773 netdb_net_type=''
774 groupcat=''
775 hostcat=''
776 passcat=''
777 orderlib=''
778 ranlib=''
779 d_perl_otherlibdirs=''
780 otherlibdirs=''
781 package=''
782 spackage=''
783 pager=''
784 api_revision=''
785 api_subversion=''
786 api_version=''
787 api_versionstring=''
788 patchlevel=''
789 revision=''
790 subversion=''
791 version=''
792 perl5=''
793 perladmin=''
794 perlpath=''
795 d_nv_preserved_bits=''
796 d_nv_preserves_uv=''
797 i16size=''
798 i16type=''
799 i32size=''
800 i32type=''
801 i64size=''
802 i64type=''
803 i8size=''
804 i8type=''
805 ivsize=''
806 ivtype=''
807 nvsize=''
808 nvtype=''
809 u16size=''
810 u16type=''
811 u32size=''
812 u32type=''
813 u64size=''
814 u64type=''
815 u8size=''
816 u8type=''
817 uvsize=''
818 uvtype=''
819 ivdformat=''
820 uvoformat=''
821 uvuformat=''
822 uvxformat=''
823 pidtype=''
824 prefix=''
825 prefixexp=''
826 installprivlib=''
827 privlib=''
828 privlibexp=''
829 prototype=''
830 ptrsize=''
831 d_PRIX64=''
832 d_PRId64=''
833 d_PRIi64=''
834 d_PRIo64=''
835 d_PRIu64=''
836 d_PRIx64=''
837 sPRIX64=''
838 sPRId64=''
839 sPRIi64=''
840 sPRIo64=''
841 sPRIu64=''
842 sPRIx64=''
843 d_quad=''
844 quadkind=''
845 quadtype=''
846 uquadtype=''
847 drand01=''
848 randbits=''
849 randfunc=''
850 randseedtype=''
851 seedfunc=''
852 installscript=''
853 scriptdir=''
854 scriptdirexp=''
855 selectminbits=''
856 selecttype=''
857 sh=''
858 sig_count=''
859 sig_name=''
860 sig_name_init=''
861 sig_num=''
862 sig_num_init=''
863 installsitearch=''
864 sitearch=''
865 sitearchexp=''
866 installsitebin=''
867 sitebin=''
868 sitebinexp=''
869 installsitelib=''
870 sitelib=''
871 sitelib_stem=''
872 sitelibexp=''
873 siteprefix=''
874 siteprefixexp=''
875 sizesize=''
876 sizetype=''
877 so=''
878 socksizetype=''
879 sharpbang=''
880 shsharp=''
881 spitshell=''
882 src=''
883 ssizetype=''
884 startperl=''
885 startsh=''
886 stdchar=''
887 d_stdio_stream_array=''
888 stdio_stream_array=''
889 sysman=''
890 trnl=''
891 uidformat=''
892 uidsign=''
893 uidsize=''
894 uidtype=''
895 archname64=''
896 use64bitall=''
897 use64bitint=''
898 uselargefiles=''
899 uselongdouble=''
900 usemorebits=''
901 usemultiplicity=''
902 nm_opt=''
903 nm_so_opt=''
904 runnm=''
905 usenm=''
906 useperlio=''
907 usesocks=''
908 d_oldpthreads=''
909 use5005threads=''
910 useithreads=''
911 usethreads=''
912 incpath=''
913 mips_type=''
914 usrinc=''
915 d_vendorarch=''
916 installvendorarch=''
917 vendorarch=''
918 vendorarchexp=''
919 d_vendorbin=''
920 installvendorbin=''
921 vendorbin=''
922 vendorbinexp=''
923 d_vendorlib=''
924 installvendorlib=''
925 vendorlib=''
926 vendorlib_stem=''
927 vendorlibexp=''
928 usevendorprefix=''
929 vendorprefix=''
930 vendorprefixexp=''
931 defvoidused=''
932 voidflags=''
933 pm_apiversion=''
934 xs_apiversion=''
935 CONFIG=''
936
937 define='define'
938 undef='undef'
939 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
940 rmlist=''
941
942 : We must find out about Eunice early
943 eunicefix=':'
944 if test -f /etc/unixtovms; then
945         eunicefix=/etc/unixtovms
946 fi
947 if test -f /etc/unixtovms.exe; then
948         eunicefix=/etc/unixtovms.exe
949 fi
950
951 i_whoami=''
952 : set useposix=false in your hint file to disable the POSIX extension.
953 useposix=true
954 : set useopcode=false in your hint file to disable the Opcode extension.
955 useopcode=true
956 : Trailing extension.  Override this in a hint file, if needed.
957 _exe=''
958 : Extra object files, if any, needed on this platform.
959 archobjs=''
960 : Possible local include directories to search.
961 : Set locincpth to "" in a hint file to defeat local include searches.
962 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
963 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
964 :
965 : no include file wanted by default
966 inclwanted=''
967
968 groupstype=''
969 : change the next line if compiling for Xenix/286 on Xenix/386
970 xlibpth='/usr/lib/386 /lib/386'
971 : Possible local library directories to search.
972 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
973 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
974
975 : general looking path for locating libraries
976 glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
977 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
978 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
979 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
980 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
981
982 : Private path used by Configure to find libraries.  Its value
983 : is prepended to libpth. This variable takes care of special
984 : machines, like the mips.  Usually, it should be empty.
985 plibpth=''
986
987 : default library list
988 libswanted=''
989 : some systems want to use only the non-versioned libso:s
990 ignore_versioned_solibs=''
991 : set usemultiplicity on the Configure command line to enable multiplicity.
992 : set usesocks on the Configure command line to enable socks.
993 : set usethreads on the Configure command line to enable threads.
994 : full support for void wanted by default
995 defvoidused=15
996
997 : List of libraries we want.
998 : If anyone needs -lnet, put it in a hint file.
999 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1000 libswanted="$libswanted dld ld sun m c cposix posix"
1001 libswanted="$libswanted ndir dir crypt sec"
1002 libswanted="$libswanted ucb bsd BSD PW x iconv"
1003 : We probably want to search /usr/shlib before most other libraries.
1004 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1005 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1006 glibpth="/usr/shlib $glibpth"
1007 : Do not use vfork unless overridden by a hint file.
1008 usevfork=false
1009
1010 : Find the basic shell for Bourne shell scripts
1011 case "$sh" in
1012 '')
1013         case "$SYSTYPE" in
1014         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1015         *) xxx='/bin/sh';;
1016         esac
1017         if test -f "$xxx"; then
1018                 sh="$xxx"
1019         else
1020                 : Build up a list and do a single loop so we can 'break' out.
1021                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1022                 for xxx in sh bash ksh pdksh ash; do
1023                         for p in $pth; do
1024                                 try="$try ${p}/${xxx}"
1025                         done
1026                 done
1027                 for xxx in $try; do
1028                         if test -f "$xxx"; then
1029                                 sh="$xxx";
1030                                 break
1031                         elif test -f "$xxx.exe"; then
1032                                 sh="$xxx";
1033                                 break
1034                         fi
1035                 done
1036         fi
1037         ;;
1038 esac
1039
1040 case "$sh" in
1041 '')     cat <<EOM >&2
1042 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1043
1044 Usually it's in /bin/sh.  How did you even get this far?
1045 Please contact me (Perl Maintainers) at perlbug@perl.com and 
1046 we'll try to straighten this all out.
1047 EOM
1048         exit 1
1049         ;;
1050 esac
1051
1052 : see if sh knows # comments
1053 if `$sh -c '#' >/dev/null 2>&1`; then
1054         shsharp=true
1055         spitshell=cat
1056         xcat=/bin/cat
1057         test -f $xcat || xcat=/usr/bin/cat
1058         echo "#!$xcat" >try
1059         $eunicefix try
1060         chmod +x try
1061         ./try > today
1062         if test -s today; then
1063                 sharpbang='#!'
1064         else
1065                 echo "#! $xcat" > try
1066                 $eunicefix try
1067                 chmod +x try
1068                 ./try > today
1069                 if test -s today; then
1070                         sharpbang='#! '
1071                 else
1072                         sharpbang=': use '
1073                 fi
1074         fi
1075 else
1076         echo " "
1077         echo "Your $sh doesn't grok # comments--I will strip them later on."
1078         shsharp=false
1079         cd ..
1080         echo "exec grep -v '^[  ]*#'" >spitshell
1081         chmod +x spitshell
1082         $eunicefix spitshell
1083         spitshell=`pwd`/spitshell
1084         cd UU
1085         echo "I presume that if # doesn't work, #! won't work either!"
1086         sharpbang=': use '
1087 fi
1088 rm -f try today
1089
1090 : figure out how to guarantee sh startup
1091 case "$startsh" in
1092 '') startsh=${sharpbang}${sh} ;;
1093 *)
1094 esac
1095 cat >try <<EOSS
1096 $startsh
1097 set abc
1098 test "$?abc" != 1
1099 EOSS
1100
1101 chmod +x try
1102 $eunicefix try
1103 if ./try; then
1104         : echo "Yup, it does."
1105 else
1106         echo "Hmm... '$startsh' does not guarantee sh startup..."
1107         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1108 fi
1109 rm -f try
1110
1111
1112 : Save command line options in file UU/cmdline.opt for later use in
1113 : generating config.sh.
1114 cat > cmdline.opt <<EOSH
1115 # Configure command line arguments.
1116 config_arg0='$0'
1117 config_args='$*'
1118 config_argc=$#
1119 EOSH
1120 argn=1
1121 for arg in "$@"; do
1122         cat >>cmdline.opt <<EOSH
1123 config_arg$argn='$arg'
1124 EOSH
1125         argn=`expr $argn + 1`
1126 done
1127
1128 : produce awk script to parse command line options
1129 cat >options.awk <<'EOF'
1130 BEGIN {
1131         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1132
1133         len = length(optstr);
1134         for (i = 1; i <= len; i++) {
1135                 c = substr(optstr, i, 1);
1136                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1137                 if (a == ":") {
1138                         arg[c] = 1;
1139                         i++;
1140                 }
1141                 opt[c] = 1;
1142         }
1143 }
1144 {
1145         expect = 0;
1146         str = $0;
1147         if (substr(str, 1, 1) != "-") {
1148                 printf("'%s'\n", str);
1149                 next;
1150         }
1151         len = length($0);
1152         for (i = 2; i <= len; i++) {
1153                 c = substr(str, i, 1);
1154                 if (!opt[c]) {
1155                         printf("-%s\n", substr(str, i));
1156                         next;
1157                 }
1158                 printf("-%s\n", c);
1159                 if (arg[c]) {
1160                         if (i < len)
1161                                 printf("'%s'\n", substr(str, i + 1));
1162                         else
1163                                 expect = 1;
1164                         next;
1165                 }
1166         }
1167 }
1168 END {
1169         if (expect)
1170                 print "?";
1171 }
1172 EOF
1173
1174 : process the command line options
1175 set X `for arg in "$@"; do echo "X$arg"; done |
1176         sed -e s/X// | awk -f options.awk`
1177 eval "set $*"
1178 shift
1179 rm -f options.awk
1180
1181 : set up default values
1182 fastread=''
1183 reuseval=false
1184 config_sh=''
1185 alldone=''
1186 error=''
1187 silent=''
1188 extractsh=''
1189 override=''
1190 knowitall=''
1191 rm -f optdef.sh posthint.sh
1192 cat >optdef.sh <<EOS
1193 $startsh
1194 EOS
1195
1196
1197 : option parsing
1198 while test $# -gt 0; do
1199         case "$1" in
1200         -d) shift; fastread=yes;;
1201         -e) shift; alldone=cont;;
1202         -f)
1203                 shift
1204                 cd ..
1205                 if test -r "$1"; then
1206                         config_sh="$1"
1207                 else
1208                         echo "$me: cannot read config file $1." >&2
1209                         error=true
1210                 fi
1211                 cd UU
1212                 shift;;
1213         -h) shift; error=true;;
1214         -r) shift; reuseval=true;;
1215         -s) shift; silent=true; realsilent=true;;
1216         -E) shift; alldone=exit;;
1217         -K) shift; knowitall=true;;
1218         -O) shift; override=true;;
1219         -S) shift; silent=true; extractsh=true;;
1220         -D)
1221                 shift
1222                 case "$1" in
1223                 *=)
1224                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1225                         echo "$me: ignoring -D $1" >&2
1226                         ;;
1227                 *=*) echo "$1" | \
1228                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1229                 *) echo "$1='define'" >> optdef.sh;;
1230                 esac
1231                 shift
1232                 ;;
1233         -U)
1234                 shift
1235                 case "$1" in
1236                 *=) echo "$1" >> optdef.sh;;
1237                 *=*)
1238                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1239                         echo "$me: ignoring -U $1" >&2
1240                         ;;
1241                 *) echo "$1='undef'" >> optdef.sh;;
1242                 esac
1243                 shift
1244                 ;;
1245         -A)
1246             shift
1247             xxx=''
1248             yyy="$1"
1249             zzz=''
1250             uuu=undef
1251             case "$yyy" in
1252             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1253                  case "$zzz" in
1254                  *:*) zzz='' ;;
1255                  *)   xxx=append
1256                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1257                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1258                  esac
1259                  ;;
1260             esac
1261             case "$xxx" in
1262             '')  case "$yyy" in
1263                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1264                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1265                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1266                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1267                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1268                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1269                  esac
1270                  ;;       
1271             esac
1272             case "$xxx" in
1273             append)
1274                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1275             clear)
1276                 echo "$yyy=''"                  >> posthint.sh ;;
1277             define)
1278                 case "$zzz" in
1279                 '') zzz=define ;;
1280                 esac
1281                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1282             eval)
1283                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1284             prepend)
1285                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1286             undef)
1287                 case "$zzz" in
1288                 '') zzz="$uuu" ;;
1289                 esac
1290                 echo "$yyy=$zzz"                >> posthint.sh ;;
1291             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1292             esac
1293             shift
1294             ;;
1295         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1296             exit 0;;
1297         --) break;;
1298         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1299         *) break;;
1300         esac
1301 done
1302
1303 case "$error" in
1304 true)
1305         cat >&2 <<EOM
1306 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1307                  [-U symbol] [-U symbol=] [-A command:symbol...]
1308   -d : use defaults for all answers.
1309   -e : go on without questioning past the production of config.sh.
1310   -f : specify an alternate default configuration file.
1311   -h : print this help message and exit (with an error status).
1312   -r : reuse C symbols value if possible (skips costly nm extraction).
1313   -s : silent mode, only echoes questions and essential information.
1314   -D : define symbol to have some value:
1315          -D symbol         symbol gets the value 'define'
1316          -D symbol=value   symbol gets the value 'value'
1317   -E : stop at the end of questions, after having produced config.sh.
1318   -K : do not use unless you know what you are doing.
1319   -O : let -D and -U override definitions from loaded configuration file.
1320   -S : perform variable substitutions on all .SH files (can mix with -f)
1321   -U : undefine symbol:
1322          -U symbol    symbol gets the value 'undef'
1323          -U symbol=   symbol gets completely empty
1324   -A : manipulate symbol after the platform specific hints have been applied:
1325          -A symbol=value                append " "value to symbol
1326          -A append:symbol=value         append value to symbol
1327          -A define:symbol=value         define symbol to have value
1328          -A clear:symbol                define symbol to be ''
1329          -A define:symbol               define symbol to be 'define'
1330          -A eval:symbol=value           define symbol to be eval of value
1331          -A prepend:symbol=value        prepend value to symbol
1332          -A undef:symbol                define symbol to be 'undef'
1333          -A undef:symbol=               define symbol to be ''
1334   -V : print version number and exit (with a zero status).
1335 EOM
1336         exit 1
1337         ;;
1338 esac
1339
1340 : Sanity checks
1341 case "$fastread$alldone" in
1342 yescont|yesexit) ;;
1343 *)
1344         case "$extractsh" in
1345         true) ;;
1346         *)
1347                 if test ! -t 0; then
1348                         echo "Say 'sh Configure', not 'sh <Configure'"
1349                         exit 1
1350                 fi
1351                 ;;
1352         esac
1353         ;;
1354 esac
1355
1356 exec 4>&1
1357 case "$silent" in
1358 true) exec 1>/dev/null;;
1359 esac
1360
1361 : run the defines and the undefines, if any, but leave the file out there...
1362 touch optdef.sh
1363 . ./optdef.sh
1364 : create the posthint manipulation script and leave the file out there...
1365 touch posthint.sh
1366
1367 : set package name
1368 package=perl5
1369 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1370 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1371 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1372 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1373 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1374 esac
1375
1376 : Some greps do not return status, grrr.
1377 echo "grimblepritz" >grimble
1378 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1379         contains=contains
1380 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1381         contains=grep
1382 else
1383         contains=contains
1384 fi
1385 rm -f grimble
1386 : the following should work in any shell
1387 case "$contains" in
1388 contains*)
1389         echo " "
1390         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1391         cat >contains <<'EOSS'
1392 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1393 EOSS
1394 chmod +x contains
1395 esac
1396
1397 : Find the path to the source tree
1398 case "$src" in
1399 '') case "$0" in
1400     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1401          case "$src" in
1402          /*)    ;;
1403          *)     src=`cd ../$src && pwd` ;;
1404          esac
1405          ;;
1406     *)   src='.';;
1407     esac;;
1408 esac
1409 case "$src" in
1410 '')     src=/
1411         rsrc=/
1412         ;;
1413 /*) rsrc="$src";;
1414 *) rsrc="../$src";;
1415 esac
1416 if test -f $rsrc/Configure && \
1417         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1418 then
1419    : found it, so we are ok.
1420 else
1421         rsrc=''
1422         for src in . .. ../.. ../../.. ../../../..; do
1423                 if test -f ../$src/Configure && \
1424                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1425                 then
1426                         rsrc=../$src
1427                         break
1428                 fi
1429         done
1430 fi
1431 case "$rsrc" in
1432 '')
1433         cat <<EOM >&4
1434
1435 Sorry, I can't seem to locate the source dir for $package.  Please start
1436 Configure with an explicit path -- i.e. /some/path/Configure.
1437
1438 EOM
1439         exit 1
1440         ;;
1441 ../.)   rsrc='..';;
1442 *)
1443         echo " "
1444         echo "Sources for $package found in \"$src\"." >&4
1445         ;;
1446 esac
1447
1448 : script used to extract .SH files with variable substitutions
1449 cat >extract <<'EOS'
1450 CONFIGDOTSH=true
1451 echo "Doing variable substitutions on .SH files..."
1452 if test -f $src/MANIFEST; then
1453         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1454 else
1455         echo "(Looking for .SH files under the source directory.)"
1456         set x `(cd $src; find . -name "*.SH" -print)`
1457 fi
1458 shift
1459 case $# in
1460 0) set x `(cd $src; echo *.SH)`; shift;;
1461 esac
1462 if test ! -f $src/$1; then
1463         shift
1464 fi
1465 mkdir_p='
1466 name=$1;
1467 create="";
1468 while test $name; do
1469         if test ! -d "$name"; then
1470                 create="$name $create";
1471                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1472                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1473         else
1474                 name="";
1475         fi;
1476 done;
1477 for file in $create; do
1478         mkdir $file;
1479 done
1480 '
1481 for file in $*; do
1482         case "$src" in
1483         ".")
1484                 case "$file" in
1485                 */*)
1486                         dir=`expr X$file : 'X\(.*\)/'`
1487                         file=`expr X$file : 'X.*/\(.*\)'`
1488                         (cd $dir && . ./$file)
1489                         ;;
1490                 *)
1491                         . ./$file
1492                         ;;
1493                 esac
1494                 ;;
1495         *)
1496                 case "$file" in
1497                 */*)
1498                         dir=`expr X$file : 'X\(.*\)/'`
1499                         file=`expr X$file : 'X.*/\(.*\)'`
1500                         (set x $dir; shift; eval $mkdir_p)
1501                         sh <$src/$dir/$file
1502                         ;;
1503                 *)
1504                         sh <$src/$file
1505                         ;;
1506                 esac
1507                 ;;
1508         esac
1509 done
1510 if test -f $src/config_h.SH; then
1511         if test ! -f config.h; then
1512         : oops, they left it out of MANIFEST, probably, so do it anyway.
1513         . $src/config_h.SH
1514         fi
1515 fi
1516 EOS
1517
1518 : extract files and exit if asked to do so
1519 case "$extractsh" in
1520 true)
1521         case "$realsilent" in
1522         true) ;;
1523         *) exec 1>&4;;
1524         esac
1525         case "$config_sh" in
1526         '') config_sh='config.sh';;
1527         esac
1528         echo " "
1529         echo "Fetching answers from $config_sh..."
1530         cd ..
1531         . $config_sh
1532         test "$override" && . ./optdef.sh
1533         echo " "
1534         . UU/extract
1535         rm -rf UU
1536         echo "Done."
1537         exit 0
1538         ;;
1539 esac
1540
1541 : Eunice requires " " instead of "", can you believe it
1542 echo " "
1543 : Here we go...
1544 echo "Beginning of configuration questions for $package."
1545
1546 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1547
1548 : first determine how to suppress newline on echo command
1549 echo " "
1550 echo "Checking echo to see how to suppress newlines..."
1551 (echo "hi there\c" ; echo " ") >.echotmp
1552 if $contains c .echotmp >/dev/null 2>&1 ; then
1553         echo "...using -n."
1554         n='-n'
1555         c=''
1556 else
1557         cat <<'EOM'
1558 ...using \c
1559 EOM
1560         n=''
1561         c='\c'
1562 fi
1563 echo $n "The star should be here-->$c"
1564 echo '*'
1565 rm -f .echotmp
1566
1567 : Now test for existence of everything in MANIFEST
1568 echo " "
1569 if test -f $rsrc/MANIFEST; then
1570         echo "First let's make sure your kit is complete.  Checking..." >&4
1571         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1572         rm -f missing
1573         tmppwd=`pwd`
1574         for filelist in x??; do
1575                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1576         done
1577         if test -s missing; then
1578                 cat missing >&4
1579                 cat >&4 <<'EOM'
1580
1581 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1582
1583 You have the option of continuing the configuration process, despite the
1584 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1585 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1586 and contact the author (perlbug@perl.com).
1587
1588 EOM
1589                 echo $n "Continue? [n] $c" >&4
1590                 read ans
1591                 case "$ans" in
1592                 y*)
1593                         echo "Continuing..." >&4
1594                         rm -f missing
1595                         ;;
1596                 *)
1597                         echo "ABORTING..." >&4
1598                         kill $$
1599                         ;;
1600                 esac
1601         else
1602                 echo "Looks good..."
1603         fi
1604 else
1605         echo "There is no MANIFEST file.  I hope your kit is complete !"
1606 fi
1607 rm -f missing x??
1608
1609 echo " "
1610 : Find the appropriate value for a newline for tr
1611 if test -n "$DJGPP"; then
1612        trnl='\012'
1613 fi
1614 if test X"$trnl" = X; then
1615         case "`echo foo|tr '\n' x 2>/dev/null`" in
1616         foox) trnl='\n' ;;
1617         esac
1618 fi
1619 if test X"$trnl" = X; then
1620         case "`echo foo|tr '\012' x 2>/dev/null`" in
1621         foox) trnl='\012' ;;
1622         esac
1623 fi
1624 if test X"$trnl" = X; then
1625         cat <<EOM >&2
1626
1627 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1628
1629 EOM
1630         exit 1
1631 fi
1632
1633 : compute the number of columns on the terminal for proper question formatting
1634 case "$COLUMNS" in
1635 '') COLUMNS='80';;
1636 esac
1637
1638 : set up the echo used in my read
1639 myecho="case \"\$xxxm\" in
1640 '') echo $n \"\$rp $c\" >&4;;
1641 *) case \"\$rp\" in
1642         '') echo $n \"[\$xxxm] $c\";;
1643         *)
1644                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1645                         echo \"\$rp\" >&4
1646                         echo $n \"[\$xxxm] $c\" >&4
1647                 else
1648                         echo $n \"\$rp [\$xxxm] $c\" >&4
1649                 fi
1650                 ;;
1651         esac;;
1652 esac"
1653
1654 : now set up to do reads with possible shell escape and default assignment
1655 cat <<EOSC >myread
1656 $startsh
1657 xxxm=\$dflt
1658 $myecho
1659 ans='!'
1660 case "\$fastread" in
1661 yes) case "\$dflt" in
1662         '') ;;
1663         *) ans='';
1664                 case "\$silent-\$rp" in
1665                 true-) ;;
1666                 *) echo " " >&4;;
1667                 esac;;
1668         esac;;
1669 *) case "\$silent" in
1670         true) case "\$rp" in
1671                 '') ans='';;
1672                 esac;;
1673         esac;;
1674 esac
1675 while expr "X\$ans" : "X!" >/dev/null; do
1676         read answ
1677         set x \$xxxm
1678         shift
1679         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1680         case  "\$answ" in
1681         "!")
1682                 sh 1>&4
1683                 echo " "
1684                 $myecho
1685                 ;;
1686         !*)
1687                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1688                 shift
1689                 sh 1>&4 -c "\$*"
1690                 echo " "
1691                 $myecho
1692                 ;;
1693         "\$ans")
1694                 case "\$ans" in
1695                 \\&*)
1696                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1697                         shift
1698                         case "\$1" in
1699                         -d)
1700                                 fastread=yes
1701                                 echo "(OK, I'll run with -d after this question.)" >&4
1702                                 ;;
1703                         -*)
1704                                 echo "*** Sorry, \$1 not supported yet." >&4
1705                                 ;;
1706                         esac
1707                         $myecho
1708                         ans=!
1709                         ;;
1710                 esac;;
1711         *)
1712                 case "\$aok" in
1713                 y)
1714                         echo "*** Substitution done -- please confirm."
1715                         xxxm="\$ans"
1716                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1717                         xxxm="\$ans"
1718                         ans=!
1719                         ;;
1720                 *)
1721                         echo "*** Error -- try again."
1722                         ans=!
1723                         ;;
1724                 esac
1725                 $myecho
1726                 ;;
1727         esac
1728         case "\$ans\$xxxm\$nostick" in
1729         '')
1730                 ans=!
1731                 $myecho
1732                 ;;
1733         esac
1734 done
1735 case "\$ans" in
1736 '') ans="\$xxxm";;
1737 esac
1738 EOSC
1739
1740 : create .config dir to save info across Configure sessions
1741 test -d ../.config || mkdir ../.config
1742 cat >../.config/README <<EOF
1743 This directory created by Configure to save information that should
1744 persist across sessions for $package.
1745
1746 You may safely delete it if you wish.
1747 EOF
1748
1749 : general instructions
1750 needman=true
1751 firsttime=true
1752 user=`(logname) 2>/dev/null`
1753 case "$user" in
1754 '') user=`whoami 2>&1`;;
1755 esac
1756 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1757         firsttime=false
1758         echo " "
1759         rp='Would you like to see the instructions?'
1760         dflt=n
1761         . ./myread
1762         case "$ans" in
1763         [yY]*) ;;
1764         *) needman=false;;
1765         esac
1766 fi
1767 if $needman; then
1768         cat <<EOH
1769
1770 This installation shell script will examine your system and ask you questions
1771 to determine how the perl5 package should be installed. If you get
1772 stuck on a question, you may use a ! shell escape to start a subshell or
1773 execute a command.  Many of the questions will have default answers in square
1774 brackets; typing carriage return will give you the default.
1775
1776 On some of the questions which ask for file or directory names you are allowed
1777 to use the ~name construct to specify the login directory belonging to "name",
1778 even if you don't have a shell which knows about that.  Questions where this is
1779 allowed will be marked "(~name ok)".
1780
1781 EOH
1782         rp=''
1783         dflt='Type carriage return to continue'
1784         . ./myread
1785         cat <<'EOH'
1786
1787 The prompter used in this script allows you to use shell variables and
1788 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1789 in the default answer, as if the default line was a set of arguments given to a
1790 script shell.  This means you may also use $* to repeat the whole default line,
1791 so you do not have to re-type everything to add something to the default.
1792
1793 Everytime there is a substitution, you will have to confirm.  If there is an
1794 error (e.g. an unmatched backtick), the default answer will remain unchanged
1795 and you will be prompted again.
1796
1797 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1798 the questions and use the computed defaults (or the previous answers if there
1799 was already a config.sh file). Type 'Configure -h' for a list of options.
1800 You may also start interactively and then answer '& -d' at any prompt to turn
1801 on the non-interactive behaviour for the remainder of the execution.
1802
1803 EOH
1804         . ./myread
1805         cat <<EOH
1806
1807 Much effort has been expended to ensure that this shell script will run on any
1808 Unix system.  If despite that it blows up on yours, your best bet is to edit
1809 Configure and run it again.  If you can't run Configure for some reason,
1810 you'll have to generate a config.sh file by hand.  Whatever problems you
1811 have, let me (perlbug@perl.com) know how I blew it.
1812
1813 This installation script affects things in two ways:
1814
1815 1) it may do direct variable substitutions on some of the files included
1816    in this kit.
1817 2) it builds a config.h file for inclusion in C programs.  You may edit
1818    any of these files as the need arises after running this script.
1819
1820 If you make a mistake on a question, there is no easy way to back up to it
1821 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1822 files.  Configure will offer to let you do this before it runs the SH files.
1823
1824 EOH
1825         dflt='Type carriage return to continue'
1826         . ./myread
1827         case "$firsttime" in
1828         true) echo $user >>../.config/instruct;;
1829         esac
1830 fi
1831
1832 : find out where common programs are
1833 echo " "
1834 echo "Locating common programs..." >&4
1835 cat <<EOSC >loc
1836 $startsh
1837 case \$# in
1838 0) exit 1;;
1839 esac
1840 thing=\$1
1841 shift
1842 dflt=\$1
1843 shift
1844 for dir in \$*; do
1845         case "\$thing" in
1846         .)
1847         if test -d \$dir/\$thing; then
1848                 echo \$dir
1849                 exit 0
1850         fi
1851         ;;
1852         *)
1853         for thisthing in \$dir/\$thing; do
1854                 : just loop through to pick last item
1855         done
1856         if test -f \$thisthing; then
1857                 echo \$thisthing
1858                 exit 0
1859         elif test -f \$dir/\$thing.exe; then
1860                 if test -n "$DJGPP"; then
1861                         echo \$dir/\$thing.exe
1862                 else
1863                         : on Eunice apparently
1864                         echo \$dir/\$thing
1865                 fi
1866                 exit 0
1867         fi
1868         ;;
1869         esac
1870 done
1871 echo \$dflt
1872 exit 1
1873 EOSC
1874 chmod +x loc
1875 $eunicefix loc
1876 loclist="
1877 awk
1878 cat
1879 comm
1880 cp
1881 echo
1882 expr
1883 grep
1884 ls
1885 make
1886 mkdir
1887 rm
1888 sed
1889 sort
1890 touch
1891 tr
1892 uniq
1893 "
1894 trylist="
1895 Mcc
1896 ar
1897 byacc
1898 cpp
1899 csh
1900 date
1901 egrep
1902 gzip
1903 less
1904 ln
1905 more
1906 nm
1907 nroff
1908 pg
1909 test
1910 uname
1911 zip
1912 "
1913 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1914 pth="$pth /lib /usr/lib"
1915 for file in $loclist; do
1916         eval xxx=\$$file
1917         case "$xxx" in
1918         /*|?:[\\/]*)
1919                 if test -f "$xxx"; then
1920                         : ok
1921                 else
1922                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1923                         xxx=`./loc $file $file $pth`
1924                 fi
1925                 ;;
1926         '') xxx=`./loc $file $file $pth`;;
1927         *) xxx=`./loc $xxx $xxx $pth`;;
1928         esac
1929         eval $file=$xxx
1930         eval _$file=$xxx
1931         case "$xxx" in
1932         /*)
1933                 echo $file is in $xxx.
1934                 ;;
1935         ?:[\\/]*)
1936                 echo $file is in $xxx.
1937                 ;;
1938         *)
1939                 echo "I don't know where '$file' is, and my life depends on it." >&4
1940                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1941                 exit 1
1942                 ;;
1943         esac
1944 done
1945 echo " "
1946 echo "Don't worry if any of the following aren't found..."
1947 say=offhand
1948 for file in $trylist; do
1949         eval xxx=\$$file
1950         case "$xxx" in
1951         /*|?:[\\/]*)
1952                 if test -f "$xxx"; then
1953                         : ok
1954                 else
1955                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1956                         xxx=`./loc $file $file $pth`
1957                 fi
1958                 ;;
1959         '') xxx=`./loc $file $file $pth`;;
1960         *) xxx=`./loc $xxx $xxx $pth`;;
1961         esac
1962         eval $file=$xxx
1963         eval _$file=$xxx
1964         case "$xxx" in
1965         /*)
1966                 echo $file is in $xxx.
1967                 ;;
1968         ?:[\\/]*)
1969                 echo $file is in $xxx.
1970                 ;;
1971         *)
1972                 echo "I don't see $file out there, $say."
1973                 say=either
1974                 ;;
1975         esac
1976 done
1977 case "$egrep" in
1978 egrep)
1979         echo "Substituting grep for egrep."
1980         egrep=$grep
1981         ;;
1982 esac
1983 case "$ln" in
1984 ln)
1985         echo "Substituting cp for ln."
1986         ln=$cp
1987         ;;
1988 esac
1989 case "$test" in
1990 test)
1991         echo "Hopefully test is built into your sh."
1992         ;;
1993 *)
1994         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1995                 echo "Using the test built into your sh."
1996                 test=test
1997                 _test=test
1998         fi
1999         ;;
2000 esac
2001 case "$echo" in
2002 echo)
2003         echo "Hopefully echo is built into your sh."
2004         ;;
2005 '') ;;
2006 *)
2007         echo " "
2008 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2009         $echo $n "hi there$c" >foo1
2010         echo $n "hi there$c" >foo2
2011         if cmp foo1 foo2 >/dev/null 2>&1; then
2012                 echo "They are compatible.  In fact, they may be identical."
2013         else
2014                 case "$n" in
2015                 '-n') n='' c='\c';;
2016                 *) n='-n' c='';;
2017                 esac
2018                 cat <<FOO
2019 They are not compatible!  You are probably running ksh on a non-USG system.
2020 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2021 have echo built in and we may have to run some Bourne shell scripts.  That
2022 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2023
2024 FOO
2025                 $echo $n "The star should be here-->$c"
2026                 $echo "*"
2027         fi
2028         $rm -f foo1 foo2
2029         ;;
2030 esac
2031
2032 : determine whether symbolic links are supported
2033 echo " "
2034 $touch blurfl
2035 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2036         echo "Symbolic links are supported." >&4
2037         lns="$ln -s"
2038 else
2039         echo "Symbolic links are NOT supported." >&4
2040         lns="$ln"
2041 fi
2042 $rm -f blurfl sym
2043
2044 : see whether [:lower:] and [:upper:] are supported character classes
2045 echo " "
2046 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2047 ABYZ)
2048         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2049         up='[:upper:]'
2050         low='[:lower:]'
2051         ;;
2052 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2053         # (0xc9 and 0xd1), therefore that is a nice testing point.
2054         if test "X$up" = X -o "X$low" = X; then
2055             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2056             ij) up='[A-Z]'
2057                 low='[a-z]'
2058                 ;;
2059             esac
2060         fi
2061         if test "X$up" = X -o "X$low" = X; then
2062             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2063             ij) up='A-Z'
2064                 low='a-z'
2065                 ;;
2066             esac
2067         fi
2068         if test "X$up" = X -o "X$low" = X; then
2069             case "`echo IJ | od -x 2>/dev/null`" in
2070             *C9D1*|*c9d1*)
2071                 echo "Hey, this might be EBCDIC." >&4
2072                 if test "X$up" = X -o "X$low" = X; then
2073                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2074                     ij) up='[A-IJ-RS-Z]'
2075                         low='[a-ij-rs-z]'
2076                         ;;
2077                     esac
2078                 fi
2079                 if test "X$up" = X -o "X$low" = X; then
2080                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2081                     ij) up='A-IJ-RS-Z'
2082                         low='a-ij-rs-z'
2083                         ;;
2084                     esac
2085                 fi
2086                 ;;
2087             esac
2088         fi
2089 esac
2090 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2091 ij)
2092     echo "Using $up and $low to convert case." >&4
2093     ;;
2094 *)
2095     echo "I don't know how to translate letters from upper to lower case." >&4
2096     echo "Your tr is not acting any way I know of." >&4
2097     exit 1
2098     ;;
2099 esac
2100 : set up the translation script tr, must be called with ./tr of course
2101 cat >tr <<EOSC
2102 $startsh
2103 case "\$1\$2" in
2104 '[A-Z][a-z]') exec $tr '$up' '$low';;
2105 '[a-z][A-Z]') exec $tr '$low' '$up';;
2106 esac
2107 exec $tr "\$@"
2108 EOSC
2109 chmod +x tr
2110 $eunicefix tr
2111
2112 : Try to determine whether config.sh was made on this system
2113 case "$config_sh" in
2114 '')
2115 myuname=`$uname -a 2>/dev/null`
2116 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2117 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2118 # because the A-Z/a-z are not consecutive.
2119 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2120         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2121 newmyuname="$myuname"
2122 dflt=n
2123 case "$knowitall" in
2124 '')
2125         if test -f ../config.sh; then
2126                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2127                         eval "`grep myuname= ../config.sh`"
2128                 fi
2129                 if test "X$myuname" = "X$newmyuname"; then
2130                         dflt=y
2131                 fi
2132         fi
2133         ;;
2134 *) dflt=y;;
2135 esac
2136
2137 : Get old answers from old config file if Configure was run on the
2138 : same system, otherwise use the hints.
2139 hint=default
2140 cd ..
2141 if test -f config.sh; then
2142         echo " "
2143         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2144         . UU/myread
2145         case "$ans" in
2146         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2147         *)  echo "Fetching default answers from your old config.sh file..." >&4
2148                 tmp_n="$n"
2149                 tmp_c="$c"
2150                 tmp_sh="$sh"
2151                 . ./config.sh
2152                 cp config.sh UU
2153                 n="$tmp_n"
2154                 c="$tmp_c"
2155                 : Older versions did not always set $sh.  Catch re-use of such
2156                 : an old config.sh.
2157                 case "$sh" in
2158                 '') sh="$tmp_sh" ;;
2159                 esac
2160                 hint=previous
2161                 ;;
2162         esac
2163 fi
2164 if test ! -f config.sh; then
2165         $cat <<EOM
2166
2167 First time through, eh?  I have some defaults handy for some systems
2168 that need some extra help getting the Configure answers right:
2169
2170 EOM
2171         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2172         dflt=''
2173         : Half the following guesses are probably wrong... If you have better
2174         : tests or hints, please send them to perlbug@perl.com
2175         : The metaconfig authors would also appreciate a copy...
2176         $test -f /irix && osname=irix
2177         $test -f /xenix && osname=sco_xenix
2178         $test -f /dynix && osname=dynix
2179         $test -f /dnix && osname=dnix
2180         $test -f /lynx.os && osname=lynxos
2181         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2182         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2183         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2184         $test -f /bin/mips && /bin/mips && osname=mips
2185         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2186                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2187         $test -d /usr/apollo/bin && osname=apollo
2188         $test -f /etc/saf/_sactab && osname=svr4
2189         $test -d /usr/include/minix && osname=minix
2190         if $test -d /MachTen -o -d /MachTen_Folder; then
2191                 osname=machten
2192                 if $test -x /sbin/version; then
2193                         osvers=`/sbin/version | $awk '{print $2}' |
2194                         $sed -e 's/[A-Za-z]$//'`
2195                 elif $test -x /usr/etc/version; then
2196                         osvers=`/usr/etc/version | $awk '{print $2}' |
2197                         $sed -e 's/[A-Za-z]$//'`
2198                 else
2199                         osvers="$2.$3"
2200                 fi
2201         fi
2202
2203         $test -f /sys/posix.dll &&
2204                 $test -f /usr/bin/what &&
2205                 set X `/usr/bin/what /sys/posix.dll` &&
2206                 $test "$3" = UWIN &&
2207                 osname=uwin &&
2208                 osvers="$5"
2209
2210         if $test -f $uname; then
2211                 set X $myuname
2212                 shift
2213
2214                 case "$5" in
2215                 fps*) osname=fps ;;
2216                 mips*)
2217                         case "$4" in
2218                         umips) osname=umips ;;
2219                         *) osname=mips ;;
2220                         esac;;
2221                 [23]100) osname=mips ;;
2222                 next*) osname=next ;;
2223                 i386*)
2224                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2225                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2226                                 osname='sco'
2227                                 osvers=$tmp
2228                         elif $test -f /etc/kconfig; then
2229                                 osname=isc
2230                                 if test "$lns" = "$ln -s"; then
2231                                         osvers=4
2232                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2233                                         osvers=3
2234                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2235                                         osvers=2
2236                                 fi
2237                         fi
2238                         tmp=''
2239                         ;;
2240                 pc*)
2241                         if test -n "$DJGPP"; then
2242                                 osname=dos
2243                                 osvers=djgpp
2244                         fi
2245                         ;;
2246                 esac
2247
2248                 case "$1" in
2249                 aix) osname=aix
2250                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2251                         case "$tmp" in
2252                         'not found') osvers="$4"."$3" ;;
2253                         '<3240'|'<>3240') osvers=3.2.0 ;;
2254                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2255                         '=3250'|'>3250') osvers=3.2.5 ;;
2256                         *) osvers=$tmp;;
2257                         esac
2258                         ;;
2259                 bsd386) osname=bsd386
2260                         osvers=`$uname -r`
2261                         ;;
2262                 cygwin*) osname=cygwin
2263                         osvers="$3"
2264                         ;;
2265                 *dc.osx) osname=dcosx
2266                         osvers="$3"
2267                         ;;
2268                 dnix) osname=dnix
2269                         osvers="$3"
2270                         ;;
2271                 domainos) osname=apollo
2272                         osvers="$3"
2273                         ;;
2274                 dgux) osname=dgux 
2275                         osvers="$3"
2276                         ;;
2277                 dynixptx*) osname=dynixptx
2278                         osvers=`echo "$4"|sed 's/^v//'`
2279                         ;;
2280                 freebsd) osname=freebsd 
2281                         osvers="$3" ;;
2282                 genix) osname=genix ;;
2283                 hp*) osname=hpux 
2284                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2285                         ;;
2286                 irix*) osname=irix
2287                         case "$3" in
2288                         4*) osvers=4 ;;
2289                         5*) osvers=5 ;;
2290                         *)      osvers="$3" ;;
2291                         esac
2292                         ;;
2293                 linux) osname=linux
2294                         case "$3" in
2295                         *)      osvers="$3" ;;
2296                         esac
2297                         ;;
2298                 MiNT) osname=mint
2299                         ;;
2300                 netbsd*) osname=netbsd
2301                         osvers="$3"
2302                         ;;
2303                 news-os) osvers="$3"
2304                         case "$3" in
2305                         4*) osname=newsos4 ;;
2306                         *) osname=newsos ;;
2307                         esac
2308                         ;;
2309                 next*) osname=next ;;
2310                 POSIX-BC | posix-bc ) osname=posix-bc
2311                         osvers="$3"
2312                         ;;
2313                 powerux | power_ux | powermax_os | powermaxos | \
2314                 powerunix | power_unix) osname=powerux
2315                         osvers="$3"
2316                         ;;
2317                 qnx) osname=qnx
2318                         osvers="$4"
2319                         ;;
2320                 solaris) osname=solaris
2321                         case "$3" in
2322                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2323                         *)      osvers="$3" ;;
2324                         esac
2325                         ;;
2326                 sunos) osname=sunos
2327                         case "$3" in
2328                         5*) osname=solaris
2329                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2330                         *)      osvers="$3" ;;
2331                         esac
2332                         ;;
2333                 titanos) osname=titanos
2334                         case "$3" in
2335                         1*) osvers=1 ;;
2336                         2*) osvers=2 ;;
2337                         3*) osvers=3 ;;
2338                         4*) osvers=4 ;;
2339                         *)      osvers="$3" ;;
2340                         esac
2341                         ;;
2342                 ultrix) osname=ultrix
2343                         osvers="$3"
2344                         ;;
2345                 osf1|mls+)      case "$5" in
2346                                 alpha)
2347                                         osname=dec_osf
2348                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2349                                         ;;
2350                         hp*)    osname=hp_osf1  ;;
2351                         mips)   osname=mips_osf1 ;;
2352                         esac
2353                         ;;
2354                 unixware) osname=svr5
2355                         osvers="$4"
2356                         ;;
2357                 uts) osname=uts
2358                         osvers="$3"
2359                         ;;
2360                 $2) case "$osname" in
2361                         *isc*) ;;
2362                         *freebsd*) ;;
2363                         svr*)
2364                                 : svr4.x or possibly later
2365                                 case "svr$3" in 
2366                                 ${osname}*)
2367                                         osname=svr$3
2368                                         osvers=$4
2369                                         ;;
2370                                 esac
2371                                 case "$osname" in
2372                                 svr4.0)
2373                                         : Check for ESIX
2374                                         if test -f /stand/boot ; then
2375                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2376                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2377                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2378                                                         if test -n "$isesix"; then
2379                                                                 osname=esix4
2380                                                         fi
2381                                                 fi
2382                                         fi
2383                                         ;;
2384                                 esac
2385                                 ;;
2386                         *)      if test -f /etc/systemid; then
2387                                         osname=sco
2388                                         set `echo $3 | $sed 's/\./ /g'` $4
2389                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2390                                                 osvers=$1.$2.$3
2391                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2392                                                 osvers=$1.$2
2393                                         elif $test -f $src/hints/sco_$1.sh; then
2394                                                 osvers=$1
2395                                         fi
2396                                 else
2397                                         case "$osname" in
2398                                         '') : Still unknown.  Probably a generic Sys V.
2399                                                 osname="sysv"
2400                                                 osvers="$3"
2401                                                 ;;
2402                                         esac
2403                                 fi
2404                                 ;;
2405                         esac
2406                         ;;
2407                 *)      case "$osname" in
2408                         '') : Still unknown.  Probably a generic BSD.
2409                                 osname="$1"
2410                                 osvers="$3"
2411                                 ;;
2412                         esac
2413                         ;;
2414                 esac
2415         else
2416                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2417                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2418                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2419                                 osname=news_os
2420                         fi
2421                         $rm -f UU/kernel.what
2422                 elif test -d c:/.; then
2423                         set X $myuname
2424                         osname=os2
2425                         osvers="$5"
2426                 fi
2427         fi
2428         
2429         : Now look for a hint file osname_osvers, unless one has been
2430         : specified already.
2431         case "$hintfile" in
2432         ''|' ')
2433                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2434                 : Also try without trailing minor version numbers.
2435                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2436                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2437                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2438                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2439                 case "$file" in
2440                 '') dflt=none ;;
2441                 *)  case "$osvers" in
2442                         '') dflt=$file
2443                                 ;;
2444                         *)  if $test -f $src/hints/$file.sh ; then
2445                                         dflt=$file
2446                                 elif $test -f $src/hints/$xfile.sh ; then
2447                                         dflt=$xfile
2448                                 elif $test -f $src/hints/$xxfile.sh ; then
2449                                         dflt=$xxfile
2450                                 elif $test -f $src/hints/$xxxfile.sh ; then
2451                                         dflt=$xxxfile
2452                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2453                                         dflt=$xxxxfile
2454                                 elif $test -f "$src/hints/${osname}.sh" ; then
2455                                         dflt="${osname}"
2456                                 else
2457                                         dflt=none
2458                                 fi
2459                                 ;;
2460                         esac
2461                         ;;
2462                 esac
2463                 if $test -f Policy.sh ; then
2464                         case "$dflt" in
2465                         *Policy*) ;;
2466                         none) dflt="Policy" ;;
2467                         *) dflt="Policy $dflt" ;;
2468                         esac
2469                 fi
2470                 ;;
2471         *)
2472                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2473                 ;;
2474         esac
2475
2476         if $test -f Policy.sh ; then
2477                 $cat <<EOM
2478
2479 There's also a Policy hint file available, which should make the
2480 site-specific (policy) questions easier to answer.
2481 EOM
2482
2483         fi
2484
2485         $cat <<EOM
2486
2487 You may give one or more space-separated answers, or "none" if appropriate.
2488 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2489 is a good thing.  DO NOT give a wrong version or a wrong OS.
2490
2491 EOM
2492
2493         rp="Which of these apply, if any?"
2494         . UU/myread
2495         tans=$ans
2496         for file in $tans; do
2497                 if $test X$file = XPolicy -a -f Policy.sh; then
2498                         . Policy.sh
2499                         $cat Policy.sh >> UU/config.sh
2500                 elif $test -f $src/hints/$file.sh; then
2501                         . $src/hints/$file.sh
2502                         $cat $src/hints/$file.sh >> UU/config.sh
2503                 elif $test X$tans = X -o X$tans = Xnone ; then
2504                         : nothing
2505                 else
2506                         : Give one chance to correct a possible typo.
2507                         echo "$file.sh does not exist"
2508                         dflt=$file
2509                         rp="hint to use instead?"
2510                         . UU/myread
2511                         for file in $ans; do
2512                                 if $test -f "$src/hints/$file.sh"; then
2513                                         . $src/hints/$file.sh
2514                                         $cat $src/hints/$file.sh >> UU/config.sh
2515                                 elif $test X$ans = X -o X$ans = Xnone ; then
2516                                         : nothing
2517                                 else
2518                                         echo "$file.sh does not exist -- ignored."
2519                                 fi
2520                         done
2521                 fi
2522         done
2523
2524         hint=recommended
2525         : Remember our hint file for later.
2526         if $test -f "$src/hints/$file.sh" ; then
2527                 hintfile="$file"
2528         else
2529                 hintfile=''
2530         fi
2531 fi
2532 cd UU
2533 ;;
2534 *)
2535         echo " "
2536         echo "Fetching default answers from $config_sh..." >&4
2537         tmp_n="$n"
2538         tmp_c="$c"
2539         cd ..
2540         cp $config_sh config.sh 2>/dev/null
2541         chmod +w config.sh
2542         . ./config.sh
2543         cd UU
2544         cp ../config.sh .
2545         n="$tmp_n"
2546         c="$tmp_c"
2547         hint=previous
2548         ;;
2549 esac
2550 test "$override" && . ./optdef.sh
2551 myuname="$newmyuname"
2552
2553 : Restore computed paths
2554 for file in $loclist $trylist; do
2555         eval $file="\$_$file"
2556 done
2557
2558 cat << EOM
2559
2560 Configure uses the operating system name and version to set some defaults.
2561 The default value is probably right if the name rings a bell. Otherwise,
2562 since spelling matters for me, either accept the default or answer "none"
2563 to leave it blank.
2564
2565 EOM
2566 case "$osname" in
2567         ''|' ')
2568                 case "$hintfile" in
2569                 ''|' '|none) dflt=none ;;
2570                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2571                 esac
2572                 ;;
2573         *) dflt="$osname" ;;
2574 esac
2575 rp="Operating system name?"
2576 . ./myread
2577 case "$ans" in
2578 none)  osname='' ;;
2579 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2580 esac
2581 echo " "
2582 case "$osvers" in
2583         ''|' ')
2584                 case "$hintfile" in
2585                 ''|' '|none) dflt=none ;;
2586                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2587                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2588                         case "$dflt" in
2589                         ''|' ') dflt=none ;;
2590                         esac
2591                         ;;
2592                 esac
2593                 ;;
2594         *) dflt="$osvers" ;;
2595 esac
2596 rp="Operating system version?"
2597 . ./myread
2598 case "$ans" in
2599 none)  osvers='' ;;
2600 *) osvers="$ans" ;;
2601 esac
2602
2603
2604 . ./posthint.sh
2605
2606 : who configured the system
2607 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2608 cf_by=`(logname) 2>/dev/null`
2609 case "$cf_by" in
2610 "")
2611         cf_by=`(whoami) 2>/dev/null`
2612         case "$cf_by" in
2613         "") cf_by=unknown ;;
2614         esac ;;
2615 esac
2616
2617 : set up the script used to warn in case of inconsistency
2618 cat <<EOS >whoa
2619 $startsh
2620 EOS
2621 cat <<'EOSC' >>whoa
2622 dflt=y
2623 echo " "
2624 echo "*** WHOA THERE!!! ***" >&4
2625 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2626 rp="    Keep the $hint value?"
2627 . ./myread
2628 case "$ans" in
2629 y) td=$was; tu=$was;;
2630 esac
2631 EOSC
2632
2633 : function used to set $1 to $val
2634 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2635 case "$val$was" in
2636 $define$undef) . ./whoa; eval "$var=\$td";;
2637 $undef$define) . ./whoa; eval "$var=\$tu";;
2638 *) eval "$var=$val";;
2639 esac'
2640
2641 case "$usethreads" in
2642 $define|true|[yY]*)     dflt='y';;
2643 *) dflt='n';;
2644 esac
2645 cat <<EOM
2646
2647 Perl can be built to take advantage of threads on some systems.
2648 To do so, Configure can be run with -Dusethreads.
2649
2650 Note that threading is a highly experimental feature, and
2651 some known race conditions still remain.  If you choose to try
2652 it, be very sure to not actually deploy it for production
2653 purposes.  README.threads has more details, and is required
2654 reading if you enable threads.
2655
2656 If this doesn't make any sense to you, just accept the default '$dflt'.
2657 EOM
2658 rp='Build a threading Perl?'
2659 . ./myread
2660 case "$ans" in
2661 y|Y)    val="$define" ;;
2662 *)      val="$undef" ;;
2663 esac
2664 set usethreads
2665 eval $setvar
2666
2667 case "$usethreads" in
2668 $define)
2669         $cat <<EOM
2670
2671 As of 5.5.640, Perl has two different internal threading implementations,
2672 the 5.005 version (5005threads) and an interpreter-based version
2673 (ithreads) that has one interpreter per thread.  Both are very 
2674 experimental.  This arrangement exists to help developers work out
2675 which one is better.
2676
2677 If you're a casual user, you probably don't want interpreter-threads
2678 at this time.  There doesn't yet exist a way to create threads from
2679 within Perl in this model, i.e., "use Thread;" will NOT work.
2680 EOM
2681         : Default to ithreads unless overridden on command line or with
2682         : old config.sh
2683         dflt='y'
2684         case "$use5005threads" in
2685                 $define|true|[yY]*) dflt='n';;
2686         esac
2687         case "$useithreads" in
2688                 $undef|false|[nN]*) dflt='n';;
2689         esac
2690         rp='Use interpreter-based ithreads?'
2691         . ./myread
2692         case "$ans" in
2693         y|Y)    val="$define" ;;
2694         *)      val="$undef" ;;
2695         esac
2696         set useithreads
2697         eval $setvar
2698         : Now set use5005threads to the opposite value.
2699         case "$useithreads" in
2700         $define) val="$undef" ;;
2701         *) val="$define" ;;
2702         esac
2703         set use5005threads
2704         eval $setvar
2705         ;;
2706 *)
2707         useithreads="$undef"
2708         use5005threads="$undef"
2709         ;;
2710 esac
2711
2712 case "$d_oldpthreads" in
2713 '')     : Configure tests would be welcome here.  For now, assume undef.
2714         val="$undef" ;;
2715 *)      val="$d_oldpthreads" ;;
2716 esac
2717 set d_oldpthreads
2718 eval $setvar
2719
2720
2721 case "$usethreads" in
2722 "$define"|true|[yY]*)
2723 : Look for a hint-file generated 'call-back-unit'.  If the
2724 : user has specified that a threading perl is to be built,
2725 : we may need to set or change some other defaults.
2726         if $test -f usethreads.cbu; then
2727                 echo "Your platform has some specific hints for threaded builds, using them..."
2728                 . ./usethreads.cbu
2729         else
2730                 $cat <<EOM
2731 (Your platform doesn't have any specific hints for threaded builds.
2732  Assuming POSIX threads, then.)
2733 EOM
2734         fi
2735         ;;
2736 esac
2737
2738 cat <<EOM
2739
2740 Perl can be built so that multiple Perl interpreters can coexist
2741 within the same Perl executable.
2742 EOM
2743
2744 case "$useithreads" in
2745 $define)
2746         cat <<EOM
2747 This multiple interpreter support is required for interpreter-based threads.
2748 EOM
2749         val="$define"
2750         ;;
2751 *)      case "$usemultiplicity" in
2752         $define|true|[yY]*)     dflt='y';;
2753         *) dflt='n';;
2754         esac
2755         echo " "
2756         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2757         rp='Build Perl for multiplicity?'
2758         . ./myread
2759         case "$ans" in
2760         y|Y)    val="$define" ;;
2761         *)      val="$undef" ;;
2762         esac
2763         ;;
2764 esac
2765 set usemultiplicity
2766 eval $setvar
2767
2768 : determine where manual pages are on this system
2769 echo " "
2770 case "$sysman" in
2771 '') 
2772         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2773         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2774         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2775         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2776         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2777         sysman=`./loc . /usr/man/man1 $syspath`
2778         ;;
2779 esac
2780 if $test -d "$sysman"; then
2781         echo "System manual is in $sysman." >&4
2782 else
2783         echo "Could not find manual pages in source form." >&4
2784 fi
2785
2786 : see what memory models we can support
2787 case "$models" in
2788 '')
2789         $cat >pdp11.c <<'EOP'
2790 int main() {
2791 #ifdef pdp11
2792         exit(0);
2793 #else
2794         exit(1);
2795 #endif
2796 }
2797 EOP
2798         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2799         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2800                 dflt='unsplit split'
2801         else
2802                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2803                 case "$tans" in
2804                 X) dflt='none';;
2805                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2806                                 dflt='small'
2807                         else
2808                                 dflt=''
2809                         fi
2810                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2811                                 dflt="$dflt medium"
2812                         fi
2813                         if $test -d /lib/large || $test -d /usr/lib/large; then
2814                                 dflt="$dflt large"
2815                         fi
2816                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2817                                 dflt="$dflt huge"
2818                         fi
2819                 esac
2820         fi;;
2821 *) dflt="$models";;
2822 esac
2823 $cat <<EOM
2824  
2825 Some systems have different model sizes.  On most systems they are called
2826 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2827 split.  If your system doesn't support different memory models, say "none".
2828 If you wish to force everything to one memory model, say "none" here and
2829 put the appropriate flags later when it asks you for other cc and ld flags.
2830 Venix systems may wish to put "none" and let the compiler figure things out.
2831 (In the following question multiple model names should be space separated.)
2832
2833 The default for most systems is "none".
2834
2835 EOM
2836 rp="Which memory models are supported?"
2837 . ./myread
2838 models="$ans"
2839
2840 case "$models" in
2841 none)
2842         small=''
2843         medium=''
2844         large=''
2845         huge=''
2846         unsplit=''
2847         split=''
2848         ;;
2849 *split)
2850         case "$split" in
2851         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2852                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2853                         dflt='-i'
2854                 else
2855                         dflt='none'
2856                 fi;;
2857         *) dflt="$split";;
2858         esac
2859         rp="What flag indicates separate I and D space?"
2860         . ./myread
2861         tans="$ans"
2862         case "$tans" in
2863         none) tans='';;
2864         esac
2865         split="$tans"
2866         unsplit='';;
2867 *large*|*small*|*medium*|*huge*)
2868         case "$models" in
2869         *large*)
2870                 case "$large" in
2871                 '') dflt='-Ml';;
2872                 *) dflt="$large";;
2873                 esac
2874         rp="What flag indicates large model?"
2875         . ./myread
2876         tans="$ans"
2877         case "$tans" in
2878         none) tans='';
2879         esac
2880         large="$tans";;
2881         *) large='';;
2882         esac
2883         case "$models" in
2884         *huge*) case "$huge" in
2885                 '') dflt='-Mh';;
2886                 *) dflt="$huge";;
2887                 esac
2888                 rp="What flag indicates huge model?"
2889                 . ./myread
2890                 tans="$ans"
2891                 case "$tans" in
2892                 none) tans='';
2893                 esac
2894                 huge="$tans";;
2895         *) huge="$large";;
2896         esac
2897         case "$models" in
2898         *medium*) case "$medium" in
2899                 '') dflt='-Mm';;
2900                 *) dflt="$medium";;
2901                 esac
2902                 rp="What flag indicates medium model?"
2903                 . ./myread
2904                 tans="$ans"
2905                 case "$tans" in
2906                 none) tans='';
2907                 esac
2908                 medium="$tans";;
2909         *) medium="$large";;
2910         esac
2911         case "$models" in
2912         *small*) case "$small" in
2913                 '') dflt='none';;
2914                 *) dflt="$small";;
2915                 esac
2916                 rp="What flag indicates small model?"
2917                 . ./myread
2918                 tans="$ans"
2919                 case "$tans" in
2920                 none) tans='';
2921                 esac
2922                 small="$tans";;
2923         *) small='';;
2924         esac
2925         ;;
2926 *)
2927         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2928         ;;
2929 esac
2930 $rm -f pdp11.* pdp11
2931
2932 : make some quick guesses about what we are up against
2933 echo " "
2934 $echo $n "Hmm...  $c"
2935 echo exit 1 >bsd
2936 echo exit 1 >usg
2937 echo exit 1 >v7
2938 echo exit 1 >osf1
2939 echo exit 1 >eunice
2940 echo exit 1 >xenix
2941 echo exit 1 >venix
2942 echo exit 1 >os2
2943 d_bsd="$undef"
2944 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2945 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2946 then
2947         echo "Looks kind of like an OSF/1 system, but we'll see..."
2948         echo exit 0 >osf1
2949 elif test `echo abc | tr a-z A-Z` = Abc ; then
2950         xxx=`./loc addbib blurfl $pth`
2951         if $test -f $xxx; then
2952         echo "Looks kind of like a USG system with BSD features, but we'll see..."
2953                 echo exit 0 >bsd
2954                 echo exit 0 >usg
2955         else
2956                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2957                         echo "Looks kind of like an extended USG system, but we'll see..."
2958                 else
2959                         echo "Looks kind of like a USG system, but we'll see..."
2960                 fi
2961                 echo exit 0 >usg
2962         fi
2963 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2964         echo "Looks kind of like a BSD system, but we'll see..."
2965         d_bsd="$define"
2966         echo exit 0 >bsd
2967 else
2968         echo "Looks kind of like a Version 7 system, but we'll see..."
2969         echo exit 0 >v7
2970 fi
2971 case "$eunicefix" in
2972 *unixtovms*)
2973         $cat <<'EOI'
2974 There is, however, a strange, musty smell in the air that reminds me of
2975 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2976 EOI
2977         echo exit 0 >eunice
2978         d_eunice="$define"
2979 : it so happens the Eunice I know will not run shell scripts in Unix format
2980         ;;
2981 *)
2982         echo " "
2983         echo "Congratulations.  You aren't running Eunice."
2984         d_eunice="$undef"
2985         ;;
2986 esac
2987 : Detect OS2.  The p_ variable is set above in the Head.U unit.
2988 case "$p_" in
2989 :) ;;
2990 *)
2991         $cat <<'EOI'
2992 I have the feeling something is not exactly right, however...don't tell me...
2993 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2994 EOI
2995         echo exit 0 >os2
2996         ;;
2997 esac
2998 if test -f /xenix; then
2999         echo "Actually, this looks more like a XENIX system..."
3000         echo exit 0 >xenix
3001         d_xenix="$define"
3002 else
3003         echo " "
3004         echo "It's not Xenix..."
3005         d_xenix="$undef"
3006 fi
3007 chmod +x xenix
3008 $eunicefix xenix
3009 if test -f /venix; then
3010         echo "Actually, this looks more like a VENIX system..."
3011         echo exit 0 >venix
3012 else
3013         echo " "
3014         if ./xenix; then
3015                 : null
3016         else
3017                 echo "Nor is it Venix..."
3018         fi
3019 fi
3020 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3021 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3022 $rm -f foo
3023
3024 : see if we need a special compiler
3025 echo " "
3026 if ./usg; then
3027         case "$cc" in
3028         '') case "$Mcc" in
3029                 /*) dflt='Mcc';;
3030                 *) case "$large" in
3031                         -M*) dflt='cc';;
3032                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3033                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3034                                                 dflt='cc'
3035                                         else
3036                                                 dflt='cc -M'
3037                                         fi
3038                                 else
3039                                         dflt='cc'
3040                                 fi;;
3041                         esac;;
3042                 esac;;
3043         *)  dflt="$cc";;
3044         esac
3045         case "$dflt" in
3046         *M*)    $cat <<'EOM'
3047 On some older systems the default C compiler will not resolve multiple global
3048 references that happen to have the same name.  On some such systems the "Mcc"
3049 command may be used to force these to be resolved.  On other systems a "cc -M"
3050 command is required.  (Note that the -M flag on other systems indicates a
3051 memory model to use!) If you have the Gnu C compiler, you might wish to use
3052 that instead.
3053
3054 EOM
3055         ;;
3056         esac
3057         rp="Use which C compiler?"
3058         . ./myread
3059         cc="$ans"
3060 else
3061         case "$cc" in
3062         '') dflt=cc;;
3063         *) dflt="$cc";;
3064         esac
3065         rp="Use which C compiler?"
3066         . ./myread
3067         cc="$ans"
3068 fi
3069 : Look for a hint-file generated 'call-back-unit'.  Now that the
3070 : user has specified the compiler, we may need to set or change some
3071 : other defaults.
3072 if $test -f cc.cbu; then
3073     . ./cc.cbu
3074 fi
3075 echo " "
3076 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3077 $cat >gccvers.c <<EOM
3078 #include <stdio.h>
3079 int main() {
3080 #ifdef __GNUC__
3081 #ifdef __VERSION__
3082         printf("%s\n", __VERSION__);
3083 #else
3084         printf("%s\n", "1");
3085 #endif
3086 #endif
3087         exit(0);
3088 }
3089 EOM
3090 if $cc $ldflags -o gccvers gccvers.c; then
3091         gccversion=`./gccvers`
3092         case "$gccversion" in
3093         '') echo "You are not using GNU cc." ;;
3094         *)  echo "You are using GNU cc $gccversion."
3095             ;;
3096         esac
3097 else
3098         echo " "
3099         echo "*** WHOA THERE!!! ***" >&4
3100         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3101         case "$knowitall" in
3102         '')
3103         echo "    You'd better start hunting for one and let me know about it." >&4
3104                 exit 1
3105                 ;;
3106         esac
3107 fi
3108 $rm -f gccvers*
3109 case "$gccversion" in
3110 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3111 esac
3112
3113 : decide how portable to be.  Allow command line overrides.
3114 case "$d_portable" in
3115 "$undef") ;;
3116 *)      d_portable="$define" ;;
3117 esac
3118
3119 : set up shell script to do ~ expansion
3120 cat >filexp <<EOSS
3121 $startsh
3122 : expand filename
3123 case "\$1" in
3124  ~/*|~)
3125         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3126         ;;
3127  ~*)
3128         if $test -f /bin/csh; then
3129                 /bin/csh -f -c "glob \$1"
3130                 failed=\$?
3131                 echo ""
3132                 exit \$failed
3133         else
3134                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3135                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3136                 if $test ! -d "\$dir"; then
3137                         me=\`basename \$0\`
3138                         echo "\$me: can't locate home directory for: \$name" >&2
3139                         exit 1
3140                 fi
3141                 case "\$1" in
3142                 */*)
3143                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3144                         ;;
3145                 *)
3146                         echo \$dir
3147                         ;;
3148                 esac
3149         fi
3150         ;;
3151 *)
3152         echo \$1
3153         ;;
3154 esac
3155 EOSS
3156 chmod +x filexp
3157 $eunicefix filexp
3158
3159 : now set up to get a file name
3160 cat <<EOS >getfile
3161 $startsh
3162 EOS
3163 cat <<'EOSC' >>getfile
3164 tilde=''
3165 fullpath=''
3166 already=''
3167 skip=''
3168 none_ok=''
3169 exp_file=''
3170 nopath_ok=''
3171 orig_rp="$rp"
3172 orig_dflt="$dflt"
3173 case "$gfpth" in
3174 '') gfpth='.' ;;
3175 esac
3176
3177 case "$fn" in
3178 *\(*)
3179         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3180         fn=`echo $fn | sed 's/(.*)//'`
3181         ;;
3182 esac
3183
3184 case "$fn" in
3185 *:*)
3186         loc_file=`expr $fn : '.*:\(.*\)'`
3187         fn=`expr $fn : '\(.*\):.*'`
3188         ;;
3189 esac
3190
3191 case "$fn" in
3192 *~*) tilde=true;;
3193 esac
3194 case "$fn" in
3195 */*) fullpath=true;;
3196 esac
3197 case "$fn" in
3198 *+*) skip=true;;
3199 esac
3200 case "$fn" in
3201 *n*) none_ok=true;;
3202 esac
3203 case "$fn" in
3204 *e*) exp_file=true;;
3205 esac
3206 case "$fn" in
3207 *p*) nopath_ok=true;;
3208 esac
3209
3210 case "$fn" in
3211 *f*) type='File';;
3212 *d*) type='Directory';;
3213 *l*) type='Locate';;
3214 esac
3215
3216 what="$type"
3217 case "$what" in
3218 Locate) what='File';;
3219 esac
3220
3221 case "$exp_file" in
3222 '')
3223         case "$d_portable" in
3224         "$define") ;;
3225         *) exp_file=true;;
3226         esac
3227         ;;
3228 esac
3229
3230 cd ..
3231 while test "$type"; do
3232         redo=''
3233         rp="$orig_rp"
3234         dflt="$orig_dflt"
3235         case "$tilde" in
3236         true) rp="$rp (~name ok)";;
3237         esac
3238         . UU/myread
3239         if test -f UU/getfile.ok && \
3240                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3241         then
3242                 value="$ans"
3243                 ansexp="$ans"
3244                 break
3245         fi
3246         case "$ans" in
3247         none)
3248                 value=''
3249                 ansexp=''
3250                 case "$none_ok" in
3251                 true) type='';;
3252                 esac
3253                 ;;
3254         *)
3255                 case "$tilde" in
3256                 '') value="$ans"
3257                         ansexp="$ans";;
3258                 *)
3259                         value=`UU/filexp $ans`
3260                         case $? in
3261                         0)
3262                                 if test "$ans" != "$value"; then
3263                                         echo "(That expands to $value on this system.)"
3264                                 fi
3265                                 ;;
3266                         *) value="$ans";;
3267                         esac
3268                         ansexp="$value"
3269                         case "$exp_file" in
3270                         '') value="$ans";;
3271                         esac
3272                         ;;
3273                 esac
3274                 case "$fullpath" in
3275                 true)
3276                         case "$ansexp" in
3277                         /*) value="$ansexp" ;;
3278                         [a-zA-Z]:/*) value="$ansexp" ;;
3279                         *)
3280                                 redo=true
3281                                 case "$already" in
3282                                 true)
3283                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3284                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3285                                         ;;
3286                                 *)
3287                                 echo "Please give a full path name, starting with slash." >&4
3288                                         case "$tilde" in
3289                                         true)
3290                                 echo "Note that using ~name is ok provided it expands well." >&4
3291                                                 already=true
3292                                                 ;;
3293                                         esac
3294                                 esac
3295                                 ;;
3296                         esac
3297                         ;;
3298                 esac
3299                 case "$redo" in
3300                 '')
3301                         case "$type" in
3302                         File)
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 -f "$pf"; then
3310                                                 type=''
3311                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3312                                         then
3313                                                 echo "($value is not a plain file, but that's ok.)"
3314                                                 type=''
3315                                         fi
3316                                         if test X"$type" = X; then
3317                                             value="$pf"
3318                                             break
3319                                         fi
3320                                 done
3321                                 ;;
3322                         Directory)
3323                                 for fp in $gfpth; do
3324                                         if test "X$fp" = X.; then
3325                                             dir="$ans"
3326                                             direxp="$ansexp"
3327                                         else    
3328                                             dir="$fp/$ansexp"
3329                                             direxp="$fp/$ansexp"
3330                                         fi
3331                                         if test -d "$direxp"; then
3332                                                 type=''
3333                                                 value="$dir"
3334                                                 break
3335                                         fi
3336                                 done
3337                                 ;;
3338                         Locate)
3339                                 if test -d "$ansexp"; then
3340                                         echo "(Looking for $loc_file in directory $value.)"
3341                                         value="$value/$loc_file"
3342                                         ansexp="$ansexp/$loc_file"
3343                                 fi
3344                                 if test -f "$ansexp"; then
3345                                         type=''
3346                                 fi
3347                                 case "$nopath_ok" in
3348                                 true)   case "$value" in
3349                                         */*) ;;
3350                                         *)      echo "Assuming $value will be in people's path."
3351                                                 type=''
3352                                                 ;;
3353                                         esac
3354                                         ;;
3355                                 esac
3356                                 ;;
3357                         esac
3358
3359                         case "$skip" in
3360                         true) type='';
3361                         esac
3362
3363                         case "$type" in
3364                         '') ;;
3365                         *)
3366                                 if test "$fastread" = yes; then
3367                                         dflt=y
3368                                 else
3369                                         dflt=n
3370                                 fi
3371                                 rp="$what $value doesn't exist.  Use that name anyway?"
3372                                 . UU/myread
3373                                 dflt=''
3374                                 case "$ans" in
3375                                 y*) type='';;
3376                                 *) echo " ";;
3377                                 esac
3378                                 ;;
3379                         esac
3380                         ;;
3381                 esac
3382                 ;;
3383         esac
3384 done
3385 cd UU
3386 ans="$value"
3387 rp="$orig_rp"
3388 dflt="$orig_dflt"
3389 rm -f getfile.ok
3390 test "X$gfpthkeep" != Xy && gfpth=""
3391 EOSC
3392
3393 : What should the include directory be ?
3394 echo " "
3395 $echo $n "Hmm...  $c"
3396 dflt='/usr/include'
3397 incpath=''
3398 mips_type=''
3399 if $test -f /bin/mips && /bin/mips; then
3400         echo "Looks like a MIPS system..."
3401         $cat >usr.c <<'EOCP'
3402 #ifdef SYSTYPE_BSD43
3403 /bsd43
3404 #endif
3405 EOCP
3406         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3407                 dflt='/bsd43/usr/include'
3408                 incpath='/bsd43'
3409                 mips_type='BSD 4.3'
3410         else
3411                 mips_type='System V'
3412         fi
3413         $rm -f usr.c usr.out
3414         echo "and you're compiling with the $mips_type compiler and libraries."
3415         xxx_prompt=y
3416         echo "exit 0" >mips
3417 else
3418         echo "Doesn't look like a MIPS system."
3419         xxx_prompt=n
3420         echo "exit 1" >mips
3421 fi
3422 chmod +x mips
3423 $eunicefix mips
3424 case "$usrinc" in
3425 '') ;;
3426 *) dflt="$usrinc";;
3427 esac
3428 case "$xxx_prompt" in
3429 y)      fn=d/
3430         echo " "
3431         rp='Where are the include files you want to use?'
3432         . ./getfile
3433         usrinc="$ans"
3434         ;;
3435 *)      usrinc="$dflt"
3436         ;;
3437 esac
3438
3439 : see how we invoke the C preprocessor
3440 echo " "
3441 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3442 cat <<'EOT' >testcpp.c
3443 #define ABC abc
3444 #define XYZ xyz
3445 ABC.XYZ
3446 EOT
3447 cd ..
3448 if test ! -f cppstdin; then
3449         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3450                 # AIX cc -E doesn't show the absolute headerfile
3451                 # locations but we'll cheat by using the -M flag.
3452                 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
3453         else
3454                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3455         fi
3456 else
3457         echo "Keeping your $hint cppstdin wrapper."
3458 fi
3459 chmod 755 cppstdin
3460 wrapper=`pwd`/cppstdin
3461 ok='false'
3462 cd UU
3463
3464 if $test "X$cppstdin" != "X" && \
3465         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3466         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3467 then
3468         echo "You used to use $cppstdin $cppminus so we'll use that again."
3469         case "$cpprun" in
3470         '') echo "But let's see if we can live without a wrapper..." ;;
3471         *)
3472                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3473                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3474                 then
3475                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3476                         ok='true'
3477                 else
3478                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3479                 fi
3480                 ;;
3481         esac
3482 else
3483         case "$cppstdin" in
3484         '') ;;
3485         *)
3486                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3487                 ;;
3488         esac
3489 fi
3490
3491 if $ok; then
3492         : nothing
3493 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3494         $cc -E <testcpp.c >testcpp.out 2>&1; \
3495         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3496         echo "Yup, it does."
3497         x_cpp="$cc -E"
3498         x_minus='';
3499 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3500         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3501         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3502         echo "Yup, it does."
3503         x_cpp="$cc -E"
3504         x_minus='-';
3505 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3506         $cc -P <testcpp.c >testcpp.out 2>&1; \
3507         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3508         echo "Yipee, that works!"
3509         x_cpp="$cc -P"
3510         x_minus='';
3511 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3512         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3513         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3514         echo "At long last!"
3515         x_cpp="$cc -P"
3516         x_minus='-';
3517 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3518         $cpp <testcpp.c >testcpp.out 2>&1; \
3519         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3520         echo "It works!"
3521         x_cpp="$cpp"
3522         x_minus='';
3523 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3524         $cpp - <testcpp.c >testcpp.out 2>&1; \
3525         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3526         echo "Hooray, it works!  I was beginning to wonder."
3527         x_cpp="$cpp"
3528         x_minus='-';
3529 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3530         $wrapper <testcpp.c >testcpp.out 2>&1; \
3531         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3532         x_cpp="$wrapper"
3533         x_minus=''
3534         echo "Eureka!"
3535 else
3536         dflt=''
3537         rp="No dice.  I can't find a C preprocessor.  Name one:"
3538         . ./myread
3539         x_cpp="$ans"
3540         x_minus=''
3541         $x_cpp <testcpp.c >testcpp.out 2>&1
3542         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3543                 echo "OK, that will do." >&4
3544         else
3545 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3546                 exit 1
3547         fi
3548 fi
3549
3550 case "$ok" in
3551 false)
3552         cppstdin="$x_cpp"
3553         cppminus="$x_minus"
3554         cpprun="$x_cpp"
3555         cpplast="$x_minus"
3556         set X $x_cpp
3557         shift
3558         case "$1" in
3559         "$cpp")
3560                 echo "Perhaps can we force $cc -E using a wrapper..."
3561                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3562                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3563                 then
3564                         echo "Yup, we can."
3565                         cppstdin="$wrapper"
3566                         cppminus='';
3567                 else
3568                         echo "Nope, we'll have to live without it..."
3569                 fi
3570                 ;;
3571         esac
3572         case "$cpprun" in
3573         "$wrapper")
3574                 cpprun=''
3575                 cpplast=''
3576                 ;;
3577         esac
3578         ;;
3579 esac
3580
3581 case "$cppstdin" in
3582 "$wrapper"|'cppstdin') ;;
3583 *) $rm -f $wrapper;;
3584 esac
3585 $rm -f testcpp.c testcpp.out
3586
3587 : Set private lib path
3588 case "$plibpth" in
3589 '') if ./mips; then
3590                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3591         fi;;
3592 esac
3593 case "$libpth" in
3594 ' ') dlist='';;
3595 '') dlist="$loclibpth $plibpth $glibpth";;
3596 *) dlist="$libpth";;
3597 esac
3598
3599 : Now check and see which directories actually exist, avoiding duplicates
3600 libpth=''
3601 for xxx in $dlist
3602 do
3603     if $test -d $xxx; then
3604                 case " $libpth " in
3605                 *" $xxx "*) ;;
3606                 *) libpth="$libpth $xxx";;
3607                 esac
3608     fi
3609 done
3610 $cat <<'EOM'
3611
3612 Some systems have incompatible or broken versions of libraries.  Among
3613 the directories listed in the question below, please remove any you
3614 know not to be holding relevant libraries, and add any that are needed.
3615 Say "none" for none.
3616
3617 EOM
3618 case "$libpth" in
3619 '') dflt='none';;
3620 *)
3621         set X $libpth
3622         shift
3623         dflt=${1+"$@"}
3624         ;;
3625 esac
3626 rp="Directories to use for library searches?"
3627 . ./myread
3628 case "$ans" in
3629 none) libpth=' ';;
3630 *) libpth="$ans";;
3631 esac
3632
3633 : compute shared library extension
3634 case "$so" in
3635 '')
3636         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3637                 dflt='sl'
3638         else
3639                 dflt='so'
3640         fi
3641         ;;
3642 *) dflt="$so";;
3643 esac
3644 $cat <<EOM
3645
3646 On some systems, shared libraries may be available.  Answer 'none' if
3647 you want to suppress searching of shared libraries for the remainder
3648 of this configuration.
3649
3650 EOM
3651 rp='What is the file extension used for shared libraries?'
3652 . ./myread
3653 so="$ans"
3654
3655 : Define several unixisms.
3656 : Hints files or command line option can be used to override them.
3657 : The convoluted testing is in case hints files set either the old
3658 : or the new name.
3659 case "$_exe" in
3660 '')     case "$exe_ext" in
3661     '') ;;
3662         *)      _exe="$exe_ext" ;;
3663         esac
3664         ;;
3665 esac
3666 case "$_a" in
3667 '')     case "$lib_ext" in
3668     '') _a='.a';;
3669         *)      _a="$lib_ext" ;;
3670         esac
3671         ;;
3672 esac
3673 case "$_o" in
3674 '') case "$obj_ext" in
3675         '')     _o='.o';;
3676         *)      _o="$obj_ext";;
3677         esac
3678         ;;
3679 esac
3680 case "$p_" in
3681 '') case "$path_sep" in
3682         '')     p_=':';;
3683         *)      p_="$path_sep";;
3684         esac
3685         ;;
3686 esac
3687 exe_ext=$_exe
3688 lib_ext=$_a
3689 obj_ext=$_o
3690 path_sep=$p_
3691
3692 : Which makefile gets called first.  This is used by make depend.
3693 case "$firstmakefile" in
3694 '') firstmakefile='makefile';;
3695 esac
3696
3697 case "$usesocks" in
3698 $define|true|[yY]*)     dflt='y';;
3699 *) dflt='n';;
3700 esac
3701 cat <<EOM
3702
3703 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3704 Configure must be run with -Dusesocks.
3705
3706 If this doesn't make any sense to you, just accept the default '$dflt'.
3707 EOM
3708 rp='Build Perl for SOCKS?'
3709 . ./myread
3710 case "$ans" in
3711 y|Y)    val="$define" ;;     
3712 *)      val="$undef" ;;
3713 esac
3714 set usesocks
3715 eval $setvar
3716
3717 : Looking for optional libraries
3718 echo " "
3719 echo "Checking for optional libraries..." >&4
3720 case "$libs" in
3721 ' '|'') dflt='';;
3722 *) dflt="$libs";;
3723 esac
3724 case "$libswanted" in
3725 '') libswanted='c_s';;
3726 esac
3727 case "$usesocks" in
3728 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3729 esac
3730 libsfound=''
3731 libsfiles=''
3732 libsdirs=''
3733 libspath=''
3734 for thisdir in $libpth $xlibpth; do
3735   test -d $thisdir && libspath="$libspath $thisdir"
3736 done
3737 for thislib in $libswanted; do
3738         for thisdir in $libspath; do
3739             xxx=''
3740             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3741                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3742                 $test -f "$xxx" && eval $libscheck
3743                 $test -f "$xxx" && libstyle=shared
3744             fi
3745             if test ! -f "$xxx"; then
3746                 xxx=$thisdir/lib$thislib.$so
3747                 $test -f "$xxx" && eval $libscheck
3748                 $test -f "$xxx" && libstyle=shared
3749             fi  
3750             if test ! -f "$xxx"; then
3751                 xxx=$thisdir/lib$thislib$_a
3752                 $test -f "$xxx" && eval $libscheck
3753                 $test -f "$xxx" && libstyle=static
3754             fi
3755             if test ! -f "$xxx"; then
3756                 xxx=$thisdir/$thislib$_a
3757                 $test -f "$xxx" && eval $libscheck
3758                 $test -f "$xxx" && libstyle=static
3759             fi
3760             if test ! -f "$xxx"; then
3761                 xxx=$thisdir/lib${thislib}_s$_a
3762                 $test -f "$xxx" && eval $libscheck
3763                 $test -f "$xxx" && libstyle=static
3764                 $test -f "$xxx" && thislib=${thislib}_s
3765             fi
3766             if test ! -f "$xxx"; then
3767                 xxx=$thisdir/Slib$thislib$_a
3768                 $test -f "$xxx" && eval $libscheck
3769                 $test -f "$xxx" && libstyle=static
3770             fi
3771             if $test -f "$xxx"; then
3772                 case "$libstyle" in
3773                 shared) echo "Found -l$thislib (shared)." ;;
3774                 static) echo "Found -l$thislib." ;;
3775                 *)      echo "Found -l$thislib ($libstyle)." ;;
3776                 esac
3777                 case " $dflt " in
3778                 *"-l$thislib "*);;
3779                 *) dflt="$dflt -l$thislib"
3780                    libsfound="$libsfound $xxx"
3781                    yyy=`basename $xxx`
3782                    libsfiles="$libsfiles $yyy"
3783                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3784                    case " $libsdirs " in
3785                    *" $yyy "*) ;;
3786                    *) libsdirs="$libsdirs $yyy" ;;
3787                    esac
3788                    ;;
3789                 esac
3790                 break
3791             fi  
3792         done
3793         if $test ! -f "$xxx"; then
3794             echo "No -l$thislib."
3795         fi
3796 done
3797 set X $dflt
3798 shift
3799 dflt="$*"
3800 case "$libs" in
3801 '') dflt="$dflt";;
3802 *) dflt="$libs";;
3803 esac
3804 case "$dflt" in
3805 ' '|'') dflt='none';;
3806 esac
3807
3808 $cat <<EOM
3809
3810 In order to compile $package on your machine, a number of libraries
3811 are usually needed.  Include any other special libraries here as well.
3812 Say "none" for none.  The default list is almost always right.
3813 EOM
3814
3815 echo " "
3816 rp="What libraries to use?"
3817 . ./myread
3818 case "$ans" in
3819 none) libs=' ';;
3820 *) libs="$ans";;
3821 esac
3822
3823 : determine optimization, if desired, or use for debug flag also
3824 case "$optimize" in
3825 ' '|$undef) dflt='none';;
3826 '') dflt='-O';;
3827 *) dflt="$optimize";;
3828 esac
3829 $cat <<EOH
3830
3831 By default, $package compiles with the -O flag to use the optimizer.
3832 Alternately, you might want to use the symbolic debugger, which uses
3833 the -g flag (on traditional Unix systems).  Either flag can be
3834 specified here.  To use neither flag, specify the word "none".
3835
3836 EOH
3837 rp="What optimizer/debugger flag should be used?"
3838 . ./myread
3839 optimize="$ans"
3840 case "$optimize" in
3841 'none') optimize=" ";;
3842 esac
3843
3844 dflt=''
3845 : We will not override a previous value, but we might want to
3846 : augment a hint file
3847 case "$hint" in
3848 default|recommended)
3849         case "$gccversion" in
3850         1*) dflt='-fpcc-struct-return' ;;
3851         esac
3852         case "$optimize" in
3853         *-g*) dflt="$dflt -DDEBUGGING";;
3854         esac
3855         case "$gccversion" in
3856         2*) if test -d /etc/conf/kconfig.d &&
3857                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3858                 then
3859                         dflt="$dflt -posix"
3860                 fi
3861                 ;;
3862         esac
3863         case "$gccversion" in
3864         1*) ;;
3865         2.[0-8]*) ;;
3866         ?*)     echo " "
3867                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3868                 echo 'int main(void) { return 0; }' > gcctest.c
3869                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3870                         echo "Yes, it does." 2>&1
3871                         case "$ccflags" in
3872                         *strict-aliasing*) 
3873                                 echo "Leaving current flags $ccflags alone." 2>&1
3874                                 ;;
3875                         *) dflt="$dflt -fno-strict-aliasing" ;;
3876                         esac
3877                 else
3878                         echo "Nope, it doesn't, but that's ok." 2>&1
3879                 fi
3880                 ;;
3881         esac
3882         ;;
3883 esac
3884
3885 case "$mips_type" in
3886 *BSD*|'') inclwanted="$locincpth $usrinc";;
3887 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3888 esac
3889 for thisincl in $inclwanted; do
3890         if $test -d $thisincl; then
3891                 if $test x$thisincl != x$usrinc; then
3892                         case "$dflt" in
3893                         *$thisincl*);;
3894                         *) dflt="$dflt -I$thisincl";;
3895                         esac
3896                 fi
3897         fi
3898 done
3899
3900 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3901         xxx=true;
3902 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3903         xxx=true;
3904 else
3905         xxx=false;
3906 fi;
3907 if $xxx; then
3908         case "$dflt" in
3909         *$2*);;
3910         *) dflt="$dflt -D$2";;
3911         esac;
3912 fi'
3913
3914 set signal.h LANGUAGE_C; eval $inctest
3915
3916 case "$usesocks" in
3917 $define)
3918         ccflags="$ccflags -DSOCKS"
3919         ;;
3920 esac
3921
3922 case "$hint" in
3923 default|recommended) dflt="$ccflags $dflt" ;;
3924 *) dflt="$ccflags";;
3925 esac
3926
3927 case "$dflt" in
3928 ''|' ') dflt=none;;
3929 esac
3930 $cat <<EOH
3931
3932 Your C compiler may want other flags.  For this question you should include
3933 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3934 but you should NOT include libraries or ld flags like -lwhatever.  If you
3935 want $package to honor its debug switch, you should include -DDEBUGGING here.
3936 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3937
3938 To use no flags, specify the word "none".
3939
3940 EOH
3941 set X $dflt
3942 shift
3943 dflt=${1+"$@"}
3944 rp="Any additional cc flags?"
3945 . ./myread
3946 case "$ans" in
3947 none) ccflags='';;
3948 *) ccflags="$ans";;
3949 esac
3950
3951 : the following weeds options from ccflags that are of no interest to cpp
3952 cppflags="$ccflags"
3953 case "$gccversion" in
3954 1*) cppflags="$cppflags -D__GNUC__"
3955 esac
3956 case "$mips_type" in
3957 '');;
3958 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3959 esac
3960 case "$cppflags" in
3961 '');;
3962 *)
3963         echo " "
3964         echo "Let me guess what the preprocessor flags are..." >&4
3965         set X $cppflags
3966         shift
3967         cppflags=''
3968         $cat >cpp.c <<'EOM'
3969 #define BLURFL foo
3970
3971 BLURFL xx LFRULB
3972 EOM
3973         previous=''
3974         for flag in $*
3975         do
3976                 case "$flag" in
3977                 -*) ftry="$flag";;
3978                 *) ftry="$previous $flag";;
3979                 esac
3980                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3981                         >cpp1.out 2>/dev/null && \
3982                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3983                         >cpp2.out 2>/dev/null && \
3984                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3985                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3986                 then
3987                         cppflags="$cppflags $ftry"
3988                         previous=''
3989                 else
3990                         previous="$flag"
3991                 fi
3992         done
3993         set X $cppflags
3994         shift
3995         cppflags=${1+"$@"}
3996         case "$cppflags" in
3997         *-*)  echo "They appear to be: $cppflags";;
3998         esac
3999         $rm -f cpp.c cpp?.out
4000         ;;
4001 esac
4002
4003 : flags used in final linking phase
4004 case "$ldflags" in
4005 '') if ./venix; then
4006                 dflt='-i -z'
4007         else
4008                 dflt=''
4009         fi
4010         case "$ccflags" in
4011         *-posix*) dflt="$dflt -posix" ;;
4012         esac
4013         ;;
4014 *) dflt="$ldflags";;
4015 esac
4016
4017 : Try to guess additional flags to pick up local libraries.
4018 for thislibdir in $libpth; do
4019         case " $loclibpth " in
4020         *" $thislibdir "*)
4021                 case "$dflt " in 
4022                 *"-L$thislibdir "*) ;;
4023                 *)  dflt="$dflt -L$thislibdir" ;;
4024                 esac
4025                 ;;
4026         esac
4027 done
4028
4029 case "$dflt" in
4030 '') dflt='none' ;;
4031 esac
4032
4033 $cat <<EOH
4034
4035 Your C linker may need flags.  For this question you should
4036 include -L/whatever and any other flags used by the C linker, but you
4037 should NOT include libraries like -lwhatever.
4038
4039 Make sure you include the appropriate -L/path flags if your C linker
4040 does not normally search all of the directories you specified above,
4041 namely
4042         $libpth
4043 To use no flags, specify the word "none".
4044
4045 EOH
4046
4047 rp="Any additional ld flags (NOT including libraries)?"
4048 . ./myread
4049 case "$ans" in
4050 none) ldflags='';;
4051 *) ldflags="$ans";;
4052 esac
4053 rmlist="$rmlist pdp11"
4054
4055 : coherency check
4056 echo " "
4057 echo "Checking your choice of C compiler and flags for coherency..." >&4
4058 $cat > try.c <<'EOF'
4059 #include <stdio.h>
4060 int main() { printf("Ok\n"); exit(0); }
4061 EOF
4062 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4063 shift
4064 $cat >try.msg <<'EOM'
4065 I've tried to compile and run the following simple program:
4066
4067 EOM
4068 $cat try.c >> try.msg
4069
4070 $cat >> try.msg <<EOM
4071
4072 I used the command:
4073
4074         $*
4075         ./try
4076
4077 and I got the following output:
4078
4079 EOM
4080 dflt=y
4081 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4082         if sh -c './try' >>try.msg 2>&1; then
4083                 xxx=`./try`
4084                 case "$xxx" in
4085                 "Ok") dflt=n ;;
4086                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4087                         case " $libs " in
4088                         *" -lsfio "*)
4089                                 cat >> try.msg <<'EOQS'
4090 If $libs contains -lsfio, and sfio is mis-configured, then it
4091 sometimes (apparently) runs and exits with a 0 status, but with no
4092 output!  It may have to do with sfio's use of _exit vs. exit.
4093
4094 EOQS
4095                                 rp="You have a big problem.  Shall I abort Configure"
4096                                 dflt=y
4097                                 ;;
4098                         esac
4099                         ;;
4100                 esac
4101         else
4102                 echo "The program compiled OK, but exited with status $?." >>try.msg
4103                 rp="You have a problem.  Shall I abort Configure"
4104                 dflt=y
4105         fi
4106 else
4107         echo "I can't compile the test program." >>try.msg
4108         rp="You have a BIG problem.  Shall I abort Configure"
4109         dflt=y
4110 fi
4111 case "$dflt" in
4112 y)
4113         $cat try.msg >&4
4114         case "$knowitall" in
4115         '')
4116                 echo "(The supplied flags or libraries might be incorrect.)"
4117                 ;;
4118         *) dflt=n;;
4119         esac
4120         echo " "
4121         . ./myread
4122         case "$ans" in
4123         n*|N*) ;;
4124         *)      echo "Ok.  Stopping Configure." >&4
4125                 exit 1
4126                 ;;
4127         esac
4128         ;;
4129 n) echo "OK, that should do.";;
4130 esac
4131 $rm -f try try.* core
4132
4133 : define an is-a-typedef? function
4134 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4135 case "$inclist" in
4136 "") inclist="sys/types.h";;
4137 esac;
4138 eval "varval=\$$var";
4139 case "$varval" in
4140 "")
4141         $rm -f temp.c;
4142         for inc in $inclist; do
4143                 echo "#include <$inc>" >>temp.c;
4144         done;
4145         echo "#ifdef $type" >> temp.c;
4146         echo "printf(\"We have $type\");" >> temp.c;
4147         echo "#endif" >> temp.c;
4148         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4149         if $contains $type temp.E >/dev/null 2>&1; then
4150                 eval "$var=\$type";
4151         else
4152                 eval "$var=\$def";
4153         fi;
4154         $rm -f temp.?;;
4155 *) eval "$var=\$varval";;
4156 esac'
4157
4158 : define an is-a-typedef? function that prompts if the type is not available.
4159 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4160 case "$inclist" in
4161 "") inclist="sys/types.h";;
4162 esac;
4163 eval "varval=\$$var";
4164 case "$varval" in
4165 "")
4166         $rm -f temp.c;
4167         for inc in $inclist; do
4168                 echo "#include <$inc>" >>temp.c;
4169         done;
4170         echo "#ifdef $type" >> temp.c;
4171         echo "printf(\"We have $type\");" >> temp.c;
4172         echo "#endif" >> temp.c;
4173         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4174         echo " " ;
4175         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4176         if $contains $type temp.E >/dev/null 2>&1; then
4177                 echo "$type found." >&4;
4178                 eval "$var=\$type";
4179         else
4180                 echo "$type NOT found." >&4;
4181                 dflt="$def";
4182                 . ./myread ;
4183                 eval "$var=\$ans";
4184         fi;
4185         $rm -f temp.?;;
4186 *) eval "$var=\$varval";;
4187 esac'
4188
4189 : define a shorthand compile call
4190 compile='
4191 mc_file=$1;
4192 shift;
4193 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4194 : define a shorthand compile call for compilations that should be ok.
4195 compile_ok='
4196 mc_file=$1;
4197 shift;
4198 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4199
4200 : check for lengths of integral types
4201 echo " "
4202 case "$intsize" in
4203 '')
4204         echo "Checking to see how big your integers are..." >&4
4205         $cat >intsize.c <<'EOCP'
4206 #include <stdio.h>
4207 int main()
4208 {
4209         printf("intsize=%d;\n", (int)sizeof(int));
4210         printf("longsize=%d;\n", (int)sizeof(long));
4211         printf("shortsize=%d;\n", (int)sizeof(short));
4212         exit(0);
4213 }
4214 EOCP
4215         set intsize
4216         if eval $compile_ok && ./intsize > /dev/null; then
4217                 eval `./intsize`
4218                 echo "Your integers are $intsize bytes long."
4219                 echo "Your long integers are $longsize bytes long."
4220                 echo "Your short integers are $shortsize bytes long."
4221         else
4222                 $cat >&4 <<EOM
4223 !
4224 Help! I can't compile and run the intsize test program: please enlighten me!
4225 (This is probably a misconfiguration in your system or libraries, and
4226 you really ought to fix it.  Still, I'll try anyway.)
4227 !
4228 EOM
4229                 dflt=4
4230                 rp="What is the size of an integer (in bytes)?"
4231                 . ./myread
4232                 intsize="$ans"
4233                 dflt=$intsize
4234                 rp="What is the size of a long integer (in bytes)?"
4235                 . ./myread
4236                 longsize="$ans"
4237                 dflt=2
4238                 rp="What is the size of a short integer (in bytes)?"
4239                 . ./myread
4240                 shortsize="$ans"
4241         fi
4242         ;;
4243 esac
4244 $rm -f intsize intsize.*
4245
4246 : see what type lseek is declared as in the kernel
4247 rp="What is the type used for lseek's offset on this system?"
4248 set off_t lseektype long stdio.h sys/types.h
4249 eval $typedef_ask
4250
4251 echo " "
4252 echo "Checking to see how big your file offsets are..." >&4
4253 $cat >try.c <<EOCP
4254 #include <sys/types.h>
4255 #include <stdio.h>
4256 int main()
4257 {
4258     printf("%d\n", (int)sizeof($lseektype));
4259     return(0); 
4260 }
4261 EOCP
4262 set try
4263 if eval $compile_ok; then
4264         lseeksize=`./try`
4265         echo "Your file offsets are $lseeksize bytes long."
4266 else
4267         dflt=$longsize
4268         echo " "
4269         echo "(I can't seem to compile the test program.  Guessing...)"
4270         rp="What is the size of your file offsets (in bytes)?"
4271         . ./myread
4272         lseeksize="$ans"
4273 fi
4274 $rm -f try.c try
4275
4276 : see what type file positions are declared as in the library
4277 rp="What is the type for file position used by fsetpos()?"
4278 set fpos_t fpostype long stdio.h sys/types.h
4279 eval $typedef_ask
4280
4281 echo " "
4282 case "$fpostype" in
4283 *_t) zzz="$fpostype"    ;;
4284 *)   zzz="fpos_t"       ;;
4285 esac
4286 echo "Checking the size of $zzz..." >&4 
4287 cat > try.c <<EOCP
4288 #include <sys/types.h>
4289 #include <stdio.h>
4290 int main() {
4291     printf("%d\n", (int)sizeof($fpostype));
4292     exit(0);
4293 }
4294 EOCP
4295 set try
4296 if eval $compile_ok; then
4297         yyy=`./try`
4298         case "$yyy" in
4299         '')     fpossize=4
4300                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4301                 ;;
4302         *)      fpossize=$yyy
4303                 echo "Your $zzz is $fpossize bytes long."
4304                 ;;
4305         esac
4306 else
4307         dflt="$longsize"
4308         echo " " >&4
4309         echo "(I can't compile the test program.  Guessing...)" >&4
4310         rp="What is the size of your file positions (in bytes)?"
4311         . ./myread
4312         fpossize="$ans"
4313 fi
4314
4315
4316
4317 # Backward compatibility (uselfs is deprecated).
4318 case "$uselfs" in
4319 "$define"|true|[yY]*)
4320         cat <<EOM >&4
4321
4322 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4323 EOM
4324         uselargefiles="$define"
4325         ;;
4326 esac                          
4327
4328 case "$lseeksize:$fpossize" in
4329 8:8) cat <<EOM
4330
4331 You can have files larger than 2 gigabytes.
4332 EOM
4333    val="$define" ;;
4334 *)    case "$uselargefiles" in
4335    "$undef"|false|[nN]*) dflt='n' ;;
4336    *)   dflt='y' ;;
4337    esac
4338    cat <<EOM
4339
4340 Perl can be built to understand large files (files larger than 2 gigabytes)
4341 on some systems.  To do so, Configure can be run with -Duselargefiles.
4342
4343 If this doesn't make any sense to you, just accept the default '$dflt'.
4344 EOM
4345    rp='Try to understand large files, if available?'
4346    . ./myread
4347    case "$ans" in
4348    y|Y)         val="$define" ;;
4349    *)           val="$undef"  ;;
4350    esac
4351    ;;
4352 esac
4353 set uselargefiles
4354 eval $setvar
4355 case "$uselargefiles" in
4356 "$define")
4357 : Look for a hint-file generated 'call-back-unit'.  If the
4358 : user has specified that a large files perl is to be built,
4359 : we may need to set or change some other defaults.
4360         if $test -f uselargefiles.cbu; then
4361                 echo "Your platform has some specific hints for large file builds, using them..."
4362                 . ./uselargefiles.cbu
4363                 echo " "
4364                 echo "Rechecking to see how big your file offsets are..." >&4
4365                 $cat >try.c <<EOCP
4366 #include <sys/types.h>
4367 #include <stdio.h>
4368 int main()
4369 {
4370     printf("%d\n", (int)sizeof($lseektype));
4371     return(0); 
4372 }
4373 EOCP
4374                 set try
4375                 if eval $compile_ok; then
4376                         lseeksize=`./try`
4377                         $echo "Your file offsets are now $lseeksize bytes long."
4378                 else
4379                         dflt="$lseeksize"
4380                         echo " "
4381                         echo "(I can't seem to compile the test program.  Guessing...)"
4382                         rp="What is the size of your file offsets (in bytes)?"
4383                         . ./myread
4384                         lseeksize="$ans"
4385                 fi
4386                 case "$fpostype" in
4387                 *_t) zzz="$fpostype"    ;;
4388                 *)   zzz="fpos_t"       ;;
4389                 esac
4390                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4391                 $cat > try.c <<EOCP
4392 #include <sys/types.h>
4393 #include <stdio.h>
4394 int main() {
4395     printf("%d\n", (int)sizeof($fpostype));
4396     exit(0);
4397 }
4398 EOCP
4399                 set try
4400                 if eval $compile_ok; then
4401                         yyy=`./try`
4402                         dflt="$lseeksize"
4403                         case "$yyy" in
4404                         '')     echo " "
4405                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4406                                 ;;
4407                         *)      fpossize=$yyy
4408                                 echo " $fpossize bytes." >&4
4409                                 ;;
4410                         esac
4411                 else
4412                         dflt="$fpossize"
4413                         echo " "
4414                         echo "(I can't compile the test program.  Guessing...)" >&4
4415                         rp="What is the size of your file positions (in bytes)?"
4416                         . ./myread
4417                         fpossize="$ans"
4418                 fi
4419                 $rm -f try.c try
4420         fi
4421         ;;
4422 esac
4423
4424
4425 case "$usemorebits" in
4426 "$define"|true|[yY]*)
4427         use64bitint="$define"
4428         uselongdouble="$define"
4429         usemorebits="$define"
4430         ;;
4431 *)      usemorebits="$undef"
4432         ;;
4433 esac
4434
4435
4436 case "$uselonglong" in
4437 "$define"|true|[yY]*)
4438         cat <<EOM >&4
4439
4440 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4441 EOM
4442         use64bitint="$define"
4443         ;;
4444 esac                          
4445 case "$use64bits" in
4446 "$define"|true|[yY]*)
4447         cat <<EOM >&4
4448
4449 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4450 EOM
4451         use64bitint="$define"
4452         ;;
4453 esac                          
4454 case "$use64bitints" in
4455 "$define"|true|[yY]*)
4456         cat <<EOM >&4
4457
4458 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4459 EOM
4460         use64bitint="$define"
4461         ;;
4462 esac                          
4463 case "$use64bitsint" in
4464 "$define"|true|[yY]*)
4465         cat <<EOM >&4
4466
4467 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4468 EOM
4469         use64bitint="$define"
4470         ;;
4471 esac                          
4472 case "$uselonglongs" in
4473 "$define"|true|[yY]*)
4474         cat <<EOM >&4
4475
4476 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4477 EOM
4478         use64bitint="$define"
4479         ;;
4480 esac                          
4481 case "$use64bitsall" in
4482 "$define"|true|[yY]*)
4483         cat <<EOM >&4
4484
4485 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4486 EOM
4487         use64bitall="$define"
4488         ;;
4489 esac                          
4490
4491 case "$ccflags" in
4492 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4493 esac
4494 case "$use64bitall" in
4495 "$define"|true|[yY]*) use64bitint="$define" ;;
4496 esac
4497
4498 case "$longsize" in
4499 8) cat <<EOM
4500
4501 You have natively 64-bit long integers.
4502 EOM
4503    val="$define"
4504    ;;
4505 *) case "$use64bitint" in
4506    "$define"|true|[yY]*) dflt='y';;
4507    *) dflt='n';;
4508    esac
4509    cat <<EOM
4510
4511 Perl can be built to take advantage of 64-bit integer types
4512 on some systems.  To do so, Configure can be run with -Duse64bitint.
4513 Choosing this option will most probably introduce binary incompatibilities.
4514
4515 If this doesn't make any sense to you, just accept the default '$dflt'.
4516 EOM
4517    rp='Try to use 64-bit integers, if available?'
4518    . ./myread
4519    case "$ans" in
4520    [yY]*) val="$define" ;;
4521    *)     val="$undef"  ;;
4522    esac
4523    ;;
4524 esac
4525 set use64bitint
4526 eval $setvar
4527
4528 case "$use64bitall" in
4529 "$define"|true|[yY]*) dflt='y' ;;
4530 *) case "$longsize" in
4531    8) dflt='y' ;;
4532    *) dflt='n' ;;
4533    esac
4534    ;;
4535 esac    
4536 cat <<EOM
4537
4538 You may also choose to try maximal 64-bitness.  It means using as much
4539 64-bitness as possible on the platform.  This in turn means even more
4540 binary incompatibilities.  On the other hand, your platform may not
4541 have any more 64-bitness available than what you already have chosen.
4542
4543 If this doesn't make any sense to you, just accept the default '$dflt'.
4544 EOM
4545 rp='Try to use maximal 64-bit support, if available?'
4546 . ./myread
4547 case "$ans" in
4548 [yY]*) val="$define" ;;
4549 *)     val="$undef"  ;;
4550 esac
4551 set use64bitall
4552 eval $setvar
4553 case "$use64bitall" in
4554 "$define")
4555         case "$use64bitint" in
4556         "$undef")
4557                 cat <<EOM
4558
4559 Since you have chosen a maximally 64-bit build, I'm also turning on
4560 the use of 64-bit integers.
4561 EOM
4562                 use64bitint="$define" ;;
4563         esac
4564         ;;
4565 esac
4566
4567 case "$use64bitint" in
4568 "$define"|true|[yY]*)
4569 : Look for a hint-file generated 'call-back-unit'.  If the
4570 : user has specified that a 64-bit perl is to be built,
4571 : we may need to set or change some other defaults.
4572         if $test -f use64bitint.cbu; then
4573                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4574                 . ./use64bitint.cbu
4575         fi
4576         case "$longsize" in
4577         4) case "$archname64" in
4578            '') archname64=64int ;;
4579            esac
4580            ;;
4581         esac
4582         ;;
4583 esac
4584
4585 case "$use64bitall" in
4586 "$define"|true|[yY]*)
4587 : Look for a hint-file generated 'call-back-unit'.  If the
4588 : user has specified that a maximally 64-bit perl is to be built,
4589 : we may need to set or change some other defaults.
4590         if $test -f use64bitall.cbu; then
4591                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4592                 . ./use64bitall.cbu
4593         fi
4594         case "$longsize" in
4595         4) case "$archname64" in
4596            ''|64int) archname64=64all ;;
4597            esac
4598            ;;
4599         esac
4600         ;;
4601 esac
4602
4603 : determine the architecture name
4604 echo " "
4605 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4606         tarch=`arch`"-$osname"
4607 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4608         if uname -m > tmparch 2>&1 ; then
4609                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4610                         -e 's/$/'"-$osname/" tmparch`
4611         else
4612                 tarch="$osname"
4613         fi
4614         $rm -f tmparch
4615 else
4616         tarch="$osname"
4617 fi
4618 case "$myarchname" in
4619 ''|"$tarch") ;;
4620 *)
4621         echo "(Your architecture name used to be $myarchname.)"
4622         archname=''
4623         ;;
4624 esac
4625 myarchname="$tarch"
4626 case "$archname" in
4627 '') dflt="$tarch";;
4628 *) dflt="$archname";;
4629 esac
4630 rp='What is your architecture name'
4631 . ./myread
4632 archname="$ans"
4633 case "$usethreads" in
4634 $define)
4635         echo "Threads selected." >&4
4636         case "$archname" in
4637         *-thread*) echo "...and architecture name already has -thread." >&4
4638                 ;;
4639         *)      archname="$archname-thread"
4640                 echo "...setting architecture name to $archname." >&4
4641                 ;;
4642         esac
4643         ;;
4644 esac
4645 case "$usemultiplicity" in
4646 $define)
4647         echo "Multiplicity selected." >&4
4648         case "$archname" in
4649         *-multi*) echo "...and architecture name already has -multi." >&4
4650                 ;;
4651         *)      archname="$archname-multi"
4652                 echo "...setting architecture name to $archname." >&4
4653                 ;;
4654         esac
4655         ;;
4656 esac
4657 case "$use64bitint" in
4658 $define)
4659         case "$archname64" in
4660         '')
4661                 ;;
4662         *)
4663                 case "$archname" in
4664                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4665                         ;;
4666                 *)      archname="$archname-$archname64"
4667                         echo "...setting architecture name to $archname." >&4
4668                         ;;
4669                 esac
4670                 ;;
4671         esac
4672 esac
4673
4674 : determine root of directory hierarchy where package will be installed.
4675 case "$prefix" in
4676 '')
4677         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4678         ;;
4679 *)
4680         dflt="$prefix"
4681         ;;
4682 esac
4683 $cat <<EOM
4684
4685 By default, $package will be installed in $dflt/bin, manual pages
4686 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4687 installation directories. Typically this is something like /usr/local.
4688 If you wish to have binaries under /usr/bin but other parts of the
4689 installation under /usr/local, that's ok: you will be prompted
4690 separately for each of the installation directories, the prefix being
4691 only used to set the defaults.
4692
4693 EOM
4694 fn=d~
4695 rp='Installation prefix to use?'
4696 . ./getfile
4697 oldprefix=''
4698 case "$prefix" in
4699 '') ;;
4700 *)
4701         case "$ans" in
4702         "$prefix") ;;
4703         *) oldprefix="$prefix";;
4704         esac
4705         ;;
4706 esac
4707 prefix="$ans"
4708 prefixexp="$ansexp"
4709
4710 : is AFS running?
4711 echo " "
4712 case "$afs" in
4713 $define|true)   afs=true ;;
4714 $undef|false)   afs=false ;;
4715 *)      if test -d /afs; then
4716                 afs=true
4717         else
4718                 afs=false
4719         fi
4720         ;;
4721 esac
4722 if $afs; then
4723         echo "AFS may be running... I'll be extra cautious then..." >&4
4724 else
4725         echo "AFS does not seem to be running..." >&4
4726 fi
4727
4728 : determine installation prefix for where package is to be installed.
4729 if $afs; then 
4730 $cat <<EOM
4731
4732 Since you are running AFS, I need to distinguish the directory in which
4733 files will reside from the directory in which they are installed (and from
4734 which they are presumably copied to the former directory by occult means).
4735
4736 EOM
4737         case "$installprefix" in
4738         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4739         *) dflt="$installprefix";;
4740         esac
4741 else
4742 $cat <<EOM
4743
4744 In some special cases, particularly when building $package for distribution,
4745 it is convenient to distinguish between the directory in which files should 
4746 be installed from the directory ($prefix) in which they 
4747 will eventually reside.  For most users, these two directories are the same.
4748
4749 EOM
4750         case "$installprefix" in
4751         '') dflt=$prefix ;;
4752         *) dflt=$installprefix;;
4753         esac
4754 fi
4755 fn=d~
4756 rp='What installation prefix should I use for installing files?'
4757 . ./getfile
4758 installprefix="$ans"
4759 installprefixexp="$ansexp"
4760
4761 : set the prefixit variable, to compute a suitable default value
4762 prefixit='case "$3" in
4763 ""|none)
4764         case "$oldprefix" in
4765         "") eval "$1=\"\$$2\"";;
4766         *)
4767                 case "$3" in
4768                 "") eval "$1=";;
4769                 none)
4770                         eval "tp=\"\$$2\"";
4771                         case "$tp" in
4772                         ""|" ") eval "$1=\"\$$2\"";;
4773                         *) eval "$1=";;
4774                         esac;;
4775                 esac;;
4776         esac;;
4777 *)
4778         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4779         case "$tp" in
4780         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4781         /*-$oldprefix/*|\~*-$oldprefix/*)
4782                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4783         *) eval "$1=\"\$$2\"";;
4784         esac;;
4785 esac'
4786
4787
4788 : get the patchlevel
4789 echo " "
4790 echo "Getting the current patchlevel..." >&4
4791 if $test -r $rsrc/patchlevel.h;then
4792         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4793         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4794         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4795         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4796         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4797         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4798 else
4799         revision=0
4800         patchlevel=0
4801         subversion=0
4802         api_revision=0
4803         api_version=0
4804         api_subversion=0
4805 fi
4806 $echo $n "(You have $package revision $revision" $c
4807 $echo $n " patchlevel $patchlevel" $c
4808 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4809 echo ".)"
4810 case "$osname" in
4811 dos|vms)
4812         : XXX Should be a Configure test for double-dots in filenames.
4813         version=`echo $revision $patchlevel $subversion | \
4814                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4815         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4816                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4817         ;;
4818 *)
4819         version=`echo $revision $patchlevel $subversion | \
4820                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4821         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4822                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4823         ;;
4824 esac
4825 : Special case the 5.005_xx maintenance series, which used 5.005
4826 : without any subversion label as a subdirectory in $sitelib
4827 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4828         api_versionstring='5.005'
4829 fi
4830
4831 : determine installation style
4832 : For now, try to deduce it from prefix unless it is already set.
4833 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4834 case "$installstyle" in
4835 '')     case "$prefix" in
4836                 *perl*) dflt='lib';;
4837                 *) dflt='lib/perl5' ;;
4838         esac
4839         ;;
4840 *)      dflt="$installstyle" ;;
4841 esac
4842 : Probably not worth prompting for this since we prompt for all
4843 : the directories individually, and the prompt would be too long and
4844 : confusing anyway.
4845 installstyle=$dflt
4846
4847 : determine where private library files go
4848 : Usual default is /usr/local/lib/perl5/$version.
4849 : Also allow things like /opt/perl/lib/$version, since 
4850 : /opt/perl/lib/perl5... would be redundant.
4851 : The default "style" setting is made in installstyle.U
4852 case "$installstyle" in
4853 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4854 *)       set dflt privlib lib/$version ;;
4855 esac
4856 eval $prefixit
4857 $cat <<EOM
4858
4859 There are some auxiliary files for $package that need to be put into a
4860 private library directory that is accessible by everyone.
4861
4862 EOM
4863 fn=d~+
4864 rp='Pathname where the private library files will reside?'
4865 . ./getfile
4866 privlib="$ans"
4867 privlibexp="$ansexp"
4868 : Change installation prefix, if necessary.
4869 if $test X"$prefix" != X"$installprefix"; then
4870         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4871 else
4872         installprivlib="$privlibexp"
4873 fi
4874
4875 : set the prefixup variable, to restore leading tilda escape
4876 prefixup='case "$prefixexp" in
4877 "$prefix") ;;
4878 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4879 esac'
4880
4881 : determine where public architecture dependent libraries go
4882 set archlib archlib
4883 eval $prefixit
4884 : privlib default is /usr/local/lib/$package/$version
4885 : archlib default is /usr/local/lib/$package/$version/$archname
4886 : privlib may have an optional trailing /share.
4887 tdflt=`echo $privlib | $sed 's,/share$,,'`
4888 tdflt=$tdflt/$archname
4889 case "$archlib" in
4890 '')     dflt=$tdflt
4891         ;;
4892 *)      dflt="$archlib"
4893     ;;
4894 esac
4895 $cat <<EOM
4896
4897 $spackage contains architecture-dependent library files.  If you are
4898 sharing libraries in a heterogeneous environment, you might store
4899 these files in a separate location.  Otherwise, you can just include
4900 them with the rest of the public library files.
4901
4902 EOM
4903 fn=d+~
4904 rp='Where do you want to put the public architecture-dependent libraries?'
4905 . ./getfile
4906 archlib="$ans"
4907 archlibexp="$ansexp"
4908 if $test X"$archlib" = X"$privlib"; then
4909         d_archlib="$undef"
4910 else
4911         d_archlib="$define"
4912 fi
4913 : Change installation prefix, if necessary.
4914 if $test X"$prefix" != X"$installprefix"; then
4915         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4916 else
4917         installarchlib="$archlibexp"
4918 fi
4919
4920
4921 : Binary compatibility with 5.005 is not possible for builds
4922 : with advanced features
4923 case "$usethreads$usemultiplicity" in
4924 *define*)
4925         bincompat5005="$undef"
4926         d_bincompat5005="$undef"
4927         ;;
4928 *)      $cat <<EOM
4929
4930 This version of Perl can be compiled for binary compatibility with 5.005.
4931 If you decide to do so, you will be able to continue using most of the
4932 extensions that were compiled for Perl 5.005.
4933
4934 EOM
4935         case "$bincompat5005$d_bincompat5005" in
4936         *"$undef"*) dflt=n ;;
4937         *) dflt=y ;;
4938         esac
4939         rp='Binary compatibility with Perl 5.005?'
4940         . ./myread
4941         case "$ans" in
4942         y*) val="$define" ;;
4943         *)  val="$undef" ;;
4944         esac
4945         set d_bincompat5005
4946         eval $setvar
4947         case "$d_bincompat5005" in
4948         "$define")
4949                 bincompat5005="$define"
4950                 ;;
4951         *)      bincompat5005="$undef"
4952                 d_bincompat5005="$undef"
4953                 ;;
4954         esac
4955         ;;
4956 esac
4957
4958
4959 : see if setuid scripts can be secure
4960 $cat <<EOM
4961
4962 Some kernels have a bug that prevents setuid #! scripts from being
4963 secure.  Some sites have disabled setuid #! scripts because of this.
4964
4965 First let's decide if your kernel supports secure setuid #! scripts.
4966 (If setuid #! scripts would be secure but have been disabled anyway,
4967 don't say that they are secure if asked.)
4968
4969 EOM
4970
4971 val="$undef"
4972 if $test -d /dev/fd; then
4973         echo "#!$ls" >reflect
4974         chmod +x,u+s reflect
4975         ./reflect >flect 2>&1
4976         if $contains "/dev/fd" flect >/dev/null; then
4977                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4978                 val="$define"
4979         else
4980                 $cat <<EOM
4981 If you are not sure if they are secure, I can check but I'll need a
4982 username and password different from the one you are using right now.
4983 If you don't have such a username or don't want me to test, simply
4984 enter 'none'.
4985
4986 EOM
4987                 rp='Other username to test security of setuid scripts with?'
4988                 dflt='none'
4989                 . ./myread
4990                 case "$ans" in
4991                 n|none)
4992                         case "$d_suidsafe" in
4993                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
4994                                 dflt=n;;
4995                         "$undef")
4996                                 echo "Well, the $hint value is *not* secure." >&4
4997                                 dflt=n;;
4998                         *)      echo "Well, the $hint value *is* secure." >&4
4999                                 dflt=y;;
5000                         esac
5001                         ;;
5002                 *)
5003                         $rm -f reflect flect
5004                         echo "#!$ls" >reflect
5005                         chmod +x,u+s reflect
5006                         echo >flect
5007                         chmod a+w flect
5008                         echo '"su" will (probably) prompt you for '"$ans's password."
5009                         su $ans -c './reflect >flect'
5010                         if $contains "/dev/fd" flect >/dev/null; then
5011                                 echo "Okay, it looks like setuid scripts are secure." >&4
5012                                 dflt=y
5013                         else
5014                                 echo "I don't think setuid scripts are secure." >&4
5015                                 dflt=n
5016                         fi
5017                         ;;
5018                 esac
5019                 rp='Does your kernel have *secure* setuid scripts?'
5020                 . ./myread
5021                 case "$ans" in
5022                 [yY]*)  val="$define";;
5023                 *)      val="$undef";;
5024                 esac
5025         fi
5026 else
5027         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5028         echo "(That's for file descriptors, not floppy disks.)"
5029         val="$undef"
5030 fi
5031 set d_suidsafe
5032 eval $setvar
5033
5034 $rm -f reflect flect
5035
5036 : now see if they want to do setuid emulation
5037 echo " "
5038 val="$undef"
5039 case "$d_suidsafe" in
5040 "$define")
5041         val="$undef"
5042         echo "No need to emulate SUID scripts since they are secure here." >& 4
5043         ;;
5044 *)
5045         $cat <<EOM
5046 Some systems have disabled setuid scripts, especially systems where
5047 setuid scripts cannot be secure.  On systems where setuid scripts have
5048 been disabled, the setuid/setgid bits on scripts are currently
5049 useless.  It is possible for $package to detect those bits and emulate
5050 setuid/setgid in a secure fashion.  This emulation will only work if
5051 setuid scripts have been disabled in your kernel.
5052
5053 EOM
5054         case "$d_dosuid" in
5055         "$define") dflt=y ;;
5056         *) dflt=n ;;
5057         esac
5058         rp="Do you want to do setuid/setgid emulation?"
5059         . ./myread
5060         case "$ans" in
5061         [yY]*)  val="$define";;
5062         *)      val="$undef";;
5063         esac
5064         ;;
5065 esac
5066 set d_dosuid
5067 eval $setvar
5068
5069 : determine filename position in cpp output
5070 echo " "
5071 echo "Computing filename position in cpp output for #include directives..." >&4
5072 echo '#include <stdio.h>' > foo.c
5073 $cat >fieldn <<EOF
5074 $startsh
5075 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5076 $grep '^[       ]*#.*stdio\.h' | \
5077 while read cline; do
5078         pos=1
5079         set \$cline
5080         while $test \$# -gt 0; do
5081                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5082                         echo "\$pos"
5083                         exit 0
5084                 fi
5085                 shift
5086                 pos=\`expr \$pos + 1\`
5087         done
5088 done
5089 EOF
5090 chmod +x fieldn
5091 fieldn=`./fieldn`
5092 $rm -f foo.c fieldn
5093 case $fieldn in
5094 '') pos='???';;
5095 1) pos=first;;
5096 2) pos=second;;
5097 3) pos=third;;
5098 *) pos="${fieldn}th";;
5099 esac
5100 echo "Your cpp writes the filename in the $pos field of the line."
5101
5102 : locate header file
5103 $cat >findhdr <<EOF
5104 $startsh
5105 wanted=\$1
5106 name=''
5107 for usrincdir in $usrinc
5108 do
5109         if test -f \$usrincdir/\$wanted; then
5110                 echo "\$usrincdir/\$wanted"
5111                 exit 0
5112         fi
5113 done
5114 awkprg='{ print \$$fieldn }'
5115 echo "#include <\$wanted>" > foo\$\$.c
5116 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5117 $grep "^[       ]*#.*\$wanted" | \
5118 while read cline; do
5119         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5120         case "\$name" in
5121         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5122         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5123         *) exit 2;;
5124         esac;
5125 done;
5126 #
5127 # status = 0: grep returned 0 lines, case statement not executed
5128 # status = 1: headerfile found
5129 # status = 2: while loop executed, no headerfile found
5130 #
5131 status=\$?
5132 $rm -f foo\$\$.c;
5133 if test \$status -eq 1; then
5134         exit 0;
5135 fi
5136 exit 1
5137 EOF
5138 chmod +x findhdr
5139
5140 : define an alternate in-header-list? function
5141 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5142 cont=true; xxf="echo \"<\$1> found.\" >&4";
5143 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5144 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5145 esac;
5146 case $# in 4) instead=instead;; *) instead="at last";; esac;
5147 while $test "$cont"; do
5148         xxx=`./findhdr $1`
5149         var=$2; eval "was=\$$2";
5150         if $test "$xxx" && $test -r "$xxx";
5151         then eval $xxf;
5152         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5153                 cont="";
5154         else eval $xxnf;
5155         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5156         set $yyy; shift; shift; yyy=$@;
5157         case $# in 0) cont="";;
5158         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5159                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5160         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5161                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5162         esac;
5163 done;
5164 while $test "$yyy";
5165 do set $yyy; var=$2; eval "was=\$$2";
5166         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5167         set $yyy; shift; shift; yyy=$@;
5168 done'
5169
5170 : see if this is a malloc.h system
5171 set malloc.h i_malloc
5172 eval $inhdr
5173
5174 : see if stdlib is available
5175 set stdlib.h i_stdlib
5176 eval $inhdr
5177
5178 : determine which malloc to compile in
5179 echo " "
5180 case "$usemymalloc" in
5181 ''|[yY]*|true|$define)  dflt='y' ;;
5182 *)      dflt='n' ;;
5183 esac
5184 rp="Do you wish to attempt to use the malloc that comes with $package?"
5185 . ./myread
5186 usemymalloc="$ans"
5187 case "$ans" in
5188 y*|true)
5189         usemymalloc='y'
5190         mallocsrc='malloc.c'
5191         mallocobj="malloc$_o"
5192         d_mymalloc="$define"
5193         case "$libs" in
5194         *-lmalloc*)
5195                 : Remove malloc from list of libraries to use
5196                 echo "Removing unneeded -lmalloc from library list" >&4
5197                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5198                 shift
5199                 libs="$*"
5200                 echo "libs = $libs" >&4
5201                 ;;
5202         esac
5203         ;;
5204 *)
5205         usemymalloc='n'
5206         mallocsrc=''
5207         mallocobj=''
5208         d_mymalloc="$undef"
5209         ;;
5210 esac
5211
5212 : compute the return types of malloc and free
5213 echo " "
5214 $cat >malloc.c <<END
5215 #$i_malloc I_MALLOC
5216 #$i_stdlib I_STDLIB
5217 #include <stdio.h>
5218 #include <sys/types.h>
5219 #ifdef I_MALLOC
5220 #include <malloc.h>
5221 #endif
5222 #ifdef I_STDLIB
5223 #include <stdlib.h>
5224 #endif
5225 #ifdef TRY_MALLOC
5226 void *malloc();
5227 #endif
5228 #ifdef TRY_FREE
5229 void free();
5230 #endif
5231 END
5232 case "$malloctype" in
5233 '')
5234         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5235                 malloctype='void *'
5236         else
5237                 malloctype='char *'
5238         fi
5239         ;;
5240 esac
5241 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5242
5243 case "$freetype" in
5244 '')
5245         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5246                 freetype='void'
5247         else
5248                 freetype='int'
5249         fi
5250         ;;
5251 esac
5252 echo "Your system uses $freetype free(), it would seem." >&4
5253 $rm -f malloc.[co]
5254 $cat <<EOM
5255
5256 After $package is installed, you may wish to install various
5257 add-on modules and utilities.  Typically, these add-ons will
5258 be installed under $prefix with the rest
5259 of this package.  However, you may wish to install such add-ons
5260 elsewhere under a different prefix.
5261
5262 If you do not wish to put everything under a single prefix, that's
5263 ok.  You will be prompted for the individual locations; this siteprefix
5264 is only used to suggest the defaults.
5265
5266 The default should be fine for most people.
5267
5268 EOM
5269 fn=d~+
5270 rp='Installation prefix to use for add-on modules and utilities?'
5271 : XXX Here might be another good place for an installstyle setting.
5272 case "$siteprefix" in
5273 '') dflt=$prefix ;;
5274 *)  dflt=$siteprefix ;;
5275 esac
5276 . ./getfile
5277 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5278 oldsiteprefix=''
5279 case "$siteprefix" in
5280 '') ;;
5281 *)      case "$ans" in
5282         "$prefix") ;;
5283         *) oldsiteprefix="$prefix";;
5284         esac
5285         ;;
5286 esac
5287 siteprefix="$ans"
5288 siteprefixexp="$ansexp"
5289
5290 : determine where site specific libraries go.
5291 : Usual default is /usr/local/lib/perl5/site_perl/$version
5292 : The default "style" setting is made in installstyle.U
5293 : XXX No longer works with Prefixit stuff.
5294 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5295 case "$sitelib" in
5296 '') case "$installstyle" in
5297         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5298         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5299         esac
5300         ;;
5301 *)      dflt="$sitelib"
5302         ;;
5303 esac
5304 $cat <<EOM
5305
5306 The installation process will create a directory for
5307 site-specific extensions and modules.  Most users find it convenient
5308 to place all site-specific files in this directory rather than in the
5309 main distribution directory.
5310
5311 EOM
5312 fn=d~+
5313 rp='Pathname for the site-specific library files?'
5314 . ./getfile
5315 sitelib="$ans"
5316 sitelibexp="$ansexp"
5317 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
5318 : Change installation prefix, if necessary.
5319 if $test X"$prefix" != X"$installprefix"; then
5320         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5321 else
5322         installsitelib="$sitelibexp"
5323 fi
5324
5325 : determine where site specific architecture-dependent libraries go.
5326 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
5327 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
5328 : sitelib may have an optional trailing /share.
5329 case "$sitearch" in
5330 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
5331         dflt="$dflt/$archname"
5332         ;;
5333 *)      dflt="$sitearch"
5334         ;;
5335 esac
5336 set sitearch sitearch none
5337 eval $prefixit
5338 $cat <<EOM
5339
5340 The installation process will also create a directory for
5341 architecture-dependent site-specific extensions and modules.
5342
5343 EOM
5344 fn=d~+
5345 rp='Pathname for the site-specific architecture-dependent library files?'
5346 . ./getfile
5347 sitearch="$ans"
5348 sitearchexp="$ansexp"
5349 : Change installation prefix, if necessary.
5350 if $test X"$prefix" != X"$installprefix"; then
5351         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
5352 else
5353         installsitearch="$sitearchexp"
5354 fi
5355
5356 $cat <<EOM
5357
5358 The installation process will also create a directory for
5359 vendor-supplied add-ons.  Vendors who supply perl with their system
5360 may find it convenient to place all vendor-supplied files in this
5361 directory rather than in the main distribution directory.  This will
5362 ease upgrades between binary-compatible maintenance versions of perl.
5363
5364 Of course you may also use these directories in whatever way you see
5365 fit.  For example, you might use them to access modules shared over a
5366 company-wide network.
5367
5368 The default answer should be fine for most people.
5369 This causes further questions about vendor add-ons to be skipped
5370 and no vendor-specific directories will be configured for perl.
5371
5372 EOM
5373 rp='Do you want to configure vendor-specific add-on directories?'
5374 case "$usevendorprefix" in
5375 define|true|[yY]*) dflt=y ;;
5376 *)      : User may have set vendorprefix directly on Configure command line.
5377         case "$vendorprefix" in
5378         ''|' ') dflt=n ;;
5379         *)      dflt=y ;;
5380         esac
5381         ;;
5382 esac
5383 . ./myread
5384 case "$ans" in
5385 [yY]*)  fn=d~+
5386         rp='Installation prefix to use for vendor-supplied add-ons?'
5387         case "$vendorprefix" in
5388         '') dflt='' ;;
5389         *)  dflt=$vendorprefix ;;
5390         esac
5391         . ./getfile
5392         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5393         oldvendorprefix=''
5394         case "$vendorprefix" in
5395         '') ;;
5396         *)      case "$ans" in
5397                 "$prefix") ;;
5398                 *) oldvendorprefix="$prefix";;
5399                 esac
5400                 ;;
5401         esac
5402         usevendorprefix="$define"
5403         vendorprefix="$ans"
5404         vendorprefixexp="$ansexp"
5405         ;;
5406 *)      usevendorprefix="$undef"
5407         vendorprefix=''
5408         vendorprefixexp=''
5409         ;;
5410 esac
5411
5412 case "$vendorprefix" in
5413 '')     d_vendorlib="$undef"
5414         vendorlib=''
5415         vendorlibexp=''
5416         ;;
5417 *)      d_vendorlib="$define"
5418         : determine where vendor-supplied modules go.
5419         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5420         case "$vendorlib" in
5421         '')
5422                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5423                 case "$installstyle" in
5424                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5425                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5426                 esac
5427                 ;;
5428         *)      dflt="$vendorlib"
5429                 ;;
5430         esac
5431         fn=d~+
5432         rp='Pathname for the vendor-supplied library files?'
5433         . ./getfile
5434         vendorlib="$ans"
5435         vendorlibexp="$ansexp"
5436         ;;
5437 esac
5438 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
5439 : Change installation prefix, if necessary.
5440 if $test X"$prefix" != X"$installprefix"; then
5441         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5442 else
5443         installvendorlib="$vendorlibexp"
5444 fi
5445
5446 case "$vendorprefix" in
5447 '')     d_vendorarch="$undef"
5448         vendorarch=''
5449         vendorarchexp=''
5450         ;;
5451 *)      d_vendorarch="$define"
5452         : determine where vendor-supplied architecture-dependent libraries go.
5453         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
5454         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
5455         : vendorlib may have an optional trailing /share.
5456         case "$vendorarch" in
5457         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
5458                 dflt="$dflt/$archname"
5459                 ;;
5460         *)      dflt="$vendorarch" ;;
5461         esac
5462         fn=d~+
5463         rp='Pathname for vendor-supplied architecture-dependent files?'
5464         . ./getfile
5465         vendorarch="$ans"
5466         vendorarchexp="$ansexp"
5467         ;;
5468 esac
5469 : Change installation prefix, if necessary.
5470 if $test X"$prefix" != X"$installprefix"; then
5471         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
5472 else
5473         installvendorarch="$vendorarchexp"
5474 fi
5475
5476 : Final catch-all directories to search
5477 $cat <<EOM
5478
5479 Lastly, you can have perl look in other directories for extensions and
5480 modules in addition to those already specified.
5481 These directories will be searched after 
5482         $sitearch 
5483         $sitelib 
5484 EOM
5485 test X"$vendorlib" != "X" && echo '     ' $vendorlib
5486 test X"$vendorarch" != "X" && echo '    ' $vendorarch
5487 echo ' '
5488 case "$otherlibdirs" in
5489 ''|' ') dflt='none' ;;
5490 *)      dflt="$otherlibdirs" ;;
5491 esac
5492 $cat <<EOM
5493 Enter a colon-separated set of extra paths to include in perl's @INC
5494 search path, or enter 'none' for no extra paths.
5495
5496 EOM
5497
5498 rp='Colon-separated list of additional directories for perl to search?'
5499 . ./myread
5500 case "$ans" in
5501 ' '|''|none)    otherlibdirs=' ' ;;     
5502 *)      otherlibdirs="$ans" ;;
5503 esac
5504 case "$otherlibdirs" in
5505 ' ') val=$undef ;;
5506 *)      val=$define ;;
5507 esac
5508 set d_perl_otherlibdirs
5509 eval $setvar
5510
5511 : Cruising for prototypes
5512 echo " "
5513 echo "Checking out function prototypes..." >&4
5514 $cat >prototype.c <<'EOCP'
5515 int main(int argc, char *argv[]) {
5516         exit(0);}
5517 EOCP
5518 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5519         echo "Your C compiler appears to support function prototypes."
5520         val="$define"
5521 else
5522         echo "Your C compiler doesn't seem to understand function prototypes."
5523         val="$undef"
5524 fi
5525 set prototype
5526 eval $setvar
5527 $rm -f prototype*
5528
5529 case "$prototype" in
5530 "$define") ;;
5531 *)      ansi2knr='ansi2knr'
5532         echo " "
5533         cat <<EOM >&4
5534
5535 $me:  FATAL ERROR:
5536 This version of $package can only be compiled by a compiler that 
5537 understands function prototypes.  Unfortunately, your C compiler 
5538         $cc $ccflags
5539 doesn't seem to understand them.  Sorry about that.
5540
5541 If GNU cc is available for your system, perhaps you could try that instead.  
5542
5543 Eventually, we hope to support building Perl with pre-ANSI compilers.
5544 If you would like to help in that effort, please contact <perlbug@perl.org>.
5545
5546 Aborting Configure now.
5547 EOM
5548         exit 2
5549         ;;
5550 esac
5551
5552 : determine where public executables go
5553 echo " "
5554 set dflt bin bin
5555 eval $prefixit
5556 fn=d~
5557 rp='Pathname where the public executables will reside?'
5558 . ./getfile
5559 if $test "X$ansexp" != "X$binexp"; then
5560         installbin=''
5561 fi
5562 bin="$ans"
5563 binexp="$ansexp"
5564 : Change installation prefix, if necessary.
5565 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5566 if $test X"$prefix" != X"$installprefix"; then
5567         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5568 else
5569         installbin="$binexp"
5570 fi
5571
5572 : Find perl5.005 or later.
5573 echo "Looking for a previously installed perl5.005 or later... "
5574 case "$perl5" in
5575 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
5576                 : Check if this perl is recent and can load a simple module
5577                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5578                         perl5=$tdir/perl
5579                         break;
5580                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5581                         perl5=$tdir/perl
5582                         break;
5583                 fi
5584         done
5585         ;;
5586 *)      perl5="$perl5"
5587         ;;
5588 esac
5589 case "$perl5" in
5590 '')     echo "None found.  That's ok.";;
5591 *)      echo "Using $perl5." ;;
5592 esac
5593
5594 : Determine list of previous versions to include in @INC
5595 $cat > getverlist <<EOPL
5596 #!$perl5 -w
5597 use File::Basename;
5598 \$api_versionstring = "$api_versionstring";
5599 \$version = "$version";
5600 \$stem = "$sitelib_stem";
5601 \$archname = "$archname";
5602 EOPL
5603         $cat >> getverlist <<'EOPL'
5604 # Can't have leading @ because metaconfig interprets it as a command!
5605 ;@inc_version_list=();
5606 # XXX Redo to do opendir/readdir? 
5607 if (-d $stem) {
5608     chdir($stem);
5609     ;@candidates = glob("5.*");
5610 }
5611 else {
5612     ;@candidates = ();
5613 }
5614
5615 # XXX ToDo:  These comparisons must be reworked when two-digit
5616 # subversions come along, so that 5.7.10 compares as greater than
5617 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
5618 # widespread that we can use the built-in version vectors rather
5619 # than reinventing them here.  For 5.6.0, however, we must
5620 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
5621 foreach $d (@candidates) {
5622     if ($d lt $version) {
5623         if ($d ge $api_versionstring) {
5624             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
5625         }
5626         elsif ($d ge "5.005") {
5627             unshift(@inc_version_list, grep { -d } $d);
5628         }
5629     }
5630     else {
5631         # Skip newer version.  I.e. don't look in
5632         # 5.7.0 if we're installing 5.6.1.
5633     }
5634 }
5635
5636 if (@inc_version_list) {
5637     print join(' ', @inc_version_list);
5638 }
5639 else {
5640     # Blank space to preserve value for next Configure run.
5641     print " ";
5642 }
5643 EOPL
5644 chmod +x getverlist
5645 case "$inc_version_list" in
5646 '')     if test -x "$perl5"; then
5647                 dflt=`$perl5 getverlist`
5648         else
5649                 dflt='none'
5650         fi
5651         ;;
5652 $undef) dflt='none' ;;
5653 *)  dflt="$inc_version_list" ;;
5654 esac
5655 case "$dflt" in
5656 ''|' ') dflt=none ;;
5657 esac
5658 $cat <<'EOM'
5659
5660 In order to ease the process of upgrading, this version of perl 
5661 can be configured to use modules built and installed with earlier 
5662 versions of perl that were installed under $prefix.  Specify here
5663 the list of earlier versions that this version of perl should check.
5664 If Configure detected no earlier versions of perl installed under
5665 $prefix, then the list will be empty.  Answer 'none' to tell perl
5666 to not search earlier versions.
5667
5668 The default should almost always be sensible, so if you're not sure,
5669 just accept the default.
5670 EOM
5671
5672 rp='List of earlier versions to include in @INC?'
5673 . ./myread
5674 case "$ans" in
5675 [Nn]one|''|' ') inc_version_list=' ' ;;
5676 *) inc_version_list="$ans" ;;
5677 esac
5678 case "$inc_version_list" in
5679 ''|' ') 
5680         inc_version_list_init='0';;
5681 *)      inc_version_list_init=`echo $inc_version_list |
5682                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5683         ;;
5684 esac
5685 $rm -f getverlist
5686
5687 : determine whether to install perl also as /usr/bin/perl
5688
5689 echo " "
5690 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5691         $cat <<EOM
5692 Many scripts expect perl to be installed as /usr/bin/perl.
5693 I can install the perl you are about to compile also as /usr/bin/perl
5694 (in addition to $installbin/perl).
5695 EOM
5696         case "$installusrbinperl" in
5697         "$undef"|[nN]*) dflt='n';;
5698         *)              dflt='y';;
5699         esac
5700         rp="Do you want to install perl as /usr/bin/perl?"
5701         . ./myread
5702         case "$ans" in
5703         [yY]*)  val="$define";;
5704         *)      val="$undef" ;;
5705         esac
5706 else
5707         val="$undef"
5708 fi
5709 set installusrbinperl
5710 eval $setvar
5711
5712 echo " "
5713 echo "Checking for GNU C Library..." >&4
5714 cat >gnulibc.c <<EOM
5715 #include <stdio.h>
5716 int main()
5717 {
5718 #ifdef __GLIBC__
5719     exit(0);
5720 #else
5721     exit(1);
5722 #endif
5723 }
5724 EOM
5725 set gnulibc
5726 if eval $compile_ok && ./gnulibc; then
5727         val="$define"
5728         echo "You are using the GNU C Library"
5729 else
5730         val="$undef"
5731         echo "You are not using the GNU C Library"
5732 fi
5733 $rm -f gnulibc*
5734 set d_gnulibc
5735 eval $setvar
5736
5737 : see if nm is to be used to determine whether a symbol is defined or not
5738 case "$usenm" in
5739 '')
5740         dflt=''
5741         case "$d_gnulibc" in
5742         "$define")
5743                 echo " "
5744                 echo "nm probably won't work on the GNU C Library." >&4
5745                 dflt=n
5746                 ;;
5747         esac
5748         case "$dflt" in
5749         '') 
5750                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5751                         echo " "
5752                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5753                         echo "'nm' won't be sufficient on this sytem." >&4
5754                         dflt=n
5755                 fi
5756                 ;;
5757         esac
5758         case "$dflt" in
5759         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5760                 if $test $dflt -gt 20; then
5761                         dflt=y
5762                 else
5763                         dflt=n
5764                 fi
5765                 ;;
5766         esac
5767         ;;
5768 *)
5769         case "$usenm" in
5770         true|$define) dflt=y;;
5771         *) dflt=n;;
5772         esac
5773         ;;
5774 esac
5775 $cat <<EOM
5776
5777 I can use $nm to extract the symbols from your C libraries. This
5778 is a time consuming task which may generate huge output on the disk (up
5779 to 3 megabytes) but that should make the symbols extraction faster. The
5780 alternative is to skip the 'nm' extraction part and to compile a small
5781 test program instead to determine whether each symbol is present. If
5782 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5783 this may be the best solution.
5784
5785 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5786
5787 EOM
5788 rp="Shall I use $nm to extract C symbols from the libraries?"
5789 . ./myread
5790 case "$ans" in
5791 [Nn]*) usenm=false;;
5792 *) usenm=true;;
5793 esac
5794
5795 runnm=$usenm
5796 case "$reuseval" in
5797 true) runnm=false;;
5798 esac
5799
5800 : nm options which may be necessary
5801 case "$nm_opt" in
5802 '') if $test -f /mach_boot; then
5803                 nm_opt=''       # Mach
5804         elif $test -d /usr/ccs/lib; then
5805                 nm_opt='-p'     # Solaris (and SunOS?)
5806         elif $test -f /dgux; then
5807                 nm_opt='-p'     # DG-UX
5808         elif $test -f /lib64/rld; then
5809                 nm_opt='-p'     # 64-bit Irix
5810         else
5811                 nm_opt=''
5812         fi;;
5813 esac
5814
5815 : nm options which may be necessary for shared libraries but illegal
5816 : for archive libraries.  Thank you, Linux.
5817 case "$nm_so_opt" in
5818 '')     case "$myuname" in
5819         *linux*)
5820                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5821                         nm_so_opt='--dynamic'
5822                 fi
5823                 ;;
5824         esac
5825         ;;
5826 esac
5827
5828 case "$runnm" in
5829 true)
5830 : get list of predefined functions in a handy place
5831 echo " "
5832 case "$libc" in
5833 '') libc=unknown
5834         case "$libs" in
5835         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5836         esac
5837         ;;
5838 esac
5839 libnames='';
5840 case "$libs" in
5841 '') ;;
5842 *)  for thislib in $libs; do
5843         case "$thislib" in
5844         -lc|-lc_s)
5845                 : Handle C library specially below.
5846                 ;;
5847         -l*)
5848                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5849                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5850                         :
5851                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5852                         :
5853                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5854                         :
5855                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5856                         :
5857                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5858                         :
5859                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5860                         :
5861                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5862                         :
5863                 else
5864                         try=''
5865                 fi
5866                 libnames="$libnames $try"
5867                 ;;
5868         *) libnames="$libnames $thislib" ;;
5869         esac
5870         done
5871         ;;
5872 esac
5873 xxx=normal
5874 case "$libc" in
5875 unknown)
5876         set /lib/libc.$so
5877         for xxx in $libpth; do
5878                 $test -r $1 || set $xxx/libc.$so
5879                 : The messy sed command sorts on library version numbers.
5880                 $test -r $1 || \
5881                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5882                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5883                                 h
5884                                 s/[0-9][0-9]*/0000&/g
5885                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5886                                 G
5887                                 s/\n/ /' | \
5888                          sort | $sed -e 's/^.* //'`
5889                 eval set \$$#
5890         done
5891         $test -r $1 || set /usr/ccs/lib/libc.$so
5892         $test -r $1 || set /lib/libsys_s$_a
5893         ;;
5894 *)
5895         set blurfl
5896         ;;
5897 esac
5898 if $test -r "$1"; then
5899         echo "Your (shared) C library seems to be in $1."
5900         libc="$1"
5901 elif $test -r /lib/libc && $test -r /lib/clib; then
5902         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5903         xxx=apollo
5904         libc='/lib/clib /lib/libc'
5905         if $test -r /lib/syslib; then
5906                 echo "(Your math library is in /lib/syslib.)"
5907                 libc="$libc /lib/syslib"
5908         fi
5909 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5910         echo "Your C library seems to be in $libc, as you said before."
5911 elif $test -r $incpath/usr/lib/libc$_a; then
5912         libc=$incpath/usr/lib/libc$_a;
5913         echo "Your C library seems to be in $libc.  That's fine."
5914 elif $test -r /lib/libc$_a; then
5915         libc=/lib/libc$_a;
5916         echo "Your C library seems to be in $libc.  You're normal."
5917 else
5918         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5919                 :
5920         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5921                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5922         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5923                 :
5924         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5925                 :
5926         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5927                 :
5928         else
5929                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5930         fi
5931         if $test -r "$tans"; then
5932                 echo "Your C library seems to be in $tans, of all places."
5933                 libc=$tans
5934         else
5935                 libc='blurfl'
5936         fi
5937 fi
5938 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5939         dflt="$libc"
5940         cat <<EOM
5941
5942 If the guess above is wrong (which it might be if you're using a strange
5943 compiler, or your machine supports multiple models), you can override it here.
5944
5945 EOM
5946 else
5947         dflt=''
5948         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5949         cat >&4 <<EOM
5950 I can't seem to find your C library.  I've looked in the following places:
5951
5952 EOM
5953         $sed 's/^/      /' libpath
5954         cat <<EOM
5955
5956 None of these seems to contain your C library. I need to get its name...
5957
5958 EOM
5959 fi
5960 fn=f
5961 rp='Where is your C library?'
5962 . ./getfile
5963 libc="$ans"
5964
5965 echo " "
5966 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5967 set X `cat libnames`
5968 shift
5969 xxx=files
5970 case $# in 1) xxx=file; esac
5971 echo "Extracting names from the following $xxx for later perusal:" >&4
5972 echo " "
5973 $sed 's/^/      /' libnames >&4
5974 echo " "
5975 $echo $n "This may take a while...$c" >&4
5976
5977 for file in $*; do
5978         case $file in
5979         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5980         *) $nm $nm_opt $file 2>/dev/null;;
5981         esac
5982 done >libc.tmp
5983
5984 $echo $n ".$c"
5985 $grep fprintf libc.tmp > libc.ptf
5986 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5987 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5988 xxx='[ADTSIW]'
5989 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5990         eval $xscan;\
5991         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5992                 eval $xrun
5993 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5994         eval $xscan;\
5995         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5996                 eval $xrun
5997 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5998         eval $xscan;\
5999         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6000                 eval $xrun
6001 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
6002         eval $xscan;\
6003         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6004                 eval $xrun
6005 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
6006         eval $xscan;\
6007         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6008                 eval $xrun
6009 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
6010         eval $xscan;\
6011         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6012                 eval $xrun
6013 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
6014                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
6015         eval $xscan;\
6016         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6017                 eval $xrun
6018 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
6019         eval $xscan;\
6020         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6021                 eval $xrun
6022 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
6023         eval $xscan;\
6024         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6025                 eval $xrun
6026 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
6027         eval $xscan;\
6028         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6029                 eval $xrun
6030 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
6031         eval $xscan;\
6032         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6033                 eval $xrun
6034 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
6035         eval $xscan;\
6036         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6037                 eval $xrun
6038 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
6039         eval $xscan;\
6040         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6041                 eval $xrun
6042 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
6043         eval $xscan;\
6044         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6045                 eval $xrun
6046 else
6047         $nm -p $* 2>/dev/null >libc.tmp
6048         $grep fprintf libc.tmp > libc.ptf
6049         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
6050                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
6051         then
6052                 nm_opt='-p'
6053                 eval $xrun
6054         else
6055                 echo " "
6056                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
6057                 com=''
6058                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
6059                         for thisname in $libnames $libc; do
6060                                 $ar t $thisname >>libc.tmp
6061                         done
6062                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
6063                         echo "Ok." >&4
6064                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
6065                         # Repeat libc to extract forwarders to DLL entries too
6066                         for thisname in $libnames $libc; do
6067                                 $ar tv $thisname >>libc.tmp
6068                                 # Revision 50 of EMX has bug in $ar.
6069                                 # it will not extract forwarders to DLL entries
6070                                 # Use emximp which will extract exactly them.
6071                                 emximp -o tmp.imp $thisname \
6072                                     2>/dev/null && \
6073                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
6074                                     < tmp.imp >>libc.tmp
6075                                 $rm tmp.imp
6076                         done
6077                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
6078                         echo "Ok." >&4
6079                 else
6080                         echo "$ar didn't seem to work right." >&4
6081                         echo "Maybe this is a Cray...trying bld instead..." >&4
6082                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
6083                         then
6084                                 for thisname in $libnames; do
6085                                         bld t $libnames | \
6086                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
6087                                         $ar t $thisname >>libc.tmp
6088                                 done
6089                                 echo "Ok." >&4
6090                         else
6091                                 echo "That didn't work either.  Giving up." >&4
6092                                 exit 1
6093                         fi
6094                 fi
6095         fi
6096 fi
6097 nm_extract="$com"
6098 if $test -f /lib/syscalls.exp; then
6099         echo " "
6100         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
6101         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
6102 fi
6103 ;;
6104 esac
6105 $rm -f libnames libpath
6106
6107 : see if dld is available
6108 set dld.h i_dld
6109 eval $inhdr
6110
6111 : is a C symbol defined?
6112 csym='tlook=$1;
6113 case "$3" in
6114 -v) tf=libc.tmp; tc=""; tdc="";;
6115 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
6116 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
6117 esac;
6118 tx=yes;
6119 case "$reuseval-$4" in
6120 true-) ;;
6121 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
6122 esac;
6123 case "$tx" in
6124 yes)
6125         case "$runnm" in
6126         true)
6127                 if $contains $tlook $tf >/dev/null 2>&1;
6128                 then tval=true;
6129                 else tval=false;
6130                 fi;;
6131         *)
6132                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
6133                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
6134                 then tval=true;
6135                 else tval=false;
6136                 fi;
6137                 $rm -f t t.c;;
6138         esac;;
6139 *)
6140         case "$tval" in
6141         $define) tval=true;;
6142         *) tval=false;;
6143         esac;;
6144 esac;
6145 eval "$2=$tval"'
6146
6147 : define an is-in-libc? function
6148 inlibc='echo " "; td=$define; tu=$undef;
6149 sym=$1; var=$2; eval "was=\$$2";
6150 tx=yes;
6151 case "$reuseval$was" in
6152 true) ;;
6153 true*) tx=no;;
6154 esac;
6155 case "$tx" in
6156 yes)
6157         set $sym tres -f;
6158         eval $csym;
6159         case "$tres" in
6160         true)
6161                 echo "$sym() found." >&4;
6162                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
6163         *)
6164                 echo "$sym() NOT found." >&4;
6165                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
6166         esac;;
6167 *)
6168         case "$was" in
6169         $define) echo "$sym() found." >&4;;
6170         *) echo "$sym() NOT found." >&4;;
6171         esac;;
6172 esac'
6173
6174 : see if dlopen exists
6175 xxx_runnm="$runnm"
6176 runnm=false
6177 set dlopen d_dlopen
6178 eval $inlibc
6179 runnm="$xxx_runnm"
6180
6181 : determine which dynamic loading, if any, to compile in
6182 echo " "
6183 dldir="ext/DynaLoader"
6184 case "$usedl" in
6185 $define|y|true)
6186         dflt='y'
6187         usedl="$define"
6188         ;;
6189 $undef|n|false)
6190         dflt='n'
6191         usedl="$undef"
6192         ;;
6193 *) 
6194         dflt='n'
6195         case "$d_dlopen" in
6196             $define) dflt='y' ;;
6197         esac
6198         case "$i_dld" in
6199             $define) dflt='y' ;;
6200         esac
6201         : Does a dl_xxx.xs file exist for this operating system
6202         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6203         ;;
6204 esac
6205 rp="Do you wish to use dynamic loading?"
6206 . ./myread
6207 usedl="$ans"
6208 case "$ans" in
6209 y*) usedl="$define"
6210         case "$dlsrc" in
6211         '')
6212                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6213                         dflt="$dldir/dl_${osname}.xs"
6214                 elif $test "$d_dlopen" = "$define" ; then
6215                         dflt="$dldir/dl_dlopen.xs"
6216                 elif $test "$i_dld" = "$define" ; then
6217                         dflt="$dldir/dl_dld.xs"
6218                 else
6219                         dflt=''
6220                 fi
6221                 ;;
6222         *)      dflt="$dldir/$dlsrc"
6223                 ;;
6224         esac
6225     echo "The following dynamic loading files are available:"
6226         : Can not go over to $dldir because getfile has path hard-coded in.
6227         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6228         rp="Source file to use for dynamic loading"
6229         fn="fne"
6230         gfpth="$src"
6231         . ./getfile
6232         usedl="$define"
6233         : emulate basename
6234         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6235
6236         $cat << EOM
6237
6238 Some systems may require passing special flags to $cc -c to
6239 compile modules that will be used to create a shared library.
6240 To use no flags, say "none".
6241
6242 EOM
6243     case "$cccdlflags" in
6244     '') case "$gccversion" in
6245                 '') case "$osname" in
6246                         hpux)   dflt='+z' ;;
6247                         next)   dflt='none' ;;
6248                         irix*)  dflt='-KPIC' ;;
6249                         svr4*|esix*|solaris) dflt='-KPIC' ;;
6250                         sunos)  dflt='-pic' ;;
6251                         *)      dflt='none' ;;
6252                     esac
6253                         ;;
6254                 *)  case "$osname" in
6255                         svr4*|esix*|solaris) dflt='-fPIC' ;;
6256                         *)      dflt='-fpic' ;;
6257                     esac ;;
6258             esac ;;
6259         ' ') dflt='none' ;;
6260     *)  dflt="$cccdlflags" ;;
6261     esac
6262     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6263     . ./myread
6264     case "$ans" in
6265     none) cccdlflags=' ' ;;
6266     *) cccdlflags="$ans" ;;
6267     esac
6268
6269     cat << EOM
6270
6271 Some systems use ld to create libraries that can be dynamically loaded,
6272 while other systems (such as those using ELF) use $cc.
6273
6274 EOM
6275         case "$ld" in
6276         '')     $cat >try.c <<'EOM'
6277 /* Test for whether ELF binaries are produced */
6278 #include <fcntl.h>
6279 #include <stdlib.h>
6280 int main() {
6281         char b[4];
6282         int i = open("a.out",O_RDONLY);
6283         if(i == -1) 
6284                 exit(1); /* fail */
6285         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6286                 exit(0); /* succeed (yes, it's ELF) */
6287         else
6288                 exit(1); /* fail */
6289 }
6290 EOM
6291                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6292                         cat <<EOM
6293 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6294 EOM
6295                         dflt="$cc"
6296                 else
6297                         echo "I'll use ld to build dynamic libraries."
6298                         dflt='ld'
6299                 fi
6300                 rm -f try.c a.out
6301                 ;;
6302         *)      dflt="$ld"
6303                 ;;
6304         esac
6305
6306     rp="What command should be used to create dynamic libraries?"
6307     . ./myread
6308         ld="$ans"
6309
6310     cat << EOM
6311
6312 Some systems may require passing special flags to $ld to create a
6313 library that can be dynamically loaded.  If your ld flags include
6314 -L/other/path options to locate libraries outside your loader's normal
6315 search path, you may need to specify those -L options here as well.  To
6316 use no flags, say "none".
6317
6318 EOM
6319     case "$lddlflags" in
6320     '') case "$osname" in
6321                         beos) dflt='-nostart' ;;
6322                         hpux) dflt='-b';
6323                               case "$gccversion" in
6324                               '') dflt="$dflt +vnocompatwarnings" ;;
6325                               esac
6326                               ;;        
6327                         linux|irix*)    dflt='-shared' ;;
6328                         next)  dflt='none' ;;
6329                         solaris) dflt='-G' ;;
6330                         sunos) dflt='-assert nodefinitions' ;;
6331                         svr4*|esix*) dflt="-G $ldflags" ;;
6332                 *)     dflt='none' ;;
6333                         esac
6334                         ;;
6335     *) dflt="$lddlflags" ;;
6336     esac
6337
6338         : Try to guess additional flags to pick up local libraries.
6339         : Be careful not to append to a plain 'none'
6340         case "$dflt" in
6341         none) dflt='' ;;
6342         esac
6343         for thisflag in $ldflags; do
6344                 case "$thisflag" in
6345                 -L*)
6346                         case " $dflt " in
6347                         *" $thisflag "*) ;;
6348                         *) dflt="$dflt $thisflag" ;;
6349                         esac
6350                         ;;
6351                 esac
6352         done
6353
6354         case "$dflt" in
6355         ''|' ') dflt='none' ;;
6356         esac
6357
6358     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6359     . ./myread
6360     case "$ans" in
6361     none) lddlflags=' ' ;;
6362     *) lddlflags="$ans" ;;
6363     esac
6364
6365         cat <<EOM
6366
6367 Some systems may require passing special flags to $cc to indicate that
6368 the resulting executable will use dynamic linking.  To use no flags,
6369 say "none".
6370
6371 EOM
6372     case "$ccdlflags" in
6373     '') case "$osname" in
6374                 hpux)   dflt='-Wl,-E' ;;
6375                 linux)  dflt='-rdynamic' ;;
6376                 next)   dflt='none' ;;
6377                 sunos)  dflt='none' ;;
6378                 *)      dflt='none' ;;
6379             esac ;;
6380     ' ')  dflt='none' ;;
6381     *)  dflt="$ccdlflags" ;;
6382     esac
6383     rp="Any special flags to pass to $cc to use dynamic linking?"
6384     . ./myread
6385     case "$ans" in
6386     none) ccdlflags=' ' ;;
6387     *) ccdlflags="$ans" ;;
6388     esac
6389     ;;
6390 *)  usedl="$undef"
6391         ld='ld'
6392     dlsrc='dl_none.xs'
6393     lddlflags=''
6394     ccdlflags=''
6395     ;;
6396 esac
6397
6398 also=''
6399 case "$usedl" in
6400 $undef)
6401         # No dynamic loading being used, so don't bother even to prompt.
6402         useshrplib='false'
6403         ;;
6404 *)      case "$useshrplib" in
6405         '')     case "$osname" in
6406                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6407                         dflt=y
6408                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6409                         ;;
6410                 next*)
6411                         case "$osvers" in
6412                         4*)     dflt=y
6413                                 also='Building a shared libperl is needed for MAB support.'
6414                                 ;;
6415                         *)      dflt=n
6416                                 ;;
6417                         esac
6418                         ;;
6419                 *)      dflt=n
6420                         ;;
6421                 esac
6422                 ;;
6423         $define|true|[Yy]*)
6424                 dflt=y
6425                 ;;
6426         *)      dflt=n
6427                 ;;
6428         esac
6429         $cat << EOM
6430
6431 The perl executable is normally obtained by linking perlmain.c with
6432 libperl${_a}, any static extensions (usually just DynaLoader), and
6433 any other libraries needed on this system (such as -lm, etc.).  Since
6434 your system supports dynamic loading, it is probably possible to build
6435 a shared libperl.$so.  If you will have more than one executable linked
6436 to libperl.$so, this will significantly reduce the size of each
6437 executable, but it may have a noticeable affect on performance.  The
6438 default is probably sensible for your system.
6439 $also
6440
6441 EOM
6442         rp="Build a shared libperl.$so (y/n)"
6443         . ./myread
6444         case "$ans" in
6445         true|$define|[Yy]*)
6446                 useshrplib='true'  ;;
6447         *)      useshrplib='false' ;;
6448         esac
6449         ;;
6450 esac
6451
6452 case "$useshrplib" in
6453 true)
6454         case "$libperl" in
6455         '')
6456                 # Figure out a good name for libperl.so.  Since it gets stored in
6457                 # a version-specific architecture-dependent library, the version
6458                 # number isn't really that important, except for making cc/ld happy.
6459                 #
6460                 # A name such as libperl.so.3.1
6461                 majmin="libperl.$so.$patchlevel.$subversion"
6462                 # A name such as libperl.so.301
6463                 majonly=`echo $patchlevel $subversion |
6464                         $awk '{printf "%d%02d", $1, $2}'`
6465                 majonly=libperl.$so.$majonly
6466                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6467                 # rely on figuring it out from the naming of libc.
6468                 case "${osname}${osvers}" in
6469                 next4*)
6470                         dflt=libperl.5.$so
6471                         # XXX How handle the --version stuff for MAB?
6472                         ;;
6473                 linux*)  # ld won't link with a bare -lperl otherwise.
6474                         dflt=libperl.$so
6475                         ;;
6476                 cygwin*) # include version
6477                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6478                         ;;
6479                 *)      # Try to guess based on whether libc has major.minor.
6480                         case "$libc" in
6481                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6482                         *libc.$so.[0-9]*) dflt=$majonly ;;
6483                         *)      dflt=libperl.$so ;;
6484                         esac
6485                         ;;
6486                 esac
6487                 ;;
6488         *)      dflt=$libperl
6489                 ;;
6490         esac
6491         cat << EOM
6492
6493 I need to select a good name for the shared libperl.  If your system uses
6494 library names with major and minor numbers, then you might want something
6495 like $majmin.  Alternatively, if your system uses a single version
6496 number for shared libraries, then you might want to use $majonly.
6497 Or, your system might be quite happy with a simple libperl.$so.
6498
6499 Since the shared libperl will get installed into a version-specific
6500 architecture-dependent directory, the version number of the shared perl
6501 library probably isn't important, so the default should be o.k.
6502
6503 EOM
6504         rp='What name do you want to give to the shared libperl?'
6505         . ./myread
6506         libperl=$ans
6507         echo "Ok, I'll use $libperl"
6508         ;;
6509 *)
6510         libperl="libperl${_a}"
6511         ;;
6512 esac
6513
6514 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6515 case "$shrpdir" in
6516 '') ;;
6517 *)      $cat >&4 <<EOM
6518 WARNING:  Use of the shrpdir variable for the installation location of
6519 the shared $libperl is not supported.  It was never documented and
6520 will not work in this version.  Let me (perlbug@perl.com)
6521 know of any problems this may cause.
6522
6523 EOM
6524         case "$shrpdir" in
6525         "$archlibexp/CORE")
6526                 $cat >&4 <<EOM
6527 But your current setting of $shrpdir is
6528 the default anyway, so it's harmless.
6529 EOM
6530                 ;;
6531         *)
6532                 $cat >&4 <<EOM
6533 Further, your current attempted setting of $shrpdir
6534 conflicts with the value of $archlibexp/CORE
6535 that installperl will use.
6536 EOM
6537                 ;;
6538         esac
6539         ;;
6540 esac
6541
6542 # How will the perl executable find the installed shared $libperl?
6543 # Add $xxx to ccdlflags.
6544 # If we can't figure out a command-line option, use $shrpenv to
6545 # set env LD_RUN_PATH.  The main perl makefile uses this.
6546 shrpdir=$archlibexp/CORE
6547 xxx=''
6548 tmp_shrpenv=''
6549 if "$useshrplib"; then
6550     case "$osname" in 
6551         aix)
6552                 # We'll set it in Makefile.SH...
6553                 ;;
6554         solaris|netbsd)
6555                 xxx="-R $shrpdir"
6556                 ;;
6557         freebsd)
6558                 xxx="-Wl,-R$shrpdir"
6559                 ;;
6560         linux|irix*|dec_osf)
6561                 xxx="-Wl,-rpath,$shrpdir"
6562                 ;;
6563         next)
6564                 # next doesn't like the default...
6565                 ;;
6566         beos)
6567                 # beos doesn't like the default, either.
6568                 ;;
6569         hpux*)
6570                 # hpux doesn't like the default, either.
6571                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6572                 ;;
6573         *)
6574                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6575                 ;;
6576         esac
6577         case "$xxx" in
6578         '') ;;
6579         *)      
6580                 # Only add $xxx if it isn't already in ccdlflags.
6581                 case " $ccdlflags " in
6582                 *" $xxx "*)     ;;
6583                 *)      ccdlflags="$ccdlflags $xxx"
6584                         cat <<EOM >&4
6585
6586 Adding $xxx to the flags
6587 passed to $ld so that the perl executable will find the 
6588 installed shared $libperl.
6589
6590 EOM
6591                         ;;
6592                 esac
6593                 ;;
6594         esac
6595 fi
6596 # Fix ccdlflags in AIX for building external extensions.
6597 # (For building Perl itself bare -bE:perl.exp is needed,
6598 #  Makefile.SH takes care of this.)
6599 case "$osname" in
6600 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6601 esac
6602 # Respect a hint or command-line value.
6603 case "$shrpenv" in
6604 '') shrpenv="$tmp_shrpenv" ;;
6605 esac
6606 case "$ldlibpthname" in
6607 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6608 none)   ldlibpthname='' ;;
6609 esac
6610
6611 : determine where manual pages go
6612 set man1dir man1dir none
6613 eval $prefixit
6614 $cat <<EOM
6615
6616 $spackage has manual pages available in source form.
6617 EOM
6618 case "$nroff" in
6619 nroff)
6620         echo "However, you don't have nroff, so they're probably useless to you."
6621         case "$man1dir" in
6622         '') man1dir="none";;
6623         esac;;
6624 esac
6625 echo "If you don't want the manual sources installed, answer 'none'."
6626 case "$man1dir" in
6627 ' ') dflt=none
6628         ;;
6629 '')
6630         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6631         lookpath="$lookpath $prefixexp/man/p_man/man1"
6632         lookpath="$lookpath $prefixexp/man/u_man/man1"
6633         lookpath="$lookpath $prefixexp/man/man.1"
6634         case "$sysman" in
6635         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6636         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6637         esac
6638         set dflt
6639         eval $prefixup
6640         ;;
6641 *)  dflt="$man1dir"
6642         ;;
6643 esac
6644 echo " "
6645 fn=dn+~
6646 rp="Where do the main $spackage manual pages (source) go?"
6647 . ./getfile
6648 if $test "X$man1direxp" != "X$ansexp"; then
6649         installman1dir=''
6650 fi
6651 man1dir="$ans"
6652 man1direxp="$ansexp"
6653 case "$man1dir" in
6654 '')     man1dir=' '
6655         installman1dir='';;
6656 esac
6657
6658 : Change installation prefix, if necessary.
6659 if $test X"$prefix" != X"$installprefix"; then
6660         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6661 else
6662         installman1dir="$man1direxp"
6663 fi
6664
6665 : What suffix to use on installed man pages
6666
6667 case "$man1dir" in
6668 ' ')
6669         man1ext='0'
6670         ;;
6671 *)
6672         rp="What suffix should be used for the main $spackage man pages?"
6673         case "$man1ext" in
6674         '')     case "$man1dir" in
6675                 *1)  dflt=1 ;;
6676                 *1p) dflt=1p ;;
6677                 *1pm) dflt=1pm ;;
6678                 *l) dflt=l;;
6679                 *n) dflt=n;;
6680                 *o) dflt=o;;
6681                 *p) dflt=p;;
6682                 *C) dflt=C;;
6683                 *L) dflt=L;;
6684                 *L1) dflt=L1;;
6685                 *) dflt=1;;
6686                 esac
6687                 ;;
6688         *)      dflt="$man1ext";;
6689         esac
6690         . ./myread
6691         man1ext="$ans"
6692         ;;
6693 esac
6694
6695 : see if we can have long filenames
6696 echo " "
6697 first=123456789abcdef
6698 $rm -f $first
6699 if (echo hi >$first) 2>/dev/null; then
6700         if $test -f 123456789abcde; then
6701                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6702                 val="$undef"
6703         else
6704                 echo 'You can have filenames longer than 14 characters.'>&4
6705                 val="$define"
6706         fi
6707 else
6708         $cat <<'EOM'
6709 You can't have filenames longer than 14 chars.
6710 You can't even think about them!
6711 EOM
6712         val="$undef"
6713 fi 
6714 set d_flexfnam
6715 eval $setvar
6716 $rm -rf 123456789abcde*
6717
6718 : determine where library module manual pages go
6719 set man3dir man3dir none
6720 eval $prefixit
6721 $cat <<EOM
6722
6723 $spackage has manual pages for many of the library modules.
6724 EOM
6725
6726 case "$nroff" in
6727 nroff)
6728         $cat <<'EOM'
6729 However, you don't have nroff, so they're probably useless to you.
6730 EOM
6731         case "$man3dir" in
6732         '') man3dir="none";;
6733         esac;;
6734 esac
6735
6736 case "$d_flexfnam" in
6737 undef)
6738         $cat <<'EOM'
6739 However, your system can't handle the long file names like File::Basename.3. 
6740 EOM
6741         case "$man3dir" in
6742         '') man3dir="none";;
6743         esac;;
6744 esac
6745
6746 echo "If you don't want the manual sources installed, answer 'none'."
6747 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6748 case "$man3dir" in
6749 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6750         if $test -d "$privlib/man/man3"; then
6751                 cat <<EOM >&4
6752
6753 WARNING:  Previous versions of perl installed man3 pages into
6754 $privlib/man/man3.  This version will suggest a 
6755 new default of $dflt.  
6756 EOM
6757                 tdflt=$dflt
6758                 dflt='n'
6759                 rp='Do you wish to preserve the old behavior?(y/n)'
6760                 . ./myread
6761                 case "$ans" in
6762                 y*) dflt="$privlib/man/man3" ;;
6763                 *)  dflt=$tdflt ;;
6764                 esac
6765     fi
6766         ;;
6767 *)      dflt="$man3dir" ;;
6768 esac
6769 case "$dflt" in
6770 ' ') dflt=none ;;
6771 esac
6772 echo " "
6773 fn=dn+~
6774 rp="Where do the $package library man pages (source) go?"
6775 . ./getfile
6776 man3dir="$ans"
6777 man3direxp="$ansexp"
6778 case "$man3dir" in
6779 '')     man3dir=' '
6780         installman3dir='';;
6781 esac
6782
6783 : Change installation prefix, if necessary.
6784 if $test X"$prefix" != X"$installprefix"; then
6785         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6786 else
6787         installman3dir="$man3direxp"
6788 fi
6789
6790 : What suffix to use on installed man pages
6791 case "$man3dir" in
6792 ' ')
6793         man3ext='0'
6794         ;;
6795 *)
6796         rp="What suffix should be used for the $package library man pages?"
6797         case "$man3ext" in
6798         '')     case "$man3dir" in
6799                 *3)  dflt=3 ;;
6800                 *3p) dflt=3p ;;
6801                 *3pm) dflt=3pm ;;
6802                 *l) dflt=l;;
6803                 *n) dflt=n;;
6804                 *o) dflt=o;;
6805                 *p) dflt=p;;
6806                 *C) dflt=C;;
6807                 *L) dflt=L;;
6808                 *L3) dflt=L3;;
6809                 *) dflt=3;;
6810                 esac
6811                 ;;
6812         *)      dflt="$man3ext";;
6813         esac
6814         . ./myread
6815         man3ext="$ans"
6816         ;;
6817 esac
6818
6819 : see if we have to deal with yellow pages, now NIS.
6820 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6821         if $test -f /usr/etc/nibindd; then
6822                 echo " "
6823                 echo "I'm fairly confident you're on a NeXT."
6824                 echo " "
6825                 rp='Do you get the hosts file via NetInfo?'
6826                 dflt=y
6827                 case "$hostcat" in
6828                 nidump*) ;;
6829                 '') ;;
6830                 *) dflt=n;;
6831                 esac
6832                 . ./myread
6833                 case "$ans" in
6834                 y*) hostcat='nidump hosts .';;
6835                 *)      case "$hostcat" in
6836                         nidump*) hostcat='';;
6837                         esac
6838                         ;;
6839                 esac
6840         fi
6841         case "$hostcat" in
6842         nidump*) ;;
6843         *)
6844                 case "$hostcat" in
6845                 *ypcat*) dflt=y;;
6846                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6847                                 dflt=y
6848                         else
6849                                 dflt=n
6850                         fi;;
6851                 *) dflt=n;;
6852                 esac
6853                 echo " "
6854                 rp='Are you getting the hosts file via yellow pages?'
6855                 . ./myread
6856                 case "$ans" in
6857                 y*) hostcat='ypcat hosts';;
6858                 *) hostcat='cat /etc/hosts';;
6859                 esac
6860                 ;;
6861         esac
6862 fi
6863 case "$hostcat" in
6864 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6865 esac
6866 case "$groupcat" in
6867 '') test -f /etc/group && groupcat='cat /etc/group';;
6868 esac
6869 case "$passcat" in
6870 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6871 esac
6872
6873 : now get the host name
6874 echo " "
6875 echo "Figuring out host name..." >&4
6876 case "$myhostname" in
6877 '') cont=true
6878         echo 'Maybe "hostname" will work...'
6879         if tans=`sh -c hostname 2>&1` ; then
6880                 myhostname=$tans
6881                 phostname=hostname
6882                 cont=''
6883         fi
6884         ;;
6885 *) cont='';;
6886 esac
6887 if $test "$cont"; then
6888         if ./xenix; then
6889                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
6890                 if tans=`cat /etc/systemid 2>&1` ; then
6891                         myhostname=$tans
6892                         phostname='cat /etc/systemid'
6893                         echo "Whadyaknow.  Xenix always was a bit strange..."
6894                         cont=''
6895                 fi
6896         elif $test -r /etc/systemid; then
6897                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6898         fi
6899 fi
6900 if $test "$cont"; then
6901         echo 'No, maybe "uuname -l" will work...'
6902         if tans=`sh -c 'uuname -l' 2>&1` ; then
6903                 myhostname=$tans
6904                 phostname='uuname -l'
6905         else
6906                 echo 'Strange.  Maybe "uname -n" will work...'
6907                 if tans=`sh -c 'uname -n' 2>&1` ; then
6908                         myhostname=$tans
6909                         phostname='uname -n'
6910                 else
6911                         echo 'Oh well, maybe I can mine it out of whoami.h...'
6912                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6913                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6914                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6915                         else
6916                                 case "$myhostname" in
6917                                 '') echo "Does this machine have an identity crisis or something?"
6918                                         phostname='';;
6919                                 *)
6920                                         echo "Well, you said $myhostname before..."
6921                                         phostname='echo $myhostname';;
6922                                 esac
6923                         fi
6924                 fi
6925         fi
6926 fi
6927 : you do not want to know about this
6928 set $myhostname
6929 myhostname=$1
6930
6931 : verify guess
6932 if $test "$myhostname" ; then
6933         dflt=y
6934         rp='Your host name appears to be "'$myhostname'".'" Right?"
6935         . ./myread
6936         case "$ans" in
6937         y*) ;;
6938         *) myhostname='';;
6939         esac
6940 fi
6941
6942 : bad guess or no guess
6943 while $test "X$myhostname" = X ; do
6944         dflt=''
6945         rp="Please type the (one word) name of your host:"
6946         . ./myread
6947         myhostname="$ans"
6948 done
6949
6950 : translate upper to lower if necessary
6951 case "$myhostname" in
6952 *[A-Z]*)
6953         echo "(Normalizing case in your host name)"
6954         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6955         ;;
6956 esac
6957
6958 case "$myhostname" in
6959 *.*)
6960         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6961         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6962         echo "(Trimming domain name from host name--host name is now $myhostname)"
6963         ;;
6964 *) case "$mydomain" in
6965         '')
6966                 {
6967                         test "X$hostcat" = "Xypcat hosts" &&
6968                         ypmatch "$myhostname" hosts 2>/dev/null |\
6969                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
6970                         $test -s hosts
6971                 } || {
6972                         test "X$hostcat" != "X" &&
6973                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
6974                                         /[       ]$myhostname[  . ]/p" > hosts
6975                 }
6976                 tmp_re="[       . ]"
6977                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
6978                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
6979                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6980                         hosts | $sort | $uniq | \
6981                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6982                 case `$echo X$dflt` in
6983                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
6984                         dflt=.
6985                         ;;
6986                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6987                         ;;
6988                 esac
6989                 case "$dflt" in
6990                 .)
6991                         tans=`./loc resolv.conf X /etc /usr/etc`
6992                         if $test -f "$tans"; then
6993                                 echo "(Attempting domain name extraction from $tans)"
6994                                 dflt=.`$sed -n -e 's/   / /g' \
6995                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
6996                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6997                                 case "$dflt" in
6998                                 .) dflt=.`$sed -n -e 's/        / /g' \
6999                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7000                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7001                                         ;;
7002                                 esac
7003                         fi
7004                         ;;
7005                 esac
7006                 case "$dflt" in
7007                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7008                         dflt=.`sh -c domainname 2>/dev/null`
7009                         case "$dflt" in
7010                         '') dflt='.';;
7011                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7012                         esac
7013                         ;;
7014                 esac
7015                 case "$dflt" in
7016                 .) echo "(Lost all hope -- silly guess then)"
7017                         dflt='.uucp'
7018                         ;;
7019                 esac
7020                 $rm -f hosts
7021                 ;;
7022         *) dflt="$mydomain";;
7023         esac;;
7024 esac
7025 echo " "
7026 rp="What is your domain name?"
7027 . ./myread
7028 tans="$ans"
7029 case "$ans" in
7030 '') ;;
7031 .*) ;;
7032 *) tans=".$tans";;
7033 esac
7034 mydomain="$tans"
7035
7036 : translate upper to lower if necessary
7037 case "$mydomain" in
7038 *[A-Z]*)
7039         echo "(Normalizing case in your domain name)"
7040         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7041         ;;
7042 esac
7043
7044 : a little sanity check here
7045 case "$phostname" in
7046 '') ;;
7047 *)
7048         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7049         $myhostname$mydomain|$myhostname) ;;
7050         *)
7051                 case "$phostname" in
7052                 sed*)
7053                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7054                         ;;
7055                 *)
7056                         echo "(That doesn't agree with your $phostname command, by the way.)"
7057                         ;;
7058                 esac
7059         ;;
7060         esac
7061         ;;
7062 esac
7063
7064 $cat <<EOM
7065
7066 I need to get your e-mail address in Internet format if possible, i.e.
7067 something like user@host.domain. Please answer accurately since I have
7068 no easy means to double check it. The default value provided below
7069 is most probably close to reality but may not be valid from outside
7070 your organization...
7071
7072 EOM
7073 cont=x
7074 while test "$cont"; do
7075         case "$cf_email" in
7076         '') dflt="$cf_by@$myhostname$mydomain";;
7077         *) dflt="$cf_email";;
7078         esac
7079         rp='What is your e-mail address?'
7080         . ./myread
7081         cf_email="$ans"
7082         case "$cf_email" in
7083         *@*.*) cont='' ;;
7084         *)
7085                 rp='Address does not look like an Internet one.  Use it anyway?'
7086                 case "$fastread" in
7087                 yes) dflt=y ;;
7088                 *) dflt=n ;;
7089                 esac
7090                 . ./myread
7091                 case "$ans" in
7092                 y*) cont='' ;;
7093                 *) echo " " ;;
7094                 esac
7095                 ;;
7096         esac
7097 done
7098
7099 $cat <<EOM
7100
7101 If you or somebody else will be maintaining perl at your site, please
7102 fill in the correct e-mail address here so that they may be contacted
7103 if necessary. Currently, the "perlbug" program included with perl
7104 will send mail to this address in addition to perlbug@perl.com. You may
7105 enter "none" for no administrator.
7106
7107 EOM
7108 case "$perladmin" in
7109 '') dflt="$cf_email";;
7110 *) dflt="$perladmin";;
7111 esac
7112 rp='Perl administrator e-mail address'
7113 . ./myread
7114 perladmin="$ans"
7115
7116 : figure out how to guarantee perl startup
7117 case "$startperl" in
7118 '')
7119         case "$sharpbang" in
7120         *!)
7121                 $cat <<EOH
7122
7123 I can use the #! construct to start perl on your system. This will
7124 make startup of perl scripts faster, but may cause problems if you
7125 want to share those scripts and perl is not in a standard place
7126 ($binexp/perl) on all your platforms. The alternative is to force
7127 a shell by starting the script with a single ':' character.
7128
7129 EOH
7130                 dflt="$binexp/perl"
7131                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7132                 . ./myread
7133                 case "$ans" in
7134                 none)   startperl=": # use perl";;
7135                 *)      startperl="#!$ans"
7136                         if $test 30 -lt `echo "$ans" | wc -c`; then
7137                                 $cat >&4 <<EOM
7138
7139 WARNING:  Some systems limit the #! command to 32 characters.
7140 If you experience difficulty running Perl scripts with #!, try
7141 installing Perl in a directory with a shorter pathname.
7142
7143 EOM
7144                         fi ;;
7145                 esac
7146                 ;;
7147         *) startperl=": # use perl"
7148                 ;;
7149         esac
7150         ;;
7151 esac
7152 echo "I'll use $startperl to start perl scripts."
7153
7154 : figure best path for perl in scripts
7155 case "$perlpath" in
7156 '')
7157         perlpath="$binexp/perl"
7158         case "$startperl" in
7159         *!*) ;;
7160         *)
7161                 $cat <<EOH
7162
7163 I will use the "eval 'exec'" idiom to start Perl on your system.
7164 I can use the full path of your Perl binary for this purpose, but
7165 doing so may cause problems if you want to share those scripts and
7166 Perl is not always in a standard place ($binexp/perl).
7167
7168 EOH
7169                 dflt="$binexp/perl"
7170                 rp="What path shall I use in \"eval 'exec'\"?"
7171                 . ./myread
7172                 perlpath="$ans"
7173                 ;;
7174         esac
7175         ;;
7176 esac
7177 case "$startperl" in
7178 *!*)    ;;
7179 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7180 esac
7181
7182 : determine where public executable scripts go
7183 set scriptdir scriptdir
7184 eval $prefixit
7185 case "$scriptdir" in
7186 '')
7187         dflt="$bin"
7188         : guess some guesses
7189         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7190         $test -d /usr/share/bin     && dflt=/usr/share/bin
7191         $test -d /usr/local/script  && dflt=/usr/local/script
7192         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7193         $test -d $prefixexp/script  && dflt=$prefixexp/script
7194         set dflt
7195         eval $prefixup
7196         ;;
7197 *)  dflt="$scriptdir"
7198         ;;
7199 esac
7200 $cat <<EOM
7201  
7202 Some installations have a separate directory just for executable scripts so
7203 that they can mount it across multiple architectures but keep the scripts in
7204 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7205 Or you might just lump your scripts in with all your other executables.
7206  
7207 EOM
7208 fn=d~
7209 rp='Where do you keep publicly executable scripts?'
7210 . ./getfile
7211 if $test "X$ansexp" != "X$scriptdirexp"; then
7212         installscript=''
7213 fi
7214 scriptdir="$ans"
7215 scriptdirexp="$ansexp"
7216 : Change installation prefix, if necessary.
7217 if $test X"$prefix" != X"$installprefix"; then
7218         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7219 else
7220         installscript="$scriptdirexp"
7221 fi
7222
7223 : determine where add-on public executables go
7224 case "$sitebin" in
7225 '')     dflt=$siteprefix/bin ;;
7226 *)      dflt=$sitebin ;;
7227 esac
7228 fn=d~
7229 rp='Pathname where the add-on public executables should be installed?'
7230 . ./getfile
7231 sitebin="$ans"
7232 sitebinexp="$ansexp"
7233 : Change installation prefix, if necessary.
7234 if $test X"$prefix" != X"$installprefix"; then
7235         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7236 else
7237         installsitebin="$sitebinexp"
7238 fi
7239
7240 : see if sqrtl exists
7241 set sqrtl d_sqrtl
7242 eval $inlibc
7243
7244 case "$ccflags" in
7245 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7246 esac
7247
7248 case "$uselongdouble" in
7249 $define|true|[yY]*)     dflt='y';;
7250 *) dflt='n';;
7251 esac
7252 cat <<EOM
7253
7254 Perl can be built to take advantage of long doubles which
7255 (if available) may give more accuracy and range for floating point numbers.
7256
7257 If this doesn't make any sense to you, just accept the default '$dflt'.
7258 EOM
7259 rp='Try to use long doubles if available?'
7260 . ./myread
7261 case "$ans" in
7262 y|Y)    val="$define"   ;;
7263 *)      val="$undef"    ;;
7264 esac
7265 set uselongdouble
7266 eval $setvar
7267
7268 case "$uselongdouble" in
7269 true|[yY]*) uselongdouble="$define" ;;
7270 esac
7271
7272 case "$uselongdouble" in
7273 $define)
7274 : Look for a hint-file generated 'call-back-unit'.  If the
7275 : user has specified that long doubles should be used,
7276 : we may need to set or change some other defaults.
7277         if $test -f uselongdouble.cbu; then
7278                 echo "Your platform has some specific hints for long doubles, using them..."
7279                 . ./uselongdouble.cbu
7280         else
7281                 $cat <<EOM
7282 (Your platform doesn't have any specific hints for long doubles.)
7283 EOM
7284         fi
7285         ;;
7286 esac
7287
7288 case "$uselongdouble:$d_sqrtl" in
7289 $define:$undef)
7290                 $cat <<EOM >&4
7291
7292 *** You requested the use of long doubles but you do not seem to have
7293 *** the mathematic functions for long doubles.  I'm disabling the use
7294 *** of long doubles.
7295
7296 EOM
7297         uselongdouble=$undef
7298         ;;
7299 esac
7300
7301 case "$useperlio" in
7302 $define|true|[yY]*)     dflt='y';;
7303 *) dflt='n';;
7304 esac
7305 cat <<EOM
7306
7307 Previous version of $package used the standard IO mechanisms as defined
7308 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7309 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7310 the default.  This abstraction layer can use AT&T's sfio (if you already
7311 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7312 problems with some extension modules.  Using PerlIO with stdio is safe,
7313 but it is slower than plain stdio and therefore is not the default.
7314
7315 If this doesn't make any sense to you, just accept the default '$dflt'.
7316 EOM
7317 rp='Use the experimental PerlIO abstraction layer?'
7318 . ./myread
7319 case "$ans" in
7320 y|Y) 
7321         val="$define"
7322         ;;     
7323 *)      
7324         echo "Ok, doing things the stdio way"
7325         val="$undef"
7326         ;;
7327 esac
7328 set useperlio
7329 eval $setvar 
7330
7331 case "$vendorprefix" in
7332 '')     d_vendorbin="$undef"
7333         vendorbin=''
7334         vendorbinexp=''
7335         ;;
7336 *)      d_vendorbin="$define"
7337         : determine where vendor-supplied executables go.
7338         case "$vendorbin" in
7339         '') dflt=$vendorprefix/bin ;;
7340         *)      dflt="$vendorbin" ;;
7341         esac
7342         fn=d~+
7343         rp='Pathname for the vendor-supplied executables directory?'
7344         . ./getfile
7345         vendorbin="$ans"
7346         vendorbinexp="$ansexp"
7347         ;;
7348 esac
7349 : Change installation prefix, if necessary.
7350 if $test X"$prefix" != X"$installprefix"; then
7351         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7352 else
7353         installvendorbin="$vendorbinexp"
7354 fi
7355
7356 : see if qgcvt exists
7357 set qgcvt d_qgcvt
7358 eval $inlibc
7359
7360 : check for length of double
7361 echo " "
7362 case "$doublesize" in
7363 '')
7364         echo "Checking to see how big your double precision numbers are..." >&4
7365         $cat >try.c <<'EOCP'
7366 #include <stdio.h>
7367 int main()
7368 {
7369     printf("%d\n", (int)sizeof(double));
7370     exit(0);
7371 }
7372 EOCP
7373         set try
7374         if eval $compile_ok; then
7375                 doublesize=`./try`
7376                 echo "Your double is $doublesize bytes long."
7377         else
7378                 dflt='8'
7379                 echo "(I can't seem to compile the test program.  Guessing...)"
7380                 rp="What is the size of a double precision number (in bytes)?"
7381                 . ./myread
7382                 doublesize="$ans"
7383         fi
7384         ;;
7385 esac
7386 $rm -f try.c try
7387
7388 : check for long doubles
7389 echo " "
7390 echo "Checking to see if you have long double..." >&4
7391 echo 'int main() { long double x = 7.0; }' > try.c
7392 set try
7393 if eval $compile; then
7394         val="$define"
7395         echo "You have long double."
7396 else
7397         val="$undef"
7398         echo "You do not have long double."
7399 fi
7400 $rm try.*
7401 set d_longdbl
7402 eval $setvar
7403
7404 : check for length of long double
7405 case "${d_longdbl}${longdblsize}" in
7406 $define)
7407         echo " "
7408         echo "Checking to see how big your long doubles are..." >&4
7409         $cat >try.c <<'EOCP'
7410 #include <stdio.h>
7411 int main()
7412 {
7413         printf("%d\n", sizeof(long double));
7414 }
7415 EOCP
7416         set try
7417         set try
7418         if eval $compile; then
7419                 longdblsize=`./try$exe_ext`
7420                 echo "Your long doubles are $longdblsize bytes long."
7421         else
7422                 dflt='8'
7423                 echo " "
7424                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7425                 rp="What is the size of a long double (in bytes)?"
7426                 . ./myread
7427                 longdblsize="$ans"
7428         fi
7429         if $test "X$doublesize" = "X$longdblsize"; then
7430                 echo "(That isn't any different from an ordinary double.)"
7431         fi      
7432         ;;
7433 esac
7434 $rm -f try.* try
7435
7436 echo " "
7437
7438 if $test X"$d_longdbl" = X"$define"; then
7439
7440 echo "Checking how to print long doubles..." >&4
7441
7442 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7443         $cat >try.c <<'EOCP'
7444 #include <sys/types.h>
7445 #include <stdio.h>
7446 int main() {
7447   double d = 123.456;
7448   printf("%.3f\n", d);
7449 }
7450 EOCP
7451         set try
7452         if eval $compile; then
7453                 yyy=`./try$exe_ext`
7454                 case "$yyy" in
7455                 123.456)
7456                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7457                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7458                         echo "We will use %f."
7459                         ;;
7460                 esac
7461         fi
7462 fi
7463
7464 if $test X"$sPRIfldbl" = X; then
7465         $cat >try.c <<'EOCP'
7466 #include <sys/types.h>
7467 #include <stdio.h>
7468 int main() {
7469   long double d = 123.456;
7470   printf("%.3llf\n", d);
7471 }
7472 EOCP
7473         set try
7474         if eval $compile; then
7475                 yyy=`./try$exe_ext`
7476                 case "$yyy" in
7477                 123.456)
7478                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7479                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7480                         echo "We will use %llf."
7481                         ;;
7482                 esac
7483         fi
7484 fi
7485
7486 if $test X"$sPRIfldbl" = X; then
7487         $cat >try.c <<'EOCP'
7488 #include <sys/types.h>
7489 #include <stdio.h>
7490 int main() {
7491   long double d = 123.456;
7492   printf("%.3Lf\n", d);
7493 }
7494 EOCP
7495         set try
7496         if eval $compile; then
7497                 yyy=`./try$exe_ext`
7498                 case "$yyy" in
7499                 123.456)
7500                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7501                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7502                         echo "We will use %Lf."
7503                         ;;
7504                 esac
7505         fi
7506 fi
7507
7508 if $test X"$sPRIfldbl" = X; then
7509         $cat >try.c <<'EOCP'
7510 #include <sys/types.h>
7511 #include <stdio.h>
7512 int main() {
7513   long double d = 123.456;
7514   printf("%.3lf\n", d);
7515 }
7516 EOCP
7517         set try
7518         if eval $compile; then
7519                 yyy=`./try$exe_ext`
7520                 case "$yyy" in
7521                 123.456)
7522                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7523                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7524                         echo "We will use %lf."
7525                         ;;
7526                 esac
7527         fi
7528 fi
7529
7530 if $test X"$sPRIfldbl" = X; then
7531         echo "Cannot figure out how to print long doubles." >&4
7532 fi
7533
7534 $rm -f try try.*
7535
7536 fi # d_longdbl
7537
7538 case "$sPRIfldbl" in
7539 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7540         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7541         ;;
7542 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7543         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7544         ;;
7545 esac
7546
7547 : Check how to convert floats to strings.
7548 if test "X$d_Gconvert" = X; then
7549         echo " "
7550         echo "Checking for an efficient way to convert floats to strings."
7551         echo " " > try.c
7552         case "$uselongdouble" in
7553         "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7554         esac
7555         case "$d_longdbl" in
7556         "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7557         esac
7558         case "$d_PRIgldbl" in
7559         "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7560         esac
7561         $cat >>try.c <<EOP
7562 #ifdef TRY_gconvert
7563 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7564 char *myname = "gconvert";
7565 #endif
7566 #ifdef TRY_gcvt
7567 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7568 char *myname = "gcvt";
7569 #endif
7570 #ifdef TRY_qgcvt
7571 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7572 char *myname = "qgcvt";
7573 #define DOUBLETYPE long double
7574 #endif
7575 #ifdef TRY_sprintf
7576 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7577 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7578 #else
7579 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7580 #endif
7581 char *myname = "sprintf";
7582 #endif
7583
7584 #ifndef DOUBLETYPE
7585 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7586 #define DOUBLETYPE long double
7587 #else
7588 #define DOUBLETYPE double
7589 #endif
7590 #endif
7591
7592 #include <stdio.h>
7593
7594 #define I_STDLIB $i_stdlib
7595 #ifdef I_STDLIB
7596 #include <stdlib.h>
7597 #endif
7598
7599 int
7600 checkit(expect, got)
7601 char *expect;
7602 char *got;
7603 {
7604     if (strcmp(expect, got)) {
7605                 printf("%s oddity:  Expected %s, got %s\n",
7606                         myname, expect, got);
7607                 exit(1);
7608         }
7609 }
7610
7611 int main()
7612
7613         char buf[64]; 
7614         buf[63] = '\0';
7615
7616         /* This must be 1st test on (which?) platform */
7617         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7618         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7619         checkit("0.1", buf);
7620
7621         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7622         checkit("1", buf);
7623
7624         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7625         checkit("1.1", buf);
7626
7627         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7628         checkit("1.01", buf);
7629
7630         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7631         checkit("1.001", buf);
7632
7633         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7634         checkit("1.0001", buf);
7635
7636         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7637         checkit("1.00001", buf);
7638
7639         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7640         checkit("1.000001", buf);
7641
7642         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7643         checkit("0", buf);
7644
7645         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7646         checkit("-1", buf);
7647
7648         /* Some Linux gcvt's give 1.e+5 here. */
7649         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7650         checkit("100000", buf);
7651         
7652         /* Some Linux gcvt's give -1.e+5 here. */
7653         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7654         checkit("-100000", buf);
7655
7656         exit(0);
7657 }
7658 EOP
7659         case "$d_Gconvert" in
7660         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7661         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7662         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7663         *) xxx_list='gconvert gcvt sprintf' ;;
7664         esac
7665
7666         case "$d_longdbl$uselongdouble$d_qgcvt" in
7667         "$define$define$define") xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7668         esac
7669
7670         for xxx_convert in $xxx_list; do
7671                 echo "Trying $xxx_convert..."
7672                 $rm -f try try$_o
7673                 set try -DTRY_$xxx_convert
7674                 if eval $compile; then
7675                         echo "$xxx_convert() found." >&4
7676                         if ./try; then
7677                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
7678                                 break;
7679                         else
7680                                 echo "...But $xxx_convert didn't work as I expected."
7681                         fi
7682                 else
7683                         echo "$xxx_convert NOT found." >&4
7684                 fi
7685         done
7686                 
7687         case "$xxx_convert" in
7688         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7689         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7690         qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7691         *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7692            "$define$define$define")
7693               d_Gconvert="sprintf((b),\"%.*$sPRIgldbl\",(n),(x))" ;;
7694            *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7695            esac
7696            ;;  
7697         esac
7698 fi
7699
7700 : Initialize h_fcntl
7701 h_fcntl=false
7702
7703 : Initialize h_sysfile
7704 h_sysfile=false
7705
7706 : access call always available on UNIX
7707 set access d_access
7708 eval $inlibc
7709
7710 : locate the flags for 'access()'
7711 case "$d_access" in
7712 "$define")
7713         echo " "
7714         $cat >access.c <<'EOCP'
7715 #include <sys/types.h>
7716 #ifdef I_FCNTL
7717 #include <fcntl.h>
7718 #endif
7719 #ifdef I_SYS_FILE
7720 #include <sys/file.h>
7721 #endif
7722 #ifdef I_UNISTD
7723 #include <unistd.h>
7724 #endif
7725 int main() {
7726         exit(R_OK);
7727 }
7728 EOCP
7729         : check sys/file.h first, no particular reason here
7730         if $test `./findhdr sys/file.h` && \
7731                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7732                 h_sysfile=true;
7733                 echo "<sys/file.h> defines the *_OK access constants." >&4
7734         elif $test `./findhdr fcntl.h` && \
7735                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7736                 h_fcntl=true;
7737                 echo "<fcntl.h> defines the *_OK access constants." >&4
7738         elif $test `./findhdr unistd.h` && \
7739                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7740                 echo "<unistd.h> defines the *_OK access constants." >&4
7741         else
7742                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7743         fi
7744         ;;
7745 esac
7746 $rm -f access*
7747
7748 : see if accessx exists
7749 set accessx d_accessx
7750 eval $inlibc
7751
7752 : see if alarm exists
7753 set alarm d_alarm
7754 eval $inlibc
7755
7756 : see if atolf exists
7757 set atolf d_atolf
7758 eval $inlibc
7759
7760 : see if atoll exists
7761 set atoll d_atoll
7762 eval $inlibc
7763
7764 : Look for GNU-cc style attribute checking
7765 echo " "
7766 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7767 $cat >attrib.c <<'EOCP'
7768 #include <stdio.h>
7769 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7770 EOCP
7771 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7772         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7773                 echo "Your C compiler doesn't fully support __attribute__."
7774                 val="$undef"
7775         else
7776                 echo "Your C compiler supports __attribute__."
7777                 val="$define"
7778         fi
7779 else
7780         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7781         val="$undef"
7782 fi
7783 set d_attribut
7784 eval $setvar
7785 $rm -f attrib*
7786
7787 : see if bcmp exists
7788 set bcmp d_bcmp
7789 eval $inlibc
7790
7791 : see if bcopy exists
7792 set bcopy d_bcopy
7793 eval $inlibc
7794
7795 : see if this is a unistd.h system
7796 set unistd.h i_unistd
7797 eval $inhdr
7798
7799 : see if getpgrp exists
7800 set getpgrp d_getpgrp
7801 eval $inlibc
7802
7803 case "$d_getpgrp" in
7804 "$define")
7805         echo " "
7806         echo "Checking to see which flavor of getpgrp is in use..."
7807         $cat >set.c <<EOP
7808 #$i_unistd I_UNISTD
7809 #include <sys/types.h>
7810 #ifdef I_UNISTD
7811 #  include <unistd.h>
7812 #endif
7813 int main()
7814 {
7815         if (getuid() == 0) {
7816                 printf("(I see you are running Configure as super-user...)\n");
7817                 setuid(1);
7818         }
7819 #ifdef TRY_BSD_PGRP
7820         if (getpgrp(1) == 0)
7821                 exit(0);
7822 #else
7823         if (getpgrp() > 0)
7824                 exit(0);
7825 #endif
7826         exit(1);
7827 }
7828 EOP
7829         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7830                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7831                 val="$define"
7832         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7833                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7834                 val="$undef"
7835         else
7836                 echo "I can't seem to compile and run the test program."
7837                 if ./usg; then
7838                         xxx="a USG one, i.e. you use getpgrp()."
7839                 else
7840                         # SVR4 systems can appear rather BSD-ish.
7841                         case "$i_unistd" in
7842                         $undef)
7843                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7844                                 val="$define"
7845                                 ;;
7846                         $define)
7847                                 xxx="probably a USG one, i.e. you use getpgrp()."
7848                                 val="$undef"
7849                                 ;;
7850                         esac
7851                 fi
7852                 echo "Assuming your getpgrp is $xxx" >&4
7853         fi
7854         ;;
7855 *) val="$undef";;
7856 esac
7857 set d_bsdgetpgrp
7858 eval $setvar
7859 $rm -f set set.c
7860
7861 : see if setpgrp exists
7862 set setpgrp d_setpgrp
7863 eval $inlibc
7864
7865 case "$d_setpgrp" in
7866 "$define")
7867         echo " "
7868         echo "Checking to see which flavor of setpgrp is in use..."
7869         $cat >set.c <<EOP
7870 #$i_unistd I_UNISTD
7871 #include <sys/types.h>
7872 #ifdef I_UNISTD
7873 #  include <unistd.h>
7874 #endif
7875 int main()
7876 {
7877         if (getuid() == 0) {
7878                 printf("(I see you are running Configure as super-user...)\n");
7879                 setuid(1);
7880         }
7881 #ifdef TRY_BSD_PGRP
7882         if (-1 == setpgrp(1, 1))
7883                 exit(0);
7884 #else
7885         if (setpgrp() != -1)
7886                 exit(0);
7887 #endif
7888         exit(1);
7889 }
7890 EOP
7891         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7892                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7893                 val="$define"
7894         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7895                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7896                 val="$undef"
7897         else
7898                 echo "(I can't seem to compile and run the test program.)"
7899                 if ./usg; then
7900                         xxx="a USG one, i.e. you use setpgrp()."
7901                 else
7902                         # SVR4 systems can appear rather BSD-ish.
7903                         case "$i_unistd" in
7904                         $undef)
7905                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7906                                 val="$define"
7907                                 ;;
7908                         $define)
7909                                 xxx="probably a USG one, i.e. you use setpgrp()."
7910                                 val="$undef"
7911                                 ;;
7912                         esac
7913                 fi
7914                 echo "Assuming your setpgrp is $xxx" >&4
7915         fi
7916         ;;
7917 *) val="$undef";;
7918 esac
7919 set d_bsdsetpgrp
7920 eval $setvar
7921 $rm -f set set.c
7922 : see if bzero exists
7923 set bzero d_bzero
7924 eval $inlibc
7925
7926 : see if signal is declared as pointer to function returning int or void
7927 echo " "
7928 xxx=`./findhdr signal.h`
7929 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7930 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7931         echo "You have int (*signal())() instead of void." >&4
7932         val="$undef"
7933 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
7934         echo "You have void (*signal())()." >&4
7935         val="$define"
7936 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7937         echo "You have int (*signal())() instead of void." >&4
7938         val="$undef"
7939 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7940         echo "You have void (*signal())()." >&4
7941         val="$define"
7942 else
7943         case "$d_voidsig" in
7944         '')
7945         echo "I can't determine whether signal handler returns void or int..." >&4
7946                 dflt=void
7947                 rp="What type does your signal handler return?"
7948                 . ./myread
7949                 case "$ans" in
7950                 v*) val="$define";;
7951                 *) val="$undef";;
7952                 esac;;
7953         "$define")
7954                 echo "As you already told me, signal handler returns void." >&4
7955                 val="$define"
7956                 ;;
7957         *)      echo "As you already told me, signal handler returns int." >&4
7958                 val="$undef"
7959                 ;;
7960         esac
7961 fi
7962 set d_voidsig
7963 eval $setvar
7964 case "$d_voidsig" in
7965 "$define") signal_t="void";;
7966 *) signal_t="int";;
7967 esac
7968 $rm -f $$.tmp
7969
7970 : check for ability to cast large floats to 32-bit ints.
7971 echo " "
7972 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7973 if $test "$intsize" -ge 4; then
7974         xxx=int
7975 else
7976         xxx=long
7977 fi
7978 $cat >try.c <<EOCP
7979 #include <stdio.h>
7980 #include <sys/types.h>
7981 #include <signal.h>
7982 $signal_t blech(s) int s; { exit(3); }
7983 int main()
7984 {
7985         $xxx i32;
7986         double f, g;
7987         int result = 0;
7988         char str[16];
7989         signal(SIGFPE, blech);
7990
7991         /* Don't let compiler optimize the test away.  Store the number 
7992            in a writable string for gcc to pass to sscanf under HP/UX.
7993         */
7994         sprintf(str, "2147483647");
7995         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7996         g = 10 * f;
7997         i32  = ($xxx) g;
7998
7999         /* x86 processors will probably give 0x8000 0000, which is a
8000        sign change.  We don't want that.  We want to mimic SPARC
8001            behavior here, which is to preserve the sign and give
8002            back 0x7fff ffff.
8003         */
8004         if (i32 != ($xxx) f)
8005                 result |= 1;
8006         exit(result);
8007 }
8008 EOCP
8009 set try
8010 if eval $compile_ok; then
8011         ./try
8012         yyy=$?
8013 else
8014         echo "(I can't seem to compile the test program--assuming it can't)"
8015         yyy=1
8016 fi
8017 case "$yyy" in
8018 0)      val="$define"
8019         echo "Yup, it can."
8020         ;;
8021 *)      val="$undef"
8022         echo "Nope, it can't."
8023         ;;
8024 esac
8025 set d_casti32
8026 eval $setvar
8027 $rm -f try try.*
8028
8029 : check for ability to cast negative floats to unsigned
8030 echo " "
8031 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8032 $cat >try.c <<EOCP
8033 #include <stdio.h>
8034 #include <sys/types.h>
8035 #include <signal.h>
8036 $signal_t blech(s) int s; { exit(7); }
8037 $signal_t blech_in_list(s) int s; { exit(4); }
8038 unsigned long dummy_long(p) unsigned long p; { return p; }
8039 unsigned int dummy_int(p) unsigned int p; { return p; }
8040 unsigned short dummy_short(p) unsigned short p; { return p; }
8041 int main()
8042 {
8043         double f;
8044         unsigned long along;
8045         unsigned int aint;
8046         unsigned short ashort;
8047         int result = 0;
8048         char str[16];
8049         
8050         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8051            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8052            optimized the whole file away
8053         */
8054         /* Store the number in a writable string for gcc to pass to 
8055            sscanf under HP/UX.
8056         */
8057         sprintf(str, "-123");
8058         sscanf(str, "%lf", &f);  /* f = -123.; */
8059
8060         signal(SIGFPE, blech);
8061         along = (unsigned long)f;
8062         aint = (unsigned int)f;
8063         ashort = (unsigned short)f;
8064         if (along != (unsigned long)-123)
8065                 result |= 1;
8066         if (aint != (unsigned int)-123)
8067                 result |= 1;
8068         if (ashort != (unsigned short)-123)
8069                 result |= 1;
8070         sprintf(str, "1073741824.");
8071         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8072         f = f + f;
8073         along = 0;
8074         along = (unsigned long)f;
8075         if (along != 0x80000000)
8076                 result |= 2;
8077         f -= 1.;
8078         along = 0;
8079         along = (unsigned long)f;
8080         if (along != 0x7fffffff)
8081                 result |= 1;
8082         f += 2.;
8083         along = 0;
8084         along = (unsigned long)f;
8085         if (along != 0x80000001)
8086                 result |= 2;
8087         if (result)
8088                 exit(result);
8089         signal(SIGFPE, blech_in_list);
8090         sprintf(str, "123.");
8091         sscanf(str, "%lf", &f);  /* f = 123.; */
8092         along = dummy_long((unsigned long)f);
8093         aint = dummy_int((unsigned int)f);
8094         ashort = dummy_short((unsigned short)f);
8095         if (along != (unsigned long)123)
8096                 result |= 4;
8097         if (aint != (unsigned int)123)
8098                 result |= 4;
8099         if (ashort != (unsigned short)123)
8100                 result |= 4;
8101         exit(result);
8102
8103 }
8104 EOCP
8105 set try
8106 if eval $compile_ok; then
8107         ./try
8108         castflags=$?
8109 else
8110         echo "(I can't seem to compile the test program--assuming it can't)"
8111         castflags=7
8112 fi
8113 case "$castflags" in
8114 0)      val="$define"
8115         echo "Yup, it can."
8116         ;;
8117 *)      val="$undef"
8118         echo "Nope, it can't."
8119         ;;
8120 esac
8121 set d_castneg
8122 eval $setvar
8123 $rm -f try.*
8124
8125 : see if vprintf exists
8126 echo " "
8127 if set vprintf val -f d_vprintf; eval $csym; $val; then
8128         echo 'vprintf() found.' >&4
8129         val="$define"
8130         $cat >vprintf.c <<'EOF'
8131 #include <varargs.h>
8132
8133 int main() { xxx("foo"); }
8134
8135 xxx(va_alist)
8136 va_dcl
8137 {
8138         va_list args;
8139         char buf[10];
8140
8141         va_start(args);
8142         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8143 }
8144 EOF
8145         set vprintf
8146         if eval $compile && ./vprintf; then
8147                 echo "Your vsprintf() returns (int)." >&4
8148                 val2="$undef"
8149         else
8150                 echo "Your vsprintf() returns (char*)." >&4
8151                 val2="$define"
8152         fi
8153 else
8154         echo 'vprintf() NOT found.' >&4
8155                 val="$undef"
8156                 val2="$undef"
8157 fi
8158 set d_vprintf
8159 eval $setvar
8160 val=$val2
8161 set d_charvspr
8162 eval $setvar
8163
8164 : see if chown exists
8165 set chown d_chown
8166 eval $inlibc
8167
8168 : see if chroot exists
8169 set chroot d_chroot
8170 eval $inlibc
8171
8172 : see if chsize exists
8173 set chsize d_chsize
8174 eval $inlibc
8175
8176 : check for const keyword
8177 echo " "
8178 echo 'Checking to see if your C compiler knows about "const"...' >&4
8179 $cat >const.c <<'EOCP'
8180 typedef struct spug { int drokk; } spug;
8181 int main()
8182 {
8183         const char *foo;
8184         const spug y;
8185 }
8186 EOCP
8187 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8188         val="$define"
8189         echo "Yup, it does."
8190 else
8191         val="$undef"
8192         echo "Nope, it doesn't."
8193 fi
8194 set d_const
8195 eval $setvar
8196
8197 : see if crypt exists
8198 echo " "
8199 if set crypt val -f d_crypt; eval $csym; $val; then
8200         echo 'crypt() found.' >&4
8201         val="$define"
8202         cryptlib=''
8203 else
8204         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8205         if $test -z "$cryptlib"; then
8206                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8207         else
8208                 cryptlib=-lcrypt
8209         fi
8210         if $test -z "$cryptlib"; then
8211                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8212         else
8213                 cryptlib=-lcrypt
8214         fi
8215         if $test -z "$cryptlib"; then
8216                 cryptlib=`./loc libcrypt$_a "" $libpth`
8217         else
8218                 cryptlib=-lcrypt
8219         fi
8220         if $test -z "$cryptlib"; then
8221                 echo 'crypt() NOT found.' >&4
8222                 val="$undef"
8223         else
8224                 val="$define"
8225         fi
8226 fi
8227 set d_crypt
8228 eval $setvar
8229
8230 : get csh whereabouts
8231 case "$csh" in
8232 'csh') val="$undef" ;;
8233 *) val="$define" ;;
8234 esac
8235 set d_csh
8236 eval $setvar
8237 : Respect a hint or command line value for full_csh.
8238 case "$full_csh" in
8239 '') full_csh=$csh ;;
8240 esac
8241
8242 : see if cuserid exists
8243 set cuserid d_cuserid
8244 eval $inlibc
8245
8246 : see if this is a limits.h system
8247 set limits.h i_limits
8248 eval $inhdr
8249
8250 : see if this is a float.h system
8251 set float.h i_float
8252 eval $inhdr
8253
8254 : See if number of significant digits in a double precision number is known
8255 echo " "
8256 $cat >dbl_dig.c <<EOM
8257 #$i_limits I_LIMITS
8258 #$i_float I_FLOAT
8259 #ifdef I_LIMITS
8260 #include <limits.h>
8261 #endif
8262 #ifdef I_FLOAT
8263 #include <float.h>
8264 #endif
8265 #ifdef DBL_DIG
8266 printf("Contains DBL_DIG");
8267 #endif
8268 EOM
8269 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8270 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8271         echo "DBL_DIG found." >&4
8272         val="$define"
8273 else
8274         echo "DBL_DIG NOT found." >&4
8275         val="$undef"
8276 fi
8277 $rm -f dbl_dig.?
8278 set d_dbl_dig
8279 eval $setvar
8280
8281 : see if difftime exists
8282 set difftime d_difftime
8283 eval $inlibc
8284
8285 : see if this is a dirent system
8286 echo " "
8287 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8288         val="$define"
8289         echo "<dirent.h> found." >&4
8290 else
8291         val="$undef"
8292         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8293                 echo "<sys/dir.h> found." >&4
8294                 echo " "
8295         else
8296                 xinc=`./findhdr sys/ndir.h`
8297         fi
8298         echo "<dirent.h> NOT found." >&4
8299 fi
8300 set i_dirent
8301 eval $setvar
8302
8303 : Look for type of directory structure.
8304 echo " "
8305 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8306
8307 case "$direntrytype" in
8308 ''|' ')
8309         case "$i_dirent" in
8310         $define) guess1='struct dirent' ;;
8311         *) guess1='struct direct'  ;;
8312         esac
8313         ;;
8314 *)      guess1="$direntrytype"
8315         ;;
8316 esac
8317
8318 case "$guess1" in
8319 'struct dirent') guess2='struct direct' ;;
8320 *) guess2='struct dirent' ;;
8321 esac
8322                 
8323 if $contains "$guess1" try.c >/dev/null 2>&1; then
8324         direntrytype="$guess1"
8325         echo "Your directory entries are $direntrytype." >&4
8326 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8327         direntrytype="$guess2"
8328         echo "Your directory entries seem to be $direntrytype." >&4
8329 else
8330         echo "I don't recognize your system's directory entries." >&4
8331         rp="What type is used for directory entries on this system?"
8332         dflt="$guess1"
8333         . ./myread
8334         direntrytype="$ans"
8335 fi
8336 $rm -f try.c
8337
8338
8339 : see if the directory entry stores field length
8340 echo " "
8341 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8342 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8343         echo "Good, your directory entry keeps length information in d_namlen." >&4
8344         val="$define"
8345 else
8346         echo "Your directory entry does not know about the d_namlen field." >&4
8347         val="$undef"
8348 fi
8349 set d_dirnamlen
8350 eval $setvar
8351 $rm -f try.c
8352
8353 : see if dlerror exists
8354 xxx_runnm="$runnm"
8355 runnm=false
8356 set dlerror d_dlerror
8357 eval $inlibc
8358 runnm="$xxx_runnm"
8359
8360 : see if dlfcn is available
8361 set dlfcn.h i_dlfcn
8362 eval $inhdr
8363
8364 case "$usedl" in
8365 $define|y|true)
8366         $cat << EOM
8367
8368 On a few systems, the dynamically loaded modules that perl generates and uses
8369 will need a different extension than shared libs. The default will probably
8370 be appropriate.
8371
8372 EOM
8373         case "$dlext" in
8374         '')     dflt="$so" ;;
8375         *)      dflt="$dlext" ;;
8376         esac
8377         rp='What is the extension of dynamically loaded modules'
8378         . ./myread
8379         dlext="$ans"
8380         ;;
8381 *)
8382         dlext="none"
8383         ;;
8384 esac
8385
8386 : Check if dlsym need a leading underscore
8387 echo " "
8388 val="$undef"
8389
8390 case "$dlsrc" in
8391 dl_dlopen.xs)
8392         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8393         $cat >dyna.c <<'EOM'
8394 fred () { }
8395 EOM
8396
8397 $cat >fred.c<<EOM
8398
8399 #include <stdio.h>
8400 #$i_dlfcn I_DLFCN
8401 #ifdef I_DLFCN
8402 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8403 #else
8404 #include <sys/types.h>
8405 #include <nlist.h>
8406 #include <link.h>
8407 #endif
8408
8409 extern int fred() ;
8410
8411 int main()
8412 {
8413     void * handle ;
8414     void * symbol ;
8415 #ifndef RTLD_LAZY
8416     int mode = 1 ;
8417 #else
8418     int mode = RTLD_LAZY ;
8419 #endif
8420     handle = dlopen("./dyna.$dlext", mode) ;
8421     if (handle == NULL) {
8422         printf ("1\n") ;
8423         fflush (stdout) ;
8424         exit(0);
8425     }
8426     symbol = dlsym(handle, "fred") ;
8427     if (symbol == NULL) {
8428         /* try putting a leading underscore */
8429         symbol = dlsym(handle, "_fred") ;
8430         if (symbol == NULL) {
8431             printf ("2\n") ;
8432             fflush (stdout) ;
8433             exit(0);
8434         }
8435         printf ("3\n") ;
8436     }
8437     else
8438         printf ("4\n") ;
8439     fflush (stdout) ;
8440     exit(0);
8441 }
8442 EOM
8443         : Call the object file tmp-dyna.o in case dlext=o.
8444         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8445                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8446                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8447                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8448                 xxx=`./fred`
8449                 case $xxx in
8450                 1)      echo "Test program failed using dlopen." >&4
8451                         echo "Perhaps you should not use dynamic loading." >&4;;
8452                 2)      echo "Test program failed using dlsym." >&4
8453                         echo "Perhaps you should not use dynamic loading." >&4;;
8454                 3)      echo "dlsym needs a leading underscore" >&4
8455                         val="$define" ;;
8456                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8457                 esac
8458         else
8459                 echo "I can't compile and run the test program." >&4
8460                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8461         fi
8462         ;;
8463 esac
8464                 
8465 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8466
8467 set d_dlsymun
8468 eval $setvar
8469
8470 hasproto='varname=$1; func=$2; shift; shift;
8471 while $test $# -ge 2; do
8472         case "$1" in
8473         $define) echo "#include <$2>";;
8474         esac ;
8475     shift 2;
8476 done > try.c;
8477 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8478 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8479         echo "$func() prototype found.";
8480         val="$define";
8481 else
8482         echo "$func() prototype NOT found.";
8483         val="$undef";
8484 fi;
8485 set $varname;
8486 eval $setvar;
8487 $rm -f try.c tryout.c'
8488
8489 : see if prototype for drand48 is available
8490 echo " "
8491 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8492 eval $hasproto
8493
8494 : see if dup2 exists
8495 set dup2 d_dup2
8496 eval $inlibc
8497
8498 : see if eaccess exists
8499 set eaccess d_eaccess
8500 eval $inlibc
8501
8502 : see if endgrent exists
8503 set endgrent d_endgrent
8504 eval $inlibc
8505
8506 : see if endhostent exists
8507 set endhostent d_endhent
8508 eval $inlibc
8509
8510 : see if endnetent exists
8511 set endnetent d_endnent
8512 eval $inlibc
8513
8514 : see if endprotoent exists
8515 set endprotoent d_endpent
8516 eval $inlibc
8517
8518 : see if endpwent exists
8519 set endpwent d_endpwent
8520 eval $inlibc
8521
8522 : see if endservent exists
8523 set endservent d_endsent
8524 eval $inlibc
8525
8526 : Locate the flags for 'open()'
8527 echo " "
8528 $cat >open3.c <<'EOCP'
8529 #include <sys/types.h>
8530 #ifdef I_FCNTL
8531 #include <fcntl.h>
8532 #endif
8533 #ifdef I_SYS_FILE
8534 #include <sys/file.h>
8535 #endif
8536 int main() {
8537         if(O_RDONLY);
8538 #ifdef O_TRUNC
8539         exit(0);
8540 #else
8541         exit(1);
8542 #endif
8543 }
8544 EOCP
8545 : check sys/file.h first to get FREAD on Sun
8546 if $test `./findhdr sys/file.h` && \
8547                 set open3 -DI_SYS_FILE && eval $compile; then
8548         h_sysfile=true;
8549         echo "<sys/file.h> defines the O_* constants..." >&4
8550         if ./open3; then
8551                 echo "and you have the 3 argument form of open()." >&4
8552                 val="$define"
8553         else
8554                 echo "but not the 3 argument form of open().  Oh, well." >&4
8555                 val="$undef"
8556         fi
8557 elif $test `./findhdr fcntl.h` && \
8558                 set open3 -DI_FCNTL && eval $compile; then
8559         h_fcntl=true;
8560         echo "<fcntl.h> defines the O_* constants..." >&4
8561         if ./open3; then
8562                 echo "and you have the 3 argument form of open()." >&4
8563                 val="$define"
8564         else
8565                 echo "but not the 3 argument form of open().  Oh, well." >&4
8566                 val="$undef"
8567         fi
8568 else
8569         val="$undef"
8570         echo "I can't find the O_* constant definitions!  You got problems." >&4
8571 fi
8572 set d_open3
8573 eval $setvar
8574 $rm -f open3*
8575
8576 : see which of string.h or strings.h is needed
8577 echo " "
8578 strings=`./findhdr string.h`
8579 if $test "$strings" && $test -r "$strings"; then
8580         echo "Using <string.h> instead of <strings.h>." >&4
8581         val="$define"
8582 else
8583         val="$undef"
8584         strings=`./findhdr strings.h`
8585         if $test "$strings" && $test -r "$strings"; then
8586                 echo "Using <strings.h> instead of <string.h>." >&4
8587         else
8588                 echo "No string header found -- You'll surely have problems." >&4
8589         fi
8590 fi
8591 set i_string
8592 eval $setvar
8593 case "$i_string" in
8594 "$undef") strings=`./findhdr strings.h`;;
8595 *)        strings=`./findhdr string.h`;;
8596 esac
8597
8598 : check for non-blocking I/O stuff
8599 case "$h_sysfile" in
8600 true) echo "#include <sys/file.h>" > head.c;;
8601 *)
8602         case "$h_fcntl" in
8603         true) echo "#include <fcntl.h>" > head.c;;
8604         *) echo "#include <sys/fcntl.h>" > head.c;;
8605         esac
8606         ;;
8607 esac
8608 echo " "
8609 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8610 case "$o_nonblock" in
8611 '')
8612         $cat head.c > try.c
8613         $cat >>try.c <<'EOCP'
8614 #include <stdio.h>
8615 int main() {
8616 #ifdef O_NONBLOCK
8617         printf("O_NONBLOCK\n");
8618         exit(0);
8619 #endif
8620 #ifdef O_NDELAY
8621         printf("O_NDELAY\n");
8622         exit(0);
8623 #endif
8624 #ifdef FNDELAY
8625         printf("FNDELAY\n");
8626         exit(0);
8627 #endif
8628         exit(0);
8629 }
8630 EOCP
8631         set try
8632         if eval $compile_ok; then
8633                 o_nonblock=`./try`
8634                 case "$o_nonblock" in
8635                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8636                 *) echo "Seems like we can use $o_nonblock.";;
8637                 esac
8638         else
8639                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8640         fi
8641         ;;
8642 *) echo "Using $hint value $o_nonblock.";;
8643 esac
8644 $rm -f try try.* .out core
8645
8646 echo " "
8647 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8648 case "$eagain" in
8649 '')
8650         $cat head.c > try.c
8651         $cat >>try.c <<EOCP
8652 #include <errno.h>
8653 #include <sys/types.h>
8654 #include <signal.h>
8655 #include <stdio.h> 
8656 #define MY_O_NONBLOCK $o_nonblock
8657 #ifndef errno  /* XXX need better Configure test */
8658 extern int errno;
8659 #endif
8660 #$i_unistd I_UNISTD
8661 #ifdef I_UNISTD
8662 #include <unistd.h>
8663 #endif
8664 #$i_string I_STRING
8665 #ifdef I_STRING
8666 #include <string.h>
8667 #else
8668 #include <strings.h>
8669 #endif
8670 $signal_t blech(x) int x; { exit(3); }
8671 EOCP
8672         $cat >> try.c <<'EOCP'
8673 int main()
8674 {
8675         int pd[2];
8676         int pu[2];
8677         char buf[1];
8678         char string[100];
8679
8680         pipe(pd);       /* Down: child -> parent */
8681         pipe(pu);       /* Up: parent -> child */
8682         if (0 != fork()) {
8683                 int ret;
8684                 close(pd[1]);   /* Parent reads from pd[0] */
8685                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8686                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8687                         exit(1);
8688                 signal(SIGALRM, blech);
8689                 alarm(5);
8690                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8691                         exit(2);
8692                 sprintf(string, "%d\n", ret);
8693                 write(2, string, strlen(string));
8694                 alarm(0);
8695 #ifdef EAGAIN
8696                 if (errno == EAGAIN) {
8697                         printf("EAGAIN\n");
8698                         goto ok;
8699                 }
8700 #endif
8701 #ifdef EWOULDBLOCK
8702                 if (errno == EWOULDBLOCK)
8703                         printf("EWOULDBLOCK\n");
8704 #endif
8705         ok:
8706                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8707                 sleep(2);                               /* Give it time to close our pipe */
8708                 alarm(5);
8709                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8710                 alarm(0);
8711                 sprintf(string, "%d\n", ret);
8712                 write(3, string, strlen(string));
8713                 exit(0);
8714         }
8715
8716         close(pd[0]);                   /* We write to pd[1] */
8717         close(pu[1]);                   /* We read from pu[0] */
8718         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8719         close(pd[1]);                   /* Pipe pd is now fully closed! */
8720         exit(0);                                /* Bye bye, thank you for playing! */
8721 }
8722 EOCP
8723         set try
8724         if eval $compile_ok; then
8725                 echo "$startsh" >mtry
8726                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8727                 chmod +x mtry
8728                 ./mtry >/dev/null 2>&1
8729                 case $? in
8730                 0) eagain=`$cat try.out`;;
8731                 1) echo "Could not perform non-blocking setting!";;
8732                 2) echo "I did a successful read() for something that was not there!";;
8733                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8734                 *) echo "Something terribly wrong happened during testing.";;
8735                 esac
8736                 rd_nodata=`$cat try.ret`
8737                 echo "A read() system call with no data present returns $rd_nodata."
8738                 case "$rd_nodata" in
8739                 0|-1) ;;
8740                 *)
8741                         echo "(That's peculiar, fixing that to be -1.)"
8742                         rd_nodata=-1
8743                         ;;
8744                 esac
8745                 case "$eagain" in
8746                 '')
8747                         echo "Forcing errno EAGAIN on read() with no data available."
8748                         eagain=EAGAIN
8749                         ;;
8750                 *)
8751                         echo "Your read() sets errno to $eagain when no data is available."
8752                         ;;
8753                 esac
8754                 status=`$cat try.err`
8755                 case "$status" in
8756                 0) echo "And it correctly returns 0 to signal EOF.";;
8757                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8758                 *) echo "However, your read() returns '$status' on EOF??";;
8759                 esac
8760                 val="$define"
8761                 if test "$status" = "$rd_nodata"; then
8762                         echo "WARNING: you can't distinguish between EOF and no data!"
8763                         val="$undef"
8764                 fi
8765         else
8766                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8767                 eagain=EAGAIN
8768         fi
8769         set d_eofnblk
8770         eval $setvar
8771         ;;
8772 *)
8773         echo "Using $hint value $eagain."
8774         echo "Your read() returns $rd_nodata when no data is present."
8775         case "$d_eofnblk" in
8776         "$define") echo "And you can see EOF because read() returns 0.";;
8777         "$undef") echo "But you can't see EOF status from read() returned value.";;
8778         *)
8779                 echo "(Assuming you can't see EOF status from read anyway.)"
8780                 d_eofnblk=$undef
8781                 ;;
8782         esac
8783         ;;
8784 esac
8785 $rm -f try try.* .out core head.c mtry
8786
8787 : see if fchmod exists
8788 set fchmod d_fchmod
8789 eval $inlibc
8790
8791 : see if fchown exists
8792 set fchown d_fchown
8793 eval $inlibc
8794
8795 : see if this is an fcntl system
8796 set fcntl d_fcntl
8797 eval $inlibc
8798
8799 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8800 while $test $# -ge 2; do
8801         case "$1" in
8802         $define) echo "#include <$2>";;
8803         esac ;
8804     shift 2;
8805 done > try.c;
8806 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8807 set try;
8808 if eval $compile; then
8809         val="$define";
8810 else
8811         val="$undef";
8812 fi;
8813 set $varname;
8814 eval $setvar;
8815 $rm -f try.c try.o'
8816
8817 socketlib=''
8818 sockethdr=''
8819 : see whether socket exists
8820 echo " "
8821 $echo $n "Hmm... $c" >&4
8822 if set socket val -f d_socket; eval $csym; $val; then
8823         echo "Looks like you have Berkeley networking support." >&4
8824         d_socket="$define"
8825         if set setsockopt val -f; eval $csym; $val; then
8826                 d_oldsock="$undef"
8827         else
8828                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8829                 d_oldsock="$define"
8830         fi
8831 else
8832         if $contains socklib libc.list >/dev/null 2>&1; then
8833                 echo "Looks like you have Berkeley networking support." >&4
8834                 d_socket="$define"
8835                 : we will have to assume that it supports the 4.2 BSD interface
8836                 d_oldsock="$undef"
8837         else
8838                 echo "You don't have Berkeley networking in libc$_a..." >&4
8839                 if test "X$d_socket" = "X$define"; then
8840                    echo "...but you seem to believe that you have sockets." >&4
8841                 else
8842                         for net in net socket
8843                         do
8844                                 if test -f /usr/lib/lib$net$_a; then
8845                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8846                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8847                                         if $contains socket libc.list >/dev/null 2>&1; then
8848                                                 d_socket="$define"
8849                                                 socketlib="-l$net"
8850                                                 case "$net" in
8851                                                 net)
8852                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8853                                                         sockethdr="-I/usr/netinclude"
8854                                                         ;;
8855                                                 esac
8856                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8857                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8858                                                         d_oldsock="$undef"
8859                                                 else
8860                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8861                                                         d_oldsock="$define"
8862                                                 fi
8863                                                 break
8864                                         fi
8865                                 fi
8866                         done
8867                         if test "X$d_socket" != "X$define"; then
8868                            echo "or anywhere else I see." >&4
8869                            d_socket="$undef"
8870                            d_oldsock="$undef"
8871                         fi
8872                 fi
8873         fi
8874 fi
8875
8876 : see if socketpair exists
8877 set socketpair d_sockpair
8878 eval $inlibc
8879
8880
8881 echo " "
8882 echo "Checking the availability of certain socket constants..." >& 4
8883 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8884         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8885         $cat >try.c <<EOF
8886 #include <sys/types.h>
8887 #include <sys/socket.h>
8888 int main() {
8889     int i = $ENUM;
8890 }
8891 EOF
8892         val="$undef"
8893         set try; if eval $compile; then
8894                 val="$define"
8895         fi
8896         set d_${enum}; eval $setvar
8897         $rm -f try.c try
8898 done
8899
8900 : see if sys/select.h has to be included
8901 set sys/select.h i_sysselct
8902 eval $inhdr
8903
8904 : see if we should include time.h, sys/time.h, or both
8905 echo " "
8906 if test "X$timeincl" = X; then
8907         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8908         $echo $n "I'm now running the test program...$c"
8909         $cat >try.c <<'EOCP'
8910 #include <sys/types.h>
8911 #ifdef I_TIME
8912 #include <time.h>
8913 #endif
8914 #ifdef I_SYSTIME
8915 #ifdef SYSTIMEKERNEL
8916 #define KERNEL
8917 #endif
8918 #include <sys/time.h>
8919 #endif
8920 #ifdef I_SYSSELECT
8921 #include <sys/select.h>
8922 #endif
8923 int main()
8924 {
8925         struct tm foo;
8926 #ifdef S_TIMEVAL
8927         struct timeval bar;
8928 #endif
8929 #ifdef S_TIMEZONE
8930         struct timezone tzp;
8931 #endif
8932         if (foo.tm_sec == foo.tm_sec)
8933                 exit(0);
8934 #ifdef S_TIMEVAL
8935         if (bar.tv_sec == bar.tv_sec)
8936                 exit(0);
8937 #endif
8938         exit(1);
8939 }
8940 EOCP
8941         flags=''
8942         for s_timezone in '-DS_TIMEZONE' ''; do
8943         sysselect=''
8944         for s_timeval in '-DS_TIMEVAL' ''; do
8945         for i_systimek in '' '-DSYSTIMEKERNEL'; do
8946         for i_time in '' '-DI_TIME'; do
8947         for i_systime in '-DI_SYSTIME' ''; do
8948                 case "$flags" in
8949                 '') $echo $n ".$c"
8950                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8951                         if eval $compile; then
8952                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8953                                 shift
8954                                 flags="$*"
8955                                 echo " "
8956                                 $echo $n "Succeeded with $flags$c"
8957                         fi
8958                         ;;
8959                 esac
8960         done
8961         done
8962         done
8963         done
8964         done
8965         timeincl=''
8966         echo " "
8967         case "$flags" in
8968         *SYSTIMEKERNEL*) i_systimek="$define"
8969                 timeincl=`./findhdr sys/time.h`
8970                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8971         *) i_systimek="$undef";;
8972         esac
8973         case "$flags" in
8974         *I_TIME*) i_time="$define"
8975                 timeincl=`./findhdr time.h`" $timeincl"
8976                 echo "We'll include <time.h>." >&4;;
8977         *) i_time="$undef";;
8978         esac
8979         case "$flags" in
8980         *I_SYSTIME*) i_systime="$define"
8981                 timeincl=`./findhdr sys/time.h`" $timeincl"
8982                 echo "We'll include <sys/time.h>." >&4;;
8983         *) i_systime="$undef";;
8984         esac
8985         $rm -f try.c try
8986 fi
8987
8988 : check for fd_set items
8989 $cat <<EOM
8990
8991 Checking to see how well your C compiler handles fd_set and friends ...
8992 EOM
8993 $cat >fd_set.c <<EOCP
8994 #$i_systime I_SYS_TIME
8995 #$i_sysselct I_SYS_SELECT
8996 #$d_socket HAS_SOCKET
8997 #include <sys/types.h>
8998 #ifdef HAS_SOCKET
8999 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9000 #endif
9001 #ifdef I_SYS_TIME
9002 #include <sys/time.h>
9003 #endif
9004 #ifdef I_SYS_SELECT
9005 #include <sys/select.h>
9006 #endif
9007 int main() {
9008         fd_set fds;
9009
9010 #ifdef TRYBITS
9011         if(fds.fds_bits);
9012 #endif
9013
9014 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9015         exit(0);
9016 #else
9017         exit(1);
9018 #endif
9019 }
9020 EOCP
9021 set fd_set -DTRYBITS
9022 if eval $compile; then
9023         d_fds_bits="$define"
9024         d_fd_set="$define"
9025         echo "Well, your system knows about the normal fd_set typedef..." >&4
9026         if ./fd_set; then
9027                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9028                 d_fd_macros="$define"
9029         else
9030                 $cat >&4 <<'EOM'
9031 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9032 EOM
9033                 d_fd_macros="$undef"
9034         fi
9035 else
9036         $cat <<'EOM'
9037 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9038 EOM
9039         set fd_set
9040         if eval $compile; then
9041                 d_fds_bits="$undef"
9042                 d_fd_set="$define"
9043                 echo "Well, your system has some sort of fd_set available..." >&4
9044                 if ./fd_set; then
9045                         echo "and you have the normal fd_set macros." >&4
9046                         d_fd_macros="$define"
9047                 else
9048                         $cat <<'EOM'
9049 but not the normal fd_set macros!  Gross!  More work for me...
9050 EOM
9051                         d_fd_macros="$undef"
9052                 fi
9053         else
9054         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9055                 d_fd_set="$undef"
9056                 d_fds_bits="$undef"
9057                 d_fd_macros="$undef"
9058         fi
9059 fi
9060 $rm -f fd_set*
9061
9062 : see if fgetpos exists
9063 set fgetpos d_fgetpos
9064 eval $inlibc
9065
9066 : see if flock exists
9067 set flock d_flock
9068 eval $inlibc
9069
9070 : see if fork exists
9071 set fork d_fork
9072 eval $inlibc
9073
9074 : see if pathconf exists
9075 set pathconf d_pathconf
9076 eval $inlibc
9077
9078 : see if fpathconf exists
9079 set fpathconf d_fpathconf
9080 eval $inlibc
9081
9082
9083 : check for fpos64_t
9084 echo " "
9085 echo "Checking to see if you have fpos64_t..." >&4
9086 $cat >try.c <<EOCP
9087 #include <stdio.h>
9088 int main() { fpos64_t x = 7; }
9089 EOCP
9090 set try
9091 if eval $compile; then
9092         val="$define"
9093         echo "You have fpos64_t."
9094 else
9095         val="$undef"
9096         echo "You do not have fpos64_t."
9097         case "$fpossize" in
9098         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9099         esac
9100 fi
9101 $rm -f try.* try
9102 set d_fpos64_t
9103 eval $setvar
9104
9105 : see if frexpl exists
9106 set frexpl d_frexpl
9107 eval $inlibc
9108
9109 hasstruct='varname=$1; struct=$2; shift; shift;
9110 while $test $# -ge 2; do
9111         case "$1" in
9112         $define) echo "#include <$2>";;
9113         esac ;
9114     shift 2;
9115 done > try.c;
9116 echo "int main () { struct $struct foo; }" >> try.c;
9117 set try;
9118 if eval $compile; then
9119         val="$define";
9120 else
9121         val="$undef";
9122 fi;
9123 set $varname;
9124 eval $setvar;
9125 $rm -f try.c try.o'
9126
9127 : see if this is a sys/param system
9128 set sys/param.h i_sysparam
9129 eval $inhdr
9130
9131 : see if this is a sys/mount.h system
9132 set sys/mount.h i_sysmount
9133 eval $inhdr
9134
9135 : see if sys/types.h has to be included
9136 set sys/types.h i_systypes
9137 eval $inhdr
9138
9139
9140 echo " "
9141 echo "Checking to see if your system supports struct fs_data..." >&4
9142 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9143 eval $hasstruct
9144 case "$d_fs_data_s" in
9145 "$define")      echo "Yes, it does."   ;;
9146 *)              echo "No, it doesn't." ;;
9147 esac
9148
9149 : see if fseeko exists
9150 set fseeko d_fseeko
9151 eval $inlibc
9152 case "$longsize" in
9153 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9154 esac
9155
9156 : see if fsetpos exists
9157 set fsetpos d_fsetpos
9158 eval $inlibc
9159
9160
9161 : see if fstatfs exists
9162 set fstatfs d_fstatfs
9163 eval $inlibc
9164
9165
9166 : see if statvfs exists
9167 set statvfs d_statvfs
9168 eval $inlibc
9169
9170 : see if fstatvfs exists
9171 set fstatvfs d_fstatvfs
9172 eval $inlibc
9173
9174
9175 : see if ftello exists
9176 set ftello d_ftello
9177 eval $inlibc
9178 case "$longsize" in
9179 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9180 esac
9181
9182 : see if getcwd exists
9183 set getcwd d_getcwd
9184 eval $inlibc
9185
9186
9187 : see if getfsstat exists
9188 set getfsstat d_getfsstat
9189 eval $inlibc
9190
9191 : see if getgrent exists
9192 set getgrent d_getgrent
9193 eval $inlibc
9194
9195 : see if gethostbyaddr exists
9196 set gethostbyaddr d_gethbyaddr
9197 eval $inlibc
9198
9199 : see if gethostbyname exists
9200 set gethostbyname d_gethbyname
9201 eval $inlibc
9202
9203 : see if gethostent exists
9204 set gethostent d_gethent
9205 eval $inlibc
9206
9207 : see how we will look up host name
9208 echo " "
9209 call=''
9210 if set gethostname val -f d_gethname; eval $csym; $val; then
9211         echo 'gethostname() found.' >&4
9212         d_gethname="$define"
9213         call=gethostname
9214 fi
9215 if set uname val -f d_uname; eval $csym; $val; then
9216         if ./xenix; then
9217                 $cat <<'EOM'
9218 uname() was found, but you're running xenix, and older versions of xenix
9219 have a broken uname(). If you don't really know whether your xenix is old
9220 enough to have a broken system call, use the default answer.
9221
9222 EOM
9223                 dflt=y
9224                 case "$d_uname" in
9225                 "$define") dflt=n;;
9226                 esac
9227                 rp='Is your uname() broken?'
9228                 . ./myread
9229                 case "$ans" in
9230                 n*) d_uname="$define"; call=uname;;
9231                 esac
9232         else
9233                 echo 'uname() found.' >&4
9234                 d_uname="$define"
9235                 case "$call" in
9236                 '') call=uname ;;
9237                 esac
9238         fi
9239 fi
9240 case "$d_gethname" in
9241 '') d_gethname="$undef";;
9242 esac
9243 case "$d_uname" in
9244 '') d_uname="$undef";;
9245 esac
9246 case "$d_uname$d_gethname" in
9247 *define*)
9248         dflt=n
9249         cat <<EOM
9250  
9251 Every now and then someone has a $call() that lies about the hostname
9252 but can't be fixed for political or economic reasons.  If you wish, I can
9253 pretend $call() isn't there and maybe compute hostname at run-time
9254 thanks to the '$phostname' command.
9255
9256 EOM
9257         rp="Shall I ignore $call() from now on?"
9258         . ./myread
9259         case "$ans" in
9260         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9261         esac;;
9262 esac
9263 case "$phostname" in
9264 '') aphostname='';;
9265 *) case "$aphostname" in
9266         /*) ;;
9267         *) set X $phostname
9268                 shift
9269                 file=$1
9270                 shift
9271                 file=`./loc $file $file $pth`
9272                 aphostname=`echo $file $*`
9273                 ;;
9274         esac
9275         ;;
9276 esac
9277 case "$d_uname$d_gethname" in
9278 *define*) ;;
9279 *)
9280         case "$phostname" in
9281         '')
9282                 echo "There will be no way for $package to get your hostname." >&4;;
9283         *)
9284         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9285                 ;;
9286         esac;;
9287 esac
9288 case "$d_phostname" in
9289 '') d_phostname="$undef";;
9290 esac
9291
9292 : see if this is a netdb.h system
9293 set netdb.h i_netdb
9294 eval $inhdr
9295
9296 : see if prototypes for various gethostxxx netdb.h functions are available
9297 echo " "
9298 set d_gethostprotos gethostent $i_netdb netdb.h
9299 eval $hasproto
9300
9301 : see if getlogin exists
9302 set getlogin d_getlogin
9303 eval $inlibc
9304
9305 : see if getmnt exists
9306 set getmnt d_getmnt
9307 eval $inlibc
9308
9309 : see if getmntent exists
9310 set getmntent d_getmntent
9311 eval $inlibc
9312
9313 : see if getnetbyaddr exists
9314 set getnetbyaddr d_getnbyaddr
9315 eval $inlibc
9316
9317 : see if getnetbyname exists
9318 set getnetbyname d_getnbyname
9319 eval $inlibc
9320
9321 : see if getnetent exists
9322 set getnetent d_getnent
9323 eval $inlibc
9324
9325 : see if prototypes for various getnetxxx netdb.h functions are available
9326 echo " "
9327 set d_getnetprotos getnetent $i_netdb netdb.h
9328 eval $hasproto
9329
9330
9331 : see if getprotobyname exists
9332 set getprotobyname d_getpbyname
9333 eval $inlibc
9334
9335 : see if getprotobynumber exists
9336 set getprotobynumber d_getpbynumber
9337 eval $inlibc
9338
9339 : see if getprotoent exists
9340 set getprotoent d_getpent
9341 eval $inlibc
9342
9343 : see if getpgid exists
9344 set getpgid d_getpgid
9345 eval $inlibc
9346
9347 : see if getpgrp2 exists
9348 set getpgrp2 d_getpgrp2
9349 eval $inlibc
9350
9351 : see if getppid exists
9352 set getppid d_getppid
9353 eval $inlibc
9354
9355 : see if getpriority exists
9356 set getpriority d_getprior
9357 eval $inlibc
9358
9359 : see if prototypes for various getprotoxxx netdb.h functions are available
9360 echo " "
9361 set d_getprotoprotos getprotoent $i_netdb netdb.h
9362 eval $hasproto
9363
9364 : see if getpwent exists
9365 set getpwent d_getpwent
9366 eval $inlibc
9367
9368
9369 : see if getservbyname exists
9370 set getservbyname d_getsbyname
9371 eval $inlibc
9372
9373 : see if getservbyport exists
9374 set getservbyport d_getsbyport
9375 eval $inlibc
9376
9377 : see if getservent exists
9378 set getservent d_getsent
9379 eval $inlibc
9380
9381 : see if prototypes for various getservxxx netdb.h functions are available
9382 echo " "
9383 set d_getservprotos getservent $i_netdb netdb.h
9384 eval $hasproto
9385
9386 : see if getspnam exists
9387 set getspnam d_getspnam
9388 eval $inlibc
9389
9390 : see if gettimeofday or ftime exists
9391 set gettimeofday d_gettimeod
9392 eval $inlibc
9393 case "$d_gettimeod" in
9394 "$undef")
9395         set ftime d_ftime 
9396         eval $inlibc
9397         ;;
9398 *)
9399         val="$undef"; set d_ftime; eval $setvar
9400         ;;
9401 esac
9402 case "$d_gettimeod$d_ftime" in
9403 "$undef$undef")
9404         echo " "
9405         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9406         ;;
9407 esac
9408
9409 : see if this is an grp system
9410 set grp.h i_grp
9411 eval $inhdr
9412
9413 case "$i_grp" in
9414 $define)
9415         xxx=`./findhdr grp.h`
9416         $cppstdin $cppflags $cppminus < $xxx >$$.h
9417
9418         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9419                 val="$define"
9420         else
9421                 val="$undef"
9422         fi
9423         set d_grpasswd
9424         eval $setvar
9425
9426         $rm -f $$.h
9427         ;;
9428 *)
9429         val="$undef";
9430         set d_grpasswd; eval $setvar
9431         ;;
9432 esac
9433
9434 : see if hasmntopt exists
9435 set hasmntopt d_hasmntopt
9436 eval $inlibc
9437
9438 : see if this is a netinet/in.h or sys/in.h system
9439 set netinet/in.h i_niin sys/in.h i_sysin
9440 eval $inhdr
9441
9442 : see if arpa/inet.h has to be included
9443 set arpa/inet.h i_arpainet
9444 eval $inhdr
9445
9446 : see if htonl --and friends-- exists
9447 val=''
9448 set htonl val
9449 eval $inlibc
9450
9451 : Maybe they are macros.
9452 case "$val" in
9453 $undef)
9454         $cat >htonl.c <<EOM
9455 #include <stdio.h>
9456 #include <sys/types.h>
9457 #$i_niin I_NETINET_IN
9458 #$i_sysin I_SYS_IN
9459 #$i_arpainet I_ARPA_INET
9460 #ifdef I_NETINET_IN
9461 #include <netinet/in.h>
9462 #endif
9463 #ifdef I_SYS_IN
9464 #include <sys/in.h>
9465 #endif
9466 #ifdef I_ARPA_INET
9467 #include <arpa/inet.h>
9468 #endif
9469 #ifdef htonl
9470 printf("Defined as a macro.");
9471 #endif
9472 EOM
9473         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9474         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9475                 val="$define"
9476                 echo "But it seems to be defined as a macro." >&4
9477         fi
9478         $rm -f htonl.?
9479         ;;
9480 esac
9481 set d_htonl
9482 eval $setvar
9483
9484 : see if iconv exists
9485 set iconv d_iconv
9486 eval $inlibc
9487
9488 : index or strchr
9489 echo " "
9490 if set index val -f; eval $csym; $val; then
9491         if set strchr val -f d_strchr; eval $csym; $val; then
9492                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9493                         val="$define"
9494                         vali="$undef"
9495                         echo "strchr() found." >&4
9496                 else
9497                         val="$undef"
9498                         vali="$define"
9499                         echo "index() found." >&4
9500                 fi
9501         else
9502                 val="$undef"
9503                 vali="$define"
9504                 echo "index() found." >&4
9505         fi
9506 else
9507         if set strchr val -f d_strchr; eval $csym; $val; then
9508                 val="$define"
9509                 vali="$undef"
9510                 echo "strchr() found." >&4
9511         else
9512                 echo "No index() or strchr() found!" >&4
9513                 val="$undef"
9514                 vali="$undef"
9515         fi
9516 fi
9517 set d_strchr; eval $setvar
9518 val="$vali"
9519 set d_index; eval $setvar
9520
9521 : check whether inet_aton exists
9522 set inet_aton d_inetaton
9523 eval $inlibc
9524
9525 : see if inttypes.h is available
9526 : we want a real compile instead of Inhdr because some systems
9527 : have an inttypes.h which includes non-existent headers
9528 echo " "
9529 $cat >try.c <<EOCP
9530 #include <inttypes.h>
9531 int main() {
9532         static int32_t foo32 = 0x12345678;
9533 }
9534 EOCP
9535 set try
9536 if eval $compile; then
9537         echo "<inttypes.h> found." >&4
9538         val="$define"
9539 else
9540         echo "<inttypes.h> NOT found." >&4
9541         val="$undef"
9542 fi
9543 $rm -f try.c try
9544 set i_inttypes
9545 eval $setvar
9546
9547 : check for int64_t
9548 echo " "
9549 echo "Checking to see if you have int64_t..." >&4
9550 $cat >try.c <<EOCP
9551 #include <sys/types.h>
9552 #$i_inttypes I_INTTYPES
9553 #ifdef I_INTTYPES
9554 #include <inttypes.h>
9555 #endif
9556 int main() { int64_t x = 7; }
9557 EOCP
9558 set try
9559 if eval $compile; then
9560         val="$define"
9561         echo "You have int64_t."
9562 else
9563         val="$undef"
9564         echo "You do not have int64_t."
9565 fi
9566 $rm -f try try.*
9567 set d_int64_t
9568 eval $setvar
9569
9570 : Look for isascii
9571 echo " "
9572 $cat >isascii.c <<'EOCP'
9573 #include <stdio.h>
9574 #include <ctype.h>
9575 int main() {
9576         int c = 'A';
9577         if (isascii(c))
9578                 exit(0);
9579         else
9580                 exit(1);
9581 }
9582 EOCP
9583 set isascii
9584 if eval $compile; then
9585         echo "isascii() found." >&4
9586         val="$define"
9587 else
9588         echo "isascii() NOT found." >&4
9589         val="$undef"
9590 fi
9591 set d_isascii
9592 eval $setvar
9593 $rm -f isascii*
9594
9595 : see if isnan exists
9596 set isnan d_isnan
9597 eval $inlibc
9598
9599 : see if isnanl exists
9600 set isnanl d_isnanl
9601 eval $inlibc
9602
9603 : see if killpg exists
9604 set killpg d_killpg
9605 eval $inlibc
9606
9607 : see if lchown exists
9608 echo " "
9609 $cat > try.c <<'EOCP'
9610 /* System header to define __stub macros and hopefully few prototypes,
9611     which can conflict with char lchown(); below.  */
9612 #include <assert.h>
9613 /* Override any gcc2 internal prototype to avoid an error.  */
9614 /* We use char because int might match the return type of a gcc2
9615    builtin and then its argument prototype would still apply.  */
9616 char lchown();
9617 int main() {
9618     /*  The GNU C library defines this for functions which it implements
9619         to always fail with ENOSYS.  Some functions are actually named
9620         something starting with __ and the normal name is an alias.  */
9621 #if defined (__stub_lchown) || defined (__stub___lchown)
9622 choke me
9623 #else
9624 lchown();
9625 #endif
9626 ; return 0; }
9627 EOCP
9628 set try
9629 if eval $compile; then
9630     $echo "lchown() found." >&4
9631     val="$define"
9632 else
9633     $echo "lchown() NOT found." >&4
9634     val="$undef"
9635 fi
9636 set d_lchown
9637 eval $setvar
9638
9639 : See if number of significant digits in a double precision number is known
9640 echo " "
9641 $cat >ldbl_dig.c <<EOM
9642 #$i_limits I_LIMITS
9643 #$i_float I_FLOAT
9644 #ifdef I_LIMITS
9645 #include <limits.h>
9646 #endif
9647 #ifdef I_FLOAT
9648 #include <float.h>
9649 #endif
9650 #ifdef LDBL_DIG
9651 printf("Contains LDBL_DIG");
9652 #endif
9653 EOM
9654 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9655 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9656         echo "LDBL_DIG found." >&4
9657         val="$define"
9658 else
9659         echo "LDBL_DIG NOT found." >&4
9660         val="$undef"
9661 fi
9662 $rm -f ldbl_dig.?
9663 set d_ldbl_dig
9664 eval $setvar
9665
9666 : see if link exists
9667 set link d_link
9668 eval $inlibc
9669
9670 : see if localeconv exists
9671 set localeconv d_locconv
9672 eval $inlibc
9673
9674 : see if lockf exists
9675 set lockf d_lockf
9676 eval $inlibc
9677
9678 : check for long long
9679 echo " "
9680 echo "Checking to see if you have long long..." >&4
9681 echo 'int main() { long long x = 7; return 0; }' > try.c
9682 set try
9683 if eval $compile; then
9684         val="$define"
9685         echo "You have have long long."
9686 else
9687         val="$undef"
9688         echo "You do not have long long."
9689 fi
9690 $rm try.*
9691 set d_longlong
9692 eval $setvar
9693
9694 : check for length of long long
9695 case "${d_longlong}${longlongsize}" in
9696 $define)
9697         echo " "
9698         echo "Checking to see how big your long longs are..." >&4
9699         $cat >try.c <<'EOCP'
9700 #include <stdio.h>
9701 int main()
9702 {
9703     printf("%d\n", (int)sizeof(long long));
9704     return(0);
9705 }
9706 EOCP
9707         set try
9708         if eval $compile_ok; then
9709                 longlongsize=`./try$exe_ext`
9710                 echo "Your long longs are $longlongsize bytes long."
9711         else
9712                 dflt='8'
9713                 echo " "
9714                 echo "(I can't seem to compile the test program.  Guessing...)"
9715                 rp="What is the size of a long long (in bytes)?"
9716                 . ./myread
9717                 longlongsize="$ans"
9718         fi
9719         if $test "X$longsize" = "X$longlongsize"; then
9720                 echo "(That isn't any different from an ordinary long.)"
9721         fi      
9722         ;;
9723 esac
9724 $rm -f try.* try
9725
9726 : see if prototype for lseek is available
9727 echo " "
9728 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9729 eval $hasproto
9730
9731 : see if lstat exists
9732 set lstat d_lstat
9733 eval $inlibc
9734
9735 : see if madvise exists
9736 set madvise d_madvise
9737 eval $inlibc
9738
9739 : see if mblen exists
9740 set mblen d_mblen
9741 eval $inlibc
9742
9743 : see if mbstowcs exists
9744 set mbstowcs d_mbstowcs
9745 eval $inlibc
9746
9747 : see if mbtowc exists
9748 set mbtowc d_mbtowc
9749 eval $inlibc
9750
9751 : see if memchr exists
9752 set memchr d_memchr
9753 eval $inlibc
9754
9755 : see if memcmp exists
9756 set memcmp d_memcmp
9757 eval $inlibc
9758
9759 : see if memcpy exists
9760 set memcpy d_memcpy
9761 eval $inlibc
9762
9763 : see if memmove exists
9764 set memmove d_memmove
9765 eval $inlibc
9766
9767 : see if memset exists
9768 set memset d_memset
9769 eval $inlibc
9770
9771 : see if mkdir exists
9772 set mkdir d_mkdir
9773 eval $inlibc
9774
9775 : see if mkdtemp exists
9776 set mkdtemp d_mkdtemp
9777 eval $inlibc
9778
9779 : see if mkfifo exists
9780 set mkfifo d_mkfifo
9781 eval $inlibc
9782
9783 : see if mkstemp exists
9784 set mkstemp d_mkstemp
9785 eval $inlibc
9786
9787 : see if mkstemps exists
9788 set mkstemps d_mkstemps
9789 eval $inlibc
9790
9791 : see if mktime exists
9792 set mktime d_mktime
9793 eval $inlibc
9794
9795 : see if this is a sys/mman.h system
9796 set sys/mman.h i_sysmman
9797 eval $inhdr
9798
9799 : see if mmap exists
9800 set mmap d_mmap
9801 eval $inlibc
9802 : see what shmat returns
9803 : default to something harmless
9804 mmaptype='void *'
9805 case "$i_sysmman$d_mmap" in
9806 "$define$define")
9807         $cat >mmap.c <<'END'
9808 #include <sys/mman.h>
9809 void *mmap();
9810 END
9811         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9812                 mmaptype='void *'
9813         else
9814                 mmaptype='caddr_t'
9815         fi
9816         echo "and it returns ($mmaptype)." >&4
9817         ;;
9818 esac
9819
9820
9821
9822 : see if modfl exists
9823 set modfl d_modfl
9824 eval $inlibc
9825
9826 : see if mprotect exists
9827 set mprotect d_mprotect
9828 eval $inlibc
9829
9830 : see if msgctl exists
9831 set msgctl d_msgctl
9832 eval $inlibc
9833
9834 : see if msgget exists
9835 set msgget d_msgget
9836 eval $inlibc
9837
9838 : see if msgsnd exists
9839 set msgsnd d_msgsnd
9840 eval $inlibc
9841
9842 : see if msgrcv exists
9843 set msgrcv d_msgrcv
9844 eval $inlibc
9845
9846 : see how much of the 'msg*(2)' library is present.
9847 h_msg=true
9848 echo " "
9849 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9850 *"$undef"*) h_msg=false;;
9851 esac
9852 case "$osname" in
9853 freebsd)
9854     case "`ipcs 2>&1`" in
9855     "SVID messages"*"not configured"*)
9856         echo "Your $osname does not have the msg*(2) configured." >&4
9857         h_msg=false
9858         val="$undef"
9859         set msgctl d_msgctl
9860         eval $setvar
9861         set msgget d_msgget
9862         eval $setvar
9863         set msgsnd d_msgsnd
9864         eval $setvar
9865         set msgrcv d_msgrcv
9866         eval $setvar
9867         ;;
9868     esac
9869     ;;
9870 esac
9871 : we could also check for sys/ipc.h ...
9872 if $h_msg && $test `./findhdr sys/msg.h`; then
9873         echo "You have the full msg*(2) library." >&4
9874         val="$define"
9875 else
9876         echo "You don't have the full msg*(2) library." >&4
9877         val="$undef"
9878 fi
9879 set d_msg
9880 eval $setvar
9881
9882 : see if msync exists
9883 set msync d_msync
9884 eval $inlibc
9885
9886 : see if munmap exists
9887 set munmap d_munmap
9888 eval $inlibc
9889
9890 : see if nice exists
9891 set nice d_nice
9892 eval $inlibc
9893
9894
9895 echo " "
9896 echo "Checking which 64-bit integer type we could use..." >&4
9897
9898 case "$intsize" in
9899 8) val=int
9900    set quadtype
9901    eval $setvar
9902    val='"unsigned int"'
9903    set uquadtype
9904    eval $setvar
9905    quadkind=1
9906    ;;
9907 *) case "$longsize" in
9908    8) val=long
9909       set quadtype
9910       eval $setvar
9911       val='"unsigned long"'
9912       set uquadtype
9913       eval $setvar
9914       quadkind=2
9915       ;;
9916    *) case "$d_longlong:$longlongsize" in
9917       define:8)
9918         val='"long long"'
9919         set quadtype
9920         eval $setvar
9921         val='"unsigned long long"'
9922         set uquadtype
9923         eval $setvar
9924         quadkind=3
9925         ;;
9926       *) case "$d_int64_t" in
9927          define)
9928            val=int64_t
9929            set quadtype
9930            eval $setvar
9931            val=uint64_t
9932            set uquadtype
9933            eval $setvar
9934            quadkind=4
9935            ;;
9936          esac
9937          ;;
9938       esac
9939       ;;
9940    esac
9941    ;;
9942 esac
9943
9944 case "$quadtype" in
9945 '')     echo "Alas, no 64-bit integer types in sight." >&4
9946         d_quad="$undef"
9947         ;;
9948 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
9949             verb="will"
9950         else
9951             verb="could"
9952         fi
9953         echo "We $verb use '$quadtype' for 64-bit integers." >&4
9954         d_quad="$define"
9955         ;;
9956 esac
9957
9958 : check for length of character
9959 echo " "
9960 case "$charsize" in
9961 '')
9962         echo "Checking to see how big your characters are (hey, you never know)..." >&4
9963         $cat >try.c <<'EOCP'
9964 #include <stdio.h>
9965 int main()
9966 {
9967     printf("%d\n", (int)sizeof(char));
9968     exit(0);
9969 }
9970 EOCP
9971         set try
9972         if eval $compile_ok; then
9973                 dflt=`./try`
9974         else
9975                 dflt='1'
9976                 echo "(I can't seem to compile the test program.  Guessing...)"
9977         fi
9978         ;;
9979 *)
9980         dflt="$charsize"
9981         ;;
9982 esac
9983 rp="What is the size of a character (in bytes)?"
9984 . ./myread
9985 charsize="$ans"
9986 $rm -f try.c try
9987
9988
9989 echo " "
9990 $echo "Choosing the C types to be used for Perl's internal types..." >&4
9991
9992 case "$use64bitint:$d_quad:$quadtype" in
9993 define:define:?*)
9994         ivtype="$quadtype"
9995         uvtype="$uquadtype"
9996         ivsize=8
9997         uvsize=8
9998         ;;
9999 *)      ivtype="long"
10000         uvtype="unsigned long"
10001         ivsize=$longsize
10002         uvsize=$longsize
10003         ;;
10004 esac
10005
10006 case "$uselongdouble:$d_longdbl" in
10007 define:define)
10008         nvtype="long double"
10009         nvsize=$longdblsize
10010         ;;
10011 *)      nvtype=double
10012         nvsize=$doublesize
10013         ;;
10014 esac
10015
10016 $echo "(IV will be "$ivtype", $ivsize bytes)"
10017 $echo "(UV will be "$uvtype", $uvsize bytes)"
10018 $echo "(NV will be "$nvtype", $nvsize bytes)"
10019
10020 $cat >try.c <<EOCP
10021 #$i_inttypes I_INTTYPES
10022 #ifdef I_INTTYPES
10023 #include <inttypes.h>
10024 #endif
10025 #include <stdio.h>
10026 int main() {
10027 #ifdef INT8
10028    int8_t i =  INT8_MAX;
10029   uint8_t u = UINT8_MAX;
10030   printf("int8_t\n");
10031 #endif
10032 #ifdef INT16
10033    int16_t i =  INT16_MAX;
10034   uint16_t i = UINT16_MAX;
10035   printf("int16_t\n");
10036 #endif
10037 #ifdef INT32
10038    int32_t i =  INT32_MAX;
10039   uint32_t u = UINT32_MAX;
10040   printf("int32_t\n");
10041 #endif
10042 }
10043 EOCP
10044
10045 case "$i8type" in
10046 '')     case "$charsize" in
10047         1)      i8type=char
10048                 u8type="unsigned char"
10049                 i8size=$charsize
10050                 u8size=$charsize
10051                 ;;
10052         esac
10053         ;;
10054 esac
10055 case "$i8type" in
10056 '')     set try -DINT8
10057         if eval $compile; then
10058                 case "`./try$exe_ext`" in
10059                 int8_t) i8type=int8_t
10060                         u8type=uint8_t
10061                         i8size=1
10062                         u8size=1
10063                         ;;
10064                 esac
10065         fi
10066         ;;
10067 esac
10068 case "$i8type" in
10069 '')     if $test $charsize -ge 1; then
10070                 i8type=char
10071                 u8type="unsigned char"
10072                 i8size=$charsize
10073                 u8size=$charsize
10074         fi
10075         ;;
10076 esac
10077
10078 case "$i16type" in
10079 '')     case "$shortsize" in
10080         2)      i16type=short
10081                 u16type="unsigned short"
10082                 i16size=$shortsize
10083                 u16size=$shortsize
10084                 ;;
10085         esac
10086         ;;
10087 esac
10088 case "$i16type" in
10089 '')     set try -DINT16
10090         if eval $compile; then
10091                 case "`./try$exe_ext`" in
10092                 int16_t)
10093                         i16type=int16_t
10094                         u16type=uint16_t
10095                         i16size=2
10096                         u16size=2
10097                         ;;
10098                 esac
10099         fi
10100         ;;
10101 esac
10102 case "$i16type" in
10103 '')     if $test $shortsize -ge 2; then
10104                 i16type=short
10105                 u16type="unsigned short"
10106                 i16size=$shortsize
10107                 u16size=$shortsize
10108         fi
10109         ;;
10110 esac
10111
10112 case "$i32type" in
10113 '')     case "$longsize" in
10114         4)      i32type=long
10115                 u32type="unsigned long"
10116                 i32size=$longsize
10117                 u32size=$longsize
10118                 ;;
10119         *)      case "$intsize" in
10120                 4)      i32type=int
10121                         u32type="unsigned int"
10122                         i32size=$intsize
10123                         u32size=$intsize
10124                         ;;
10125                 esac
10126                 ;;
10127         esac
10128         ;;
10129 esac
10130 case "$i32type" in
10131 '')     set try -DINT32
10132         if eval $compile; then
10133                 case "`./try$exe_ext`" in
10134                 int32_t)
10135                         i32type=int32_t
10136                         u32type=uint32_t
10137                         i32size=4
10138                         u32size=4
10139                         ;;
10140                 esac
10141         fi
10142         ;;
10143 esac
10144 case "$i32type" in
10145 '')     if $test $intsize -ge 4; then
10146                 i32type=int
10147                 u32type="unsigned int"
10148                 i32size=$intsize
10149                 u32size=$intsize
10150         fi
10151         ;;
10152 esac
10153
10154 case "$i64type" in
10155 '')     case "$d_quad:$quadtype" in
10156         define:?*)
10157                 i64type="$quadtype"
10158                 u64type="$uquadtype"
10159                 i64size=8
10160                 u64size=8
10161                 ;;
10162         esac
10163         ;;
10164 esac
10165
10166 $echo "Checking whether your NVs can preserve your UVs..." >&4
10167 $cat <<EOP >try.c
10168 #include <stdio.h>
10169 int main() {
10170     $uvtype k = ($uvtype)~0, l;
10171     $nvtype d;
10172     l = k;
10173     d = ($nvtype)l;
10174     l = ($uvtype)d;
10175     if (l == k)
10176        printf("preserve\n");
10177     exit(0);
10178 }
10179 EOP
10180 set try
10181 if eval $compile; then
10182         case "`./try$exe_ext`" in
10183         preserve) d_nv_preserves_uv="$define" ;;
10184         esac
10185 fi      
10186 case "$d_nv_preserves_uv" in
10187 $define) $echo "Yes, they can."  2>&1 ;;
10188 *)       $echo "No, they can't." 2>&1
10189          d_nv_preserves_uv="$undef"
10190          ;;
10191 esac
10192
10193 $rm -f try.* try
10194
10195 case "$d_nv_preserves_uv" in
10196 "$define") d_nv_preserved_bits=`expr $uvsize \* 8` ;;
10197 *)      $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10198         $cat <<EOP >try.c
10199 #include <stdio.h>
10200 int main() {
10201     $uvtype u = 0;
10202     int     n = 8 * $uvsize;
10203     int     i;
10204     for (i = 0; i < n; i++) {
10205       u = u << 1 | ($uvtype)1;
10206       if (($uvtype)($nvtype)u != u)
10207         break;
10208     }
10209     printf("%d\n", i);
10210     exit(0);
10211 }
10212 EOP
10213         set try
10214         if eval $compile; then
10215                 d_nv_preserved_bits="`./try$exe_ext`"
10216         fi
10217         case "$d_nv_preserved_bits" in
10218         [1-9]*) $echo "Your NVs can preserve $d_nv_preserved_bits of your NVs."  2>&1 ;;
10219         *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
10220                 d_nv_preserved_bits="$undef"
10221                 ;;
10222         esac
10223         $rm -f try.* try
10224         ;;
10225 esac
10226
10227
10228
10229 : check for off64_t
10230 echo " "
10231 echo "Checking to see if you have off64_t..." >&4
10232 $cat >try.c <<EOCP
10233 #include <sys/types.h>
10234 #include <unistd.h>
10235 int main() { off64_t x = 7; }
10236 EOCP
10237 set try
10238 if eval $compile; then
10239         val="$define"
10240         echo "You have off64_t."
10241 else
10242         val="$undef"
10243         echo "You do not have off64_t."
10244         case "$lseeksize" in
10245         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10246         esac
10247 fi
10248 $rm -f try.* try
10249 set d_off64_t
10250 eval $setvar
10251
10252 : see if POSIX threads are available
10253 set pthread.h i_pthread
10254 eval $inhdr
10255
10256
10257
10258
10259 : how to create joinable pthreads
10260 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10261         echo " "
10262         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10263         $cat >try.c <<'EOCP'
10264 #include <pthread.h>
10265 int main() {
10266     int detachstate = JOINABLE;
10267 }
10268 EOCP
10269         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10270         if eval $compile; then
10271                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10272                 val="$undef" # Yes, undef.
10273                 set d_old_pthread_create_joinable
10274                 eval $setvar
10275                 val=""
10276                 set old_pthread_create_joinable
10277                 eval $setvar
10278         else
10279                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10280                 if eval $compile; then
10281                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10282                         val="$define"
10283                         set d_old_pthread_create_joinable
10284                         eval $setvar
10285                         val=PTHREAD_CREATE_UNDETACHED
10286                         set old_pthread_create_joinable
10287                         eval $setvar
10288                 else            
10289                         set try -DJOINABLE=__UNDETACHED
10290                         if eval $compile; then
10291                                 echo "You seem to use __UNDETACHED." >&4
10292                                 val="$define"
10293                                 set d_old_pthread_create_joinable
10294                                 eval $setvar
10295                                 val=__UNDETACHED
10296                                 set old_pthread_create_joinable
10297                                 eval $setvar
10298                         else
10299                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10300                                 val="$define"
10301                                 set d_old_pthread_create_joinable
10302                                 eval $setvar
10303                                 val=0
10304                                 set old_pthread_create_joinable
10305                                 eval $setvar
10306                         fi
10307                 fi
10308         fi
10309         $rm -f try try.*
10310 else
10311     d_old_pthread_create_joinable="$undef"
10312     old_pthread_create_joinable=""
10313 fi
10314
10315 : see if pause exists
10316 set pause d_pause
10317 eval $inlibc
10318
10319 : see if pipe exists
10320 set pipe d_pipe
10321 eval $inlibc
10322
10323 : see if poll exists
10324 set poll d_poll
10325 eval $inlibc
10326
10327
10328 : see whether the various POSIXish _yields exist
10329 $cat >try.c <<EOP
10330 #include <pthread.h>
10331 #include <stdio.h>
10332 int main() {
10333 #ifdef SCHED_YIELD
10334         sched_yield();
10335 #else
10336 #ifdef PTHREAD_YIELD
10337         pthread_yield();
10338 #else
10339 #ifdef PTHREAD_YIELD_NULL
10340         pthread_yield(NULL);
10341 #endif
10342 #endif
10343 #endif
10344 }
10345 EOP
10346 : see if sched_yield exists
10347 set try -DSCHED_YIELD
10348 if eval $compile; then
10349     val="$define"
10350     sched_yield='sched_yield()'
10351 else
10352     val="$undef"
10353 fi
10354 case "$usethreads" in
10355 $define)
10356         case "$val" in
10357         $define) echo 'sched_yield() found.' >&4        ;;
10358         *)       echo 'sched_yield() NOT found.' >&4    ;;
10359         esac
10360 esac
10361 set d_sched_yield
10362 eval $setvar
10363
10364 : see if pthread_yield exists
10365 set try -DPTHREAD_YIELD
10366 if eval $compile; then
10367     val="$define"
10368     case "$sched_yield" in
10369     '') sched_yield='pthread_yield()' ;;
10370     esac
10371 else
10372     set try -DPTHREAD_YIELD_NULL
10373     if eval $compile; then
10374         val="$define"
10375         case "$sched_yield" in
10376         '') sched_yield='pthread_yield(NULL)' ;;
10377         esac
10378     else
10379         val="$undef"
10380     fi
10381 fi
10382 case "$usethreads" in
10383 $define)
10384         case "$val" in
10385         $define) echo 'pthread_yield() found.' >&4      ;;
10386         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10387         esac
10388         ;;
10389 esac
10390 set d_pthread_yield
10391 eval $setvar
10392
10393 case "$sched_yield" in
10394 '') sched_yield=undef ;;
10395 esac
10396
10397 $rm -f try try.*
10398
10399 : see if this is a pwd.h system
10400 set pwd.h i_pwd
10401 eval $inhdr
10402
10403 case "$i_pwd" in
10404 $define)
10405         xxx=`./findhdr pwd.h`
10406         $cppstdin $cppflags $cppminus < $xxx >$$.h
10407
10408         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10409                 val="$define"
10410         else
10411                 val="$undef"
10412         fi
10413         set d_pwquota
10414         eval $setvar
10415
10416         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10417                 val="$define"
10418         else
10419                 val="$undef"
10420         fi
10421         set d_pwage
10422         eval $setvar
10423
10424         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10425                 val="$define"
10426         else
10427                 val="$undef"
10428         fi
10429         set d_pwchange
10430         eval $setvar
10431
10432         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10433                 val="$define"
10434         else
10435                 val="$undef"
10436         fi
10437         set d_pwclass
10438         eval $setvar
10439
10440         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10441                 val="$define"
10442         else
10443                 val="$undef"
10444         fi
10445         set d_pwexpire
10446         eval $setvar
10447
10448         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10449                 val="$define"
10450         else
10451                 val="$undef"
10452         fi
10453         set d_pwcomment
10454         eval $setvar
10455
10456         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10457                 val="$define"
10458         else
10459                 val="$undef"
10460         fi
10461         set d_pwgecos
10462         eval $setvar
10463
10464         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10465                 val="$define"
10466         else
10467                 val="$undef"
10468         fi
10469         set d_pwpasswd
10470         eval $setvar
10471
10472         $rm -f $$.h
10473         ;;
10474 *)
10475         val="$undef"; 
10476         set d_pwquota; eval $setvar
10477         set d_pwage; eval $setvar
10478         set d_pwchange; eval $setvar
10479         set d_pwclass; eval $setvar
10480         set d_pwexpire; eval $setvar
10481         set d_pwcomment; eval $setvar
10482         set d_pwgecos; eval $setvar
10483         set d_pwpasswd; eval $setvar
10484         ;;
10485 esac
10486
10487 : see if readdir and friends exist
10488 set readdir d_readdir
10489 eval $inlibc
10490 set seekdir d_seekdir
10491 eval $inlibc
10492 set telldir d_telldir
10493 eval $inlibc
10494 set rewinddir d_rewinddir
10495 eval $inlibc
10496
10497 : see if readlink exists
10498 set readlink d_readlink
10499 eval $inlibc
10500
10501 : see if rename exists
10502 set rename d_rename
10503 eval $inlibc
10504
10505 : see if rmdir exists
10506 set rmdir d_rmdir
10507 eval $inlibc
10508
10509 : see if memory.h is available.
10510 val=''
10511 set memory.h val
10512 eval $inhdr
10513
10514 : See if it conflicts with string.h
10515 case "$val" in
10516 $define)
10517         case "$strings" in
10518         '') ;;
10519         *)
10520                 $cppstdin $cppflags $cppminus < $strings > mem.h
10521                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10522                         echo " "
10523                         echo "We won't be including <memory.h>."
10524                         val="$undef"
10525                 fi
10526                 $rm -f mem.h
10527                 ;;
10528         esac
10529 esac
10530 set i_memory
10531 eval $setvar
10532
10533 : can bcopy handle overlapping blocks?
10534 val="$undef"
10535 case "$d_bcopy" in
10536 "$define")
10537         echo " "
10538         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10539         $cat >try.c <<EOCP
10540 #$i_memory I_MEMORY
10541 #$i_stdlib I_STDLIB
10542 #$i_string I_STRING
10543 #$i_unistd I_UNISTD
10544 EOCP
10545         $cat >>try.c <<'EOCP'
10546 #include <stdio.h>
10547 #ifdef I_MEMORY
10548 #  include <memory.h>
10549 #endif
10550 #ifdef I_STDLIB
10551 #  include <stdlib.h>
10552 #endif
10553 #ifdef I_STRING
10554 #  include <string.h>
10555 #else
10556 #  include <strings.h>
10557 #endif
10558 #ifdef I_UNISTD
10559 #  include <unistd.h>  /* Needed for NetBSD */
10560 #endif
10561 int main()
10562 {
10563 char buf[128], abc[128];
10564 char *b;
10565 int len;
10566 int off;
10567 int align;
10568
10569 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10570
10571 for (align = 7; align >= 0; align--) {
10572         for (len = 36; len; len--) {
10573                 b = buf+align;
10574                 bcopy(abc, b, len);
10575                 for (off = 1; off <= len; off++) {
10576                         bcopy(b, b+off, len);
10577                         bcopy(b+off, b, len);
10578                         if (bcmp(b, abc, len))
10579                                 exit(1);
10580                 }
10581         }
10582 }
10583 exit(0);
10584 }
10585 EOCP
10586         set try
10587         if eval $compile_ok; then
10588                 if ./try 2>/dev/null; then
10589                         echo "Yes, it can."
10590                         val="$define"
10591                 else
10592                         echo "It can't, sorry."
10593                         case "$d_memmove" in
10594                         "$define") echo "But that's Ok since you have memmove()." ;;
10595                         esac
10596                 fi
10597         else
10598                 echo "(I can't compile the test program, so we'll assume not...)"
10599                 case "$d_memmove" in
10600                 "$define") echo "But that's Ok since you have memmove()." ;;
10601                 esac
10602         fi
10603         ;;
10604 esac
10605 $rm -f try.* try core
10606 set d_safebcpy
10607 eval $setvar
10608
10609 : can memcpy handle overlapping blocks?
10610 val="$undef"
10611 case "$d_memcpy" in
10612 "$define")
10613         echo " "
10614         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10615         $cat >try.c <<EOCP
10616 #$i_memory I_MEMORY
10617 #$i_stdlib I_STDLIB
10618 #$i_string I_STRING
10619 #$i_unistd I_UNISTD
10620 EOCP
10621         $cat >>try.c <<'EOCP'
10622 #include <stdio.h>
10623 #ifdef I_MEMORY
10624 #  include <memory.h>
10625 #endif
10626 #ifdef I_STDLIB
10627 #  include <stdlib.h>
10628 #endif
10629 #ifdef I_STRING
10630 #  include <string.h>
10631 #else
10632 #  include <strings.h>
10633 #endif
10634 #ifdef I_UNISTD
10635 #  include <unistd.h>  /* Needed for NetBSD */
10636 #endif
10637 int main()
10638 {
10639 char buf[128], abc[128];
10640 char *b;
10641 int len;
10642 int off;
10643 int align;
10644
10645 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10646    try to store the string in read-only memory. */
10647 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10648
10649 for (align = 7; align >= 0; align--) {
10650         for (len = 36; len; len--) {
10651                 b = buf+align;
10652                 memcpy(b, abc, len);
10653                 for (off = 1; off <= len; off++) {
10654                         memcpy(b+off, b, len);
10655                         memcpy(b, b+off, len);
10656                         if (memcmp(b, abc, len))
10657                                 exit(1);
10658                 }
10659         }
10660 }
10661 exit(0);
10662 }
10663 EOCP
10664         set try
10665         if eval $compile_ok; then
10666                 if ./try 2>/dev/null; then
10667                         echo "Yes, it can."
10668                         val="$define"
10669                 else
10670                         echo "It can't, sorry."
10671                         case "$d_memmove" in
10672                         "$define") echo "But that's Ok since you have memmove()." ;;
10673                         esac
10674                 fi
10675         else
10676                 echo "(I can't compile the test program, so we'll assume not...)"
10677                 case "$d_memmove" in
10678                 "$define") echo "But that's Ok since you have memmove()." ;;
10679                 esac
10680         fi
10681         ;;
10682 esac
10683 $rm -f try.* try core
10684 set d_safemcpy
10685 eval $setvar
10686
10687 : can memcmp be trusted to compare relative magnitude?
10688 val="$undef"
10689 case "$d_memcmp" in
10690 "$define")
10691         echo " "
10692         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10693         $cat >try.c <<EOCP
10694 #$i_memory I_MEMORY
10695 #$i_stdlib I_STDLIB
10696 #$i_string I_STRING
10697 #$i_unistd I_UNISTD
10698 EOCP
10699         $cat >>try.c <<'EOCP'
10700 #include <stdio.h>
10701 #ifdef I_MEMORY
10702 #  include <memory.h>
10703 #endif
10704 #ifdef I_STDLIB
10705 #  include <stdlib.h>
10706 #endif
10707 #ifdef I_STRING
10708 #  include <string.h>
10709 #else
10710 #  include <strings.h>
10711 #endif
10712 #ifdef I_UNISTD
10713 #  include <unistd.h>  /* Needed for NetBSD */
10714 #endif
10715 int main()
10716 {
10717 char a = -1;
10718 char b = 0;
10719 if ((a < b) && memcmp(&a, &b, 1) < 0)
10720         exit(1);
10721 exit(0);
10722 }
10723 EOCP
10724         set try
10725         if eval $compile_ok; then
10726                 if ./try 2>/dev/null; then
10727                         echo "Yes, it can."
10728                         val="$define"
10729                 else
10730                         echo "No, it can't (it uses signed chars)."
10731                 fi
10732         else
10733                 echo "(I can't compile the test program, so we'll assume not...)"
10734         fi
10735         ;;
10736 esac
10737 $rm -f try.* try core
10738 set d_sanemcmp
10739 eval $setvar
10740
10741 : see if select exists
10742 set select d_select
10743 eval $inlibc
10744
10745 : see if semctl exists
10746 set semctl d_semctl
10747 eval $inlibc
10748
10749 : see if semget exists
10750 set semget d_semget
10751 eval $inlibc
10752
10753 : see if semop exists
10754 set semop d_semop
10755 eval $inlibc
10756
10757 : see how much of the 'sem*(2)' library is present.
10758 h_sem=true
10759 echo " "
10760 case "$d_semctl$d_semget$d_semop" in
10761 *"$undef"*) h_sem=false;;
10762 esac
10763 case "$osname" in
10764 freebsd)
10765     case "`ipcs 2>&1`" in
10766     "SVID messages"*"not configured"*)
10767         echo "Your $osname does not have the sem*(2) configured." >&4
10768         h_sem=false
10769         val="$undef"
10770         set semctl d_semctl
10771         eval $setvar
10772         set semget d_semget
10773         eval $setvar
10774         set semop d_semop
10775         eval $setvar
10776         ;;
10777     esac
10778     ;;
10779 esac
10780 : we could also check for sys/ipc.h ...
10781 if $h_sem && $test `./findhdr sys/sem.h`; then
10782         echo "You have the full sem*(2) library." >&4
10783         val="$define"
10784 else
10785         echo "You don't have the full sem*(2) library." >&4
10786         val="$undef"
10787 fi
10788 set d_sem
10789 eval $setvar
10790
10791 : see whether sys/sem.h defines union semun
10792 echo " "
10793 $cat > try.c <<'END'
10794 #include <sys/types.h>
10795 #include <sys/ipc.h>
10796 #include <sys/sem.h>
10797 int main () { union semun semun; semun.buf = 0; }
10798 END
10799 set try
10800 if eval $compile; then
10801     echo "You have union semun in <sys/sem.h>." >&4
10802     val="$define"
10803 else
10804     echo "You do not have union semun in <sys/sem.h>." >&4
10805     val="$undef"
10806 fi
10807 $rm -f try try.c try.h
10808 set d_union_semun
10809 eval $setvar
10810
10811 : see how to do semctl IPC_STAT
10812 case "$d_sem" in
10813 $define)
10814     : see whether semctl IPC_STAT can use union semun
10815     echo " "
10816     $cat > try.h <<END
10817 #ifndef S_IRUSR
10818 #   ifdef S_IREAD
10819 #       define S_IRUSR S_IREAD
10820 #       define S_IWUSR S_IWRITE
10821 #       define S_IXUSR S_IEXEC
10822 #   else
10823 #       define S_IRUSR 0400
10824 #       define S_IWUSR 0200
10825 #       define S_IXUSR 0100
10826 #   endif
10827 #   define S_IRGRP (S_IRUSR>>3)
10828 #   define S_IWGRP (S_IWUSR>>3)
10829 #   define S_IXGRP (S_IXUSR>>3)
10830 #   define S_IROTH (S_IRUSR>>6)
10831 #   define S_IWOTH (S_IWUSR>>6)
10832 #   define S_IXOTH (S_IXUSR>>6)
10833 #endif
10834 #ifndef S_IRWXU
10835 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10836 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10837 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10838 #endif
10839 END
10840
10841     $cat > try.c <<END
10842 #include <sys/types.h>
10843 #include <sys/ipc.h>
10844 #include <sys/sem.h>
10845 #include <sys/stat.h>
10846 #include <stdio.h>
10847 #include <errno.h>
10848 #include "try.h"
10849 #ifndef errno
10850 extern int errno;
10851 #endif
10852 #$d_union_semun HAS_UNION_SEMUN
10853 int main() {
10854     union semun
10855 #ifndef HAS_UNION_SEMUN
10856     {
10857         int val;
10858         struct semid_ds *buf;
10859         unsigned short *array;
10860     }
10861 #endif
10862     arg;
10863     int sem, st;
10864
10865 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10866     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10867     if (sem > -1) {
10868         struct semid_ds argbuf;
10869         arg.buf = &argbuf;
10870 #       ifdef IPC_STAT
10871         st = semctl(sem, 0, IPC_STAT, arg);
10872         if (st == 0)
10873             printf("semun\n");
10874         else
10875 #       endif /* IPC_STAT */
10876             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10877 #       ifdef IPC_RMID
10878         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10879 #       endif /* IPC_RMID */
10880             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10881     } else
10882 #endif /* IPC_PRIVATE && ... */
10883         printf("semget failed: errno = %d\n", errno);
10884   return 0;
10885 }
10886 END
10887     val="$undef"
10888     set try
10889     if eval $compile; then
10890         xxx=`./try`
10891         case "$xxx" in
10892         semun) val="$define" ;;
10893         esac
10894     fi
10895     $rm -f try try.c
10896     set d_semctl_semun
10897     eval $setvar
10898     case "$d_semctl_semun" in
10899     $define)
10900         echo "You can use union semun for semctl IPC_STAT." >&4
10901         also='also'
10902         ;;
10903     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10904         also=''
10905         ;;
10906     esac
10907
10908     : see whether semctl IPC_STAT can use struct semid_ds pointer
10909     $cat > try.c <<'END'
10910 #include <sys/types.h>
10911 #include <sys/ipc.h>
10912 #include <sys/sem.h>
10913 #include <sys/stat.h>
10914 #include "try.h"
10915 #include <stdio.h>
10916 #include <errno.h>
10917 #ifndef errno
10918 extern int errno;
10919 #endif
10920 int main() {
10921     struct semid_ds arg;
10922     int sem, st;
10923
10924 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
10925     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10926     if (sem > -1) {
10927 #       ifdef IPC_STAT
10928         st = semctl(sem, 0, IPC_STAT, &arg);
10929         if (st == 0)
10930             printf("semid_ds\n");
10931         else
10932 #       endif /* IPC_STAT */
10933             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10934 #       ifdef IPC_RMID
10935         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10936 #       endif /* IPC_RMID */
10937             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10938     } else
10939 #endif /* IPC_PRIVATE && ... */
10940         printf("semget failed: errno = %d\n", errno);
10941
10942     return 0;
10943 }
10944 END
10945     val="$undef"
10946     set try
10947     if eval $compile; then
10948         xxx=`./try`
10949         case "$xxx" in
10950         semid_ds) val="$define" ;;
10951         esac
10952     fi
10953     $rm -f try try.c
10954     set d_semctl_semid_ds
10955     eval $setvar
10956     case "$d_semctl_semid_ds" in
10957     $define)
10958         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10959         ;;
10960     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10961         ;;
10962     esac
10963     $rm -f try.h
10964     ;;
10965 *)  val="$undef"
10966
10967     # We do not have the full sem*(2) library, so assume we can not
10968     # use either.
10969
10970     set d_semctl_semun
10971     eval $setvar
10972
10973     set d_semctl_semid_ds
10974     eval $setvar
10975     ;;
10976 esac
10977
10978 : see if setegid exists
10979 set setegid d_setegid
10980 eval $inlibc
10981
10982 : see if seteuid exists
10983 set seteuid d_seteuid
10984 eval $inlibc
10985
10986 : see if setgrent exists
10987 set setgrent d_setgrent
10988 eval $inlibc
10989
10990 : see if sethostent exists
10991 set sethostent d_sethent
10992 eval $inlibc
10993
10994 : see if setlinebuf exists
10995 set setlinebuf d_setlinebuf
10996 eval $inlibc
10997
10998 : see if setlocale exists
10999 set setlocale d_setlocale
11000 eval $inlibc
11001
11002 : see if setnetent exists
11003 set setnetent d_setnent
11004 eval $inlibc
11005
11006 : see if setprotoent exists
11007 set setprotoent d_setpent
11008 eval $inlibc
11009
11010 : see if setpgid exists
11011 set setpgid d_setpgid
11012 eval $inlibc
11013
11014 : see if setpgrp2 exists
11015 set setpgrp2 d_setpgrp2
11016 eval $inlibc
11017
11018 : see if setpriority exists
11019 set setpriority d_setprior
11020 eval $inlibc
11021
11022 : see if setpwent exists
11023 set setpwent d_setpwent
11024 eval $inlibc
11025
11026 : see if setregid exists
11027 set setregid d_setregid
11028 eval $inlibc
11029 set setresgid d_setresgid
11030 eval $inlibc
11031
11032 : see if setreuid exists
11033 set setreuid d_setreuid
11034 eval $inlibc
11035 set setresuid d_setresuid
11036 eval $inlibc
11037
11038 : see if setrgid exists
11039 set setrgid d_setrgid
11040 eval $inlibc
11041
11042 : see if setruid exists
11043 set setruid d_setruid
11044 eval $inlibc
11045
11046 : see if setservent exists
11047 set setservent d_setsent
11048 eval $inlibc
11049
11050 : see if setsid exists
11051 set setsid d_setsid
11052 eval $inlibc
11053
11054 : see if setvbuf exists
11055 set setvbuf d_setvbuf
11056 eval $inlibc
11057
11058 : see if sfio.h is available
11059 set sfio.h i_sfio
11060 eval $inhdr
11061
11062
11063 : see if sfio library is available
11064 case "$i_sfio" in
11065 $define)
11066         val=''
11067         set sfreserve val
11068         eval $inlibc
11069         ;;
11070 *)
11071         val="$undef"
11072         ;;
11073 esac
11074 : Ok, but do we want to use it.
11075 case "$val" in
11076 $define)
11077         case "$usesfio" in
11078         true|$define|[yY]*) dflt='y';;
11079         *) dflt='n';;
11080         esac
11081         echo "$package can use the sfio library, but it is experimental."
11082         rp="You seem to have sfio available, do you want to try using it?"
11083         . ./myread
11084         case "$ans" in
11085         y|Y) ;;
11086         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
11087                 val="$undef"
11088                 : Remove sfio from list of libraries to use
11089                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11090                 shift
11091                 libs="$*"
11092                 echo "libs = $libs" >&4
11093                 ;;
11094         esac
11095         ;;
11096 *)      case "$usesfio" in
11097         true|$define|[yY]*)
11098                 echo "Sorry, cannot find sfio on this machine" >&4
11099                 echo "Ignoring your setting of usesfio=$usesfio" >&4
11100                 ;;
11101         esac
11102         ;;
11103 esac
11104 set d_sfio
11105 eval $setvar
11106 case "$d_sfio" in
11107 $define) usesfio='true';;
11108 *) usesfio='false';;
11109 esac
11110
11111 : see if shmctl exists
11112 set shmctl d_shmctl
11113 eval $inlibc
11114
11115 : see if shmget exists
11116 set shmget d_shmget
11117 eval $inlibc
11118
11119 : see if shmat exists
11120 set shmat d_shmat
11121 eval $inlibc
11122 : see what shmat returns
11123 case "$d_shmat" in
11124 "$define")
11125         $cat >shmat.c <<'END'
11126 #include <sys/shm.h>
11127 void *shmat();
11128 END
11129         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11130                 shmattype='void *'
11131         else
11132                 shmattype='char *'
11133         fi
11134         echo "and it returns ($shmattype)." >&4
11135         : see if a prototype for shmat is available
11136         xxx=`./findhdr sys/shm.h`
11137         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11138         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11139                 val="$define"
11140         else
11141                 val="$undef"
11142         fi
11143         $rm -f shmat.[co]
11144         ;;
11145 *)
11146         val="$undef"
11147         ;;
11148 esac
11149 set d_shmatprototype
11150 eval $setvar
11151
11152 : see if shmdt exists
11153 set shmdt d_shmdt
11154 eval $inlibc
11155
11156 : see how much of the 'shm*(2)' library is present.
11157 h_shm=true
11158 echo " "
11159 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11160 *"$undef"*) h_shm=false;;
11161 esac
11162 case "$osname" in
11163 freebsd)
11164     case "`ipcs 2>&1`" in
11165     "SVID shared memory"*"not configured"*)
11166         echo "Your $osname does not have the shm*(2) configured." >&4
11167         h_shm=false
11168         val="$undef"
11169         set shmctl d_shmctl
11170         evat $setvar
11171         set shmget d_shmget
11172         evat $setvar
11173         set shmat d_shmat
11174         evat $setvar
11175         set shmdt d_shmdt
11176         evat $setvar
11177         ;;
11178     esac
11179     ;;
11180 esac
11181 : we could also check for sys/ipc.h ...
11182 if $h_shm && $test `./findhdr sys/shm.h`; then
11183         echo "You have the full shm*(2) library." >&4
11184         val="$define"
11185 else
11186         echo "You don't have the full shm*(2) library." >&4
11187         val="$undef"
11188 fi
11189 set d_shm
11190 eval $setvar
11191
11192 echo " "
11193 : see if we have sigaction
11194 if set sigaction val -f d_sigaction; eval $csym; $val; then
11195         echo 'sigaction() found.' >&4
11196         $cat > try.c <<'EOP'
11197 #include <stdio.h>
11198 #include <sys/types.h>
11199 #include <signal.h>
11200 int main()
11201 {
11202     struct sigaction act, oact;
11203     act.sa_flags = 0;
11204     oact.sa_handler = 0;
11205     /* so that act and oact are used */
11206     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11207 }
11208 EOP
11209         set try
11210         if eval $compile_ok; then
11211                 val="$define"
11212         else
11213                 echo "But you don't seem to have a useable struct sigaction." >&4
11214                 val="$undef"
11215         fi
11216 else
11217         echo 'sigaction NOT found.' >&4
11218         val="$undef"
11219 fi
11220 set d_sigaction; eval $setvar
11221 $rm -f try try$_o try.c
11222
11223 : see if sigsetjmp exists
11224 echo " "
11225 case "$d_sigsetjmp" in
11226 '')
11227         $cat >try.c <<'EOP'
11228 #include <setjmp.h>
11229 sigjmp_buf env;
11230 int set = 1;
11231 int main()
11232 {
11233         if (sigsetjmp(env,1))
11234                 exit(set);
11235         set = 0;
11236         siglongjmp(env, 1);
11237         exit(1);
11238 }
11239 EOP
11240         set try
11241         if eval $compile; then
11242                 if ./try >/dev/null 2>&1; then
11243                         echo "POSIX sigsetjmp found." >&4
11244                         val="$define"
11245                 else
11246                         $cat >&4 <<EOM
11247 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11248 I'll ignore them.
11249 EOM
11250                         val="$undef"
11251                 fi
11252         else
11253                 echo "sigsetjmp not found." >&4
11254                 val="$undef"
11255         fi
11256         ;;
11257 *) val="$d_sigsetjmp"
11258         case "$d_sigsetjmp" in
11259         $define) echo "POSIX sigsetjmp found." >&4;;
11260         $undef) echo "sigsetjmp not found." >&4;;
11261         esac
11262         ;;
11263 esac
11264 set d_sigsetjmp
11265 eval $setvar
11266 $rm -f try.c try
11267
11268 : see if sys/stat.h is available
11269 set sys/stat.h i_sysstat
11270 eval $inhdr
11271
11272
11273 : see if stat knows about block sizes
11274 echo " "
11275 echo "Checking to see if your struct stat has st_blocks field..." >&4
11276 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11277 eval $hasfield
11278
11279
11280 : see if this is a sys/vfs.h system
11281 set sys/vfs.h i_sysvfs
11282 eval $inhdr
11283
11284
11285 : see if this is a sys/statfs.h system
11286 set sys/statfs.h i_sysstatfs
11287 eval $inhdr
11288
11289
11290 echo " "
11291 echo "Checking to see if your system supports struct statfs..." >&4
11292 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
11293 eval $hasstruct
11294 case "$d_statfs_s" in
11295 "$define")      echo "Yes, it does."   ;;
11296 *)              echo "No, it doesn't." ;;
11297 esac
11298
11299
11300
11301 : see if struct statfs knows about f_flags
11302 case "$d_statfs_s" in
11303 define) 
11304         echo " "
11305         echo "Checking to see if your struct statfs has f_flags field..." >&4
11306         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
11307         eval $hasfield
11308         ;;
11309 *)      val="$undef"
11310         set d_statfs_f_flags
11311         eval $setvar
11312         ;;
11313 esac
11314 case "$d_statfs_f_flags" in
11315 "$define")      echo "Yes, it does."   ;;
11316 *)              echo "No, it doesn't." ;;
11317 esac
11318
11319 : see if _ptr and _cnt from stdio act std
11320 echo " "
11321 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11322         echo "(Looks like you have stdio.h from Linux.)"
11323         case "$stdio_ptr" in
11324         '') stdio_ptr='((fp)->_IO_read_ptr)'
11325                 ptr_lval=$define
11326                 ;;
11327         *)      ptr_lval=$d_stdio_ptr_lval;;
11328         esac
11329         case "$stdio_cnt" in
11330         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11331                 cnt_lval=$undef
11332                 ;;
11333         *)      cnt_lval=$d_stdio_cnt_lval;;
11334         esac
11335         case "$stdio_base" in
11336         '') stdio_base='((fp)->_IO_read_base)';;
11337         esac
11338         case "$stdio_bufsiz" in
11339         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11340         esac
11341 else
11342         case "$stdio_ptr" in
11343         '') stdio_ptr='((fp)->_ptr)'
11344                 ptr_lval=$define
11345                 ;;
11346         *)      ptr_lval=$d_stdio_ptr_lval;;
11347         esac
11348         case "$stdio_cnt" in
11349         '') stdio_cnt='((fp)->_cnt)'
11350                 cnt_lval=$define
11351                 ;;
11352         *)      cnt_lval=$d_stdio_cnt_lval;;
11353         esac
11354         case "$stdio_base" in
11355         '') stdio_base='((fp)->_base)';;
11356         esac
11357         case "$stdio_bufsiz" in
11358         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11359         esac
11360 fi
11361 : test whether _ptr and _cnt really work
11362 echo "Checking how std your stdio is..." >&4
11363 $cat >try.c <<EOP
11364 #include <stdio.h>
11365 #define FILE_ptr(fp)    $stdio_ptr
11366 #define FILE_cnt(fp)    $stdio_cnt
11367 int main() {
11368         FILE *fp = fopen("try.c", "r");
11369         char c = getc(fp);
11370         if (
11371                 18 <= FILE_cnt(fp) &&
11372                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11373         )
11374                 exit(0);
11375         exit(1);
11376 }
11377 EOP
11378 val="$undef"
11379 set try
11380 if eval $compile; then
11381         if ./try; then
11382                 echo "Your stdio acts pretty std."
11383                 val="$define"
11384         else
11385                 echo "Your stdio isn't very std."
11386         fi
11387 else
11388         echo "Your stdio doesn't appear very std."
11389 fi
11390 $rm -f try.c try
11391 set d_stdstdio
11392 eval $setvar
11393
11394 : Can _ptr be used as an lvalue?
11395 case "$d_stdstdio$ptr_lval" in
11396 $define$define) val=$define ;;
11397 *) val=$undef ;;
11398 esac
11399 set d_stdio_ptr_lval
11400 eval $setvar
11401
11402 : Can _cnt be used as an lvalue?
11403 case "$d_stdstdio$cnt_lval" in
11404 $define$define) val=$define ;;
11405 *) val=$undef ;;
11406 esac
11407 set d_stdio_cnt_lval
11408 eval $setvar
11409
11410 : see if _base is also standard
11411 val="$undef"
11412 case "$d_stdstdio" in
11413 $define)
11414         $cat >try.c <<EOP
11415 #include <stdio.h>
11416 #define FILE_base(fp)   $stdio_base
11417 #define FILE_bufsiz(fp) $stdio_bufsiz
11418 int main() {
11419         FILE *fp = fopen("try.c", "r");
11420         char c = getc(fp);
11421         if (
11422                 19 <= FILE_bufsiz(fp) &&
11423                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11424         )
11425                 exit(0);
11426         exit(1);
11427 }
11428 EOP
11429         set try
11430         if eval $compile; then
11431                 if ./try; then
11432                         echo "And its _base field acts std."
11433                         val="$define"
11434                 else
11435                         echo "But its _base field isn't std."
11436                 fi
11437         else
11438                 echo "However, it seems to be lacking the _base field."
11439         fi
11440         $rm -f try.c try
11441         ;;
11442 esac
11443 set d_stdiobase
11444 eval $setvar
11445
11446 $cat >&4 <<EOM
11447 Checking how to access stdio streams by file descriptor number...
11448 EOM
11449 case "$stdio_stream_array" in
11450 '')     $cat >try.c <<EOCP
11451 #include <stdio.h>
11452 int main() {
11453   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11454     printf("yes\n");
11455 }
11456 EOCP
11457         for s in _iob __iob __sF
11458         do
11459                 set try -DSTDIO_STREAM_ARRAY=$s
11460                 if eval $compile; then
11461                         case "`./try$exe_ext`" in
11462                         yes)    stdio_stream_array=$s; break ;;
11463                         esac
11464                 fi
11465         done
11466         $rm -f try.* try$exe_ext
11467 esac
11468 case "$stdio_stream_array" in
11469 '')     $cat >&4 <<EOM
11470 I can't figure out how to access stdio streams by file descriptor number.
11471 EOM
11472         d_stdio_stream_array="$undef"
11473         ;;
11474 *)      $cat >&4 <<EOM
11475 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11476 EOM
11477         d_stdio_stream_array="$define"
11478         ;;
11479 esac
11480
11481 : see if strcoll exists
11482 set strcoll d_strcoll
11483 eval $inlibc
11484
11485 : check for structure copying
11486 echo " "
11487 echo "Checking to see if your C compiler can copy structs..." >&4
11488 $cat >try.c <<'EOCP'
11489 int main()
11490 {
11491         struct blurfl {
11492                 int dyick;
11493         } foo, bar;
11494
11495         foo = bar;
11496 }
11497 EOCP
11498 if $cc -c try.c >/dev/null 2>&1 ; then
11499         val="$define"
11500         echo "Yup, it can."
11501 else
11502         val="$undef"
11503         echo "Nope, it can't."
11504 fi
11505 set d_strctcpy
11506 eval $setvar
11507 $rm -f try.*
11508
11509 : see if strerror and/or sys_errlist[] exist
11510 echo " "
11511 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11512     if set strerror val -f d_strerror; eval $csym; $val; then
11513                 echo 'strerror() found.' >&4
11514                 d_strerror="$define"
11515                 d_strerrm='strerror(e)'
11516                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11517                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11518                         d_syserrlst="$define"
11519                 else
11520                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11521                         d_syserrlst="$undef"
11522                 fi
11523     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11524                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11525                 echo 'strerror() found in string header.' >&4
11526                 d_strerror="$define"
11527                 d_strerrm='strerror(e)'
11528                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11529                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11530                                 d_syserrlst="$define"
11531                 else
11532                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11533                         d_syserrlst="$undef"
11534                 fi
11535     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11536                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11537                 d_strerror="$undef"
11538                 d_syserrlst="$define"
11539                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11540     else
11541                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11542                 d_strerror="$undef"
11543                 d_syserrlst="$undef"
11544                 d_strerrm='"unknown"'
11545     fi
11546 fi
11547
11548 : see if strtod exists
11549 set strtod d_strtod
11550 eval $inlibc
11551
11552 : see if strtol exists
11553 set strtol d_strtol
11554 eval $inlibc
11555
11556 : see if strtold exists
11557 set strtold d_strtold
11558 eval $inlibc
11559
11560 : see if strtoll exists
11561 set strtoll d_strtoll
11562 eval $inlibc
11563
11564 case "$d_longlong-$d_strtoll" in
11565 "$define-$define")
11566         $cat <<EOM
11567 Checking whether your strtoll() works okay...
11568 EOM
11569         $cat >try.c <<'EOCP'
11570 #include <errno.h>
11571 #ifdef __hpux
11572 #define strtoll __strtoll
11573 #endif
11574 #include <stdio.h>
11575 extern long long int strtoll(char *s, char **, int); 
11576 static int bad = 0;
11577 int check(char *s, long long ell, int een) {
11578         long long gll;
11579         errno = 0;
11580         gll = strtoll(s, 0, 10);
11581         if (!((gll == ell) && (errno == een)))
11582                 bad++;
11583 }
11584 int main() {
11585         check(" 1",                                      1LL, 0);
11586         check(" 0",                                      0LL, 0);
11587         check("-1",                                     -1LL, 0);
11588         check("-9223372036854775808", -9223372036854775808LL, 0);
11589         check("-9223372036854775808", -9223372036854775808LL, 0);
11590         check(" 9223372036854775807",  9223372036854775807LL, 0);
11591         check("-9223372036854775808", -9223372036854775808LL, 0);
11592         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
11593         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11594         if (!bad)
11595                 printf("ok\n");
11596 }
11597 EOCP
11598         set try
11599         if eval $compile; then
11600                 case "`./try`" in
11601                 ok) echo "Your strtoll() seems to be working okay." ;;
11602                 *) cat <<EOM >&4
11603 Your strtoll() doesn't seem to be working okay.
11604 EOM
11605                    d_strtoll="$undef"
11606                    ;;
11607                 esac
11608         fi
11609         ;;
11610 esac
11611
11612 : see if strtoul exists
11613 set strtoul d_strtoul
11614 eval $inlibc
11615
11616 : see if strtoull exists
11617 set strtoull d_strtoull
11618 eval $inlibc
11619
11620 case "$d_longlong-$d_strtoull" in
11621 "$define-$define")
11622         $cat <<EOM
11623 Checking whether your strtoull() works okay...
11624 EOM
11625         $cat >try.c <<'EOCP'
11626 #include <errno.h>
11627 #ifdef __hpux
11628 #define strtoull __strtoull
11629 #endif
11630 #include <stdio.h>
11631 extern unsigned long long int strtoull(char *s, char **, int); 
11632 static int bad = 0;
11633 int check(char *s, long long eull, int een) {
11634         long long gull;
11635         errno = 0;
11636         gull = strtoull(s, 0, 10);
11637         if (!((gull == eull) && (errno == een)))
11638                 bad++;
11639 }
11640 int main() {
11641         check(" 1",                                       1LL, 0);
11642         check(" 0",                                       0LL, 0);
11643         check("18446744073709551615", 18446744073709551615ULL, 0);
11644         check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11645         if (!bad)
11646                 printf("ok\n");
11647 }
11648 EOCP
11649         set try
11650         if eval $compile; then
11651                 case "`./try`" in
11652                 ok) echo "Your strtoull() seems to be working okay." ;;
11653                 *) cat <<EOM >&4
11654 Your strtoull() doesn't seem to be working okay.
11655 EOM
11656                    d_strtoull="$undef"
11657                    ;;
11658                 esac
11659         fi
11660         ;;
11661 esac
11662
11663 : see if strtouq exists
11664 set strtouq d_strtouq
11665 eval $inlibc
11666
11667 : see if strxfrm exists
11668 set strxfrm d_strxfrm
11669 eval $inlibc
11670
11671 : see if symlink exists
11672 set symlink d_symlink
11673 eval $inlibc
11674
11675 : see if syscall exists
11676 set syscall d_syscall
11677 eval $inlibc
11678
11679 : see if sysconf exists
11680 set sysconf d_sysconf
11681 eval $inlibc
11682
11683 : see if system exists
11684 set system d_system
11685 eval $inlibc
11686
11687 : see if tcgetpgrp exists
11688 set tcgetpgrp d_tcgetpgrp
11689 eval $inlibc
11690
11691 : see if tcsetpgrp exists
11692 set tcsetpgrp d_tcsetpgrp
11693 eval $inlibc
11694
11695 : see if prototype for telldir is available
11696 echo " "
11697 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11698 eval $hasproto
11699
11700 : see if this is a sys/times.h system
11701 set sys/times.h i_systimes
11702 eval $inhdr
11703
11704 : see if times exists
11705 echo " "
11706 if set times val -f d_times; eval $csym; $val; then
11707         echo 'times() found.' >&4
11708         d_times="$define"
11709         inc=''
11710         case "$i_systimes" in
11711         "$define") inc='sys/times.h';;
11712         esac
11713         rp="What is the type returned by times() on this system?"
11714         set clock_t clocktype long stdio.h sys/types.h $inc
11715         eval $typedef_ask
11716 else
11717         echo 'times() NOT found, hope that will do.' >&4
11718         d_times="$undef"
11719         clocktype='int'
11720 fi
11721
11722 : see if truncate exists
11723 set truncate d_truncate
11724 eval $inlibc
11725
11726 : see if tzname[] exists
11727 echo " "
11728 if set tzname val -a d_tzname; eval $csym; $val; then
11729         val="$define"
11730         echo 'tzname[] found.' >&4
11731 else
11732         val="$undef"
11733         echo 'tzname[] NOT found.' >&4
11734 fi
11735 set d_tzname
11736 eval $setvar
11737
11738 : see if umask exists
11739 set umask d_umask
11740 eval $inlibc
11741
11742 : see if ustat exists
11743 set ustat d_ustat
11744 eval $inlibc
11745
11746 : backward compatibility for d_hvfork
11747 if test X$d_hvfork != X; then
11748         d_vfork="$d_hvfork"
11749         d_hvfork=''
11750 fi
11751 : see if there is a vfork
11752 val=''
11753 set vfork val
11754 eval $inlibc
11755
11756 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11757 : perl on Solaris 2.x, and probably elsewhere.
11758 case "$val" in
11759 $define)
11760         echo " "
11761         case "$usevfork" in
11762         false) dflt='n';;
11763         *) dflt='y';;
11764         esac
11765         cat <<'EOM'
11766  
11767 Perl can only use a vfork() that doesn't suffer from strict
11768 restrictions on calling functions or modifying global data in
11769 the child.  For example, glibc-2.1 contains such a vfork()
11770 that is unsuitable.  If your system provides a proper fork()
11771 call, chances are that you do NOT want perl to use vfork().
11772
11773 EOM
11774         rp="Do you still want to use vfork()?"
11775         . ./myread
11776         case "$ans" in
11777         y|Y) ;;
11778         *)
11779                 echo "Ok, we won't use vfork()."
11780                 val="$undef"
11781                 ;;
11782         esac
11783         ;;
11784 esac
11785 set d_vfork
11786 eval $setvar
11787 case "$d_vfork" in
11788 $define) usevfork='true';;
11789 *) usevfork='false';;
11790 esac
11791
11792 : see if this is an sysdir system
11793 set sys/dir.h i_sysdir
11794 eval $inhdr
11795
11796 : see if this is an sysndir system
11797 set sys/ndir.h i_sysndir
11798 eval $inhdr
11799
11800 : see if closedir exists
11801 set closedir d_closedir
11802 eval $inlibc
11803
11804 case "$d_closedir" in
11805 "$define")
11806         echo " "
11807         echo "Checking whether closedir() returns a status..." >&4
11808         cat > closedir.c <<EOM
11809 #$i_dirent I_DIRENT             /**/
11810 #$i_sysdir I_SYS_DIR            /**/
11811 #$i_sysndir I_SYS_NDIR          /**/
11812 #$i_systypes I_SYS_TYPES        /**/
11813
11814 #if defined(I_SYS_TYPES)
11815 #include <sys/types.h>
11816 #endif
11817 #if defined(I_DIRENT)
11818 #include <dirent.h>
11819 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11820 #include <sys/dir.h>
11821 #endif
11822 #else
11823 #ifdef I_SYS_NDIR
11824 #include <sys/ndir.h>
11825 #else
11826 #ifdef I_SYS_DIR
11827 #ifdef hp9000s500
11828 #include <ndir.h>       /* may be wrong in the future */
11829 #else
11830 #include <sys/dir.h>
11831 #endif
11832 #endif
11833 #endif
11834 #endif 
11835 int main() { return closedir(opendir(".")); }
11836 EOM
11837         set closedir
11838         if eval $compile_ok; then
11839                 if ./closedir > /dev/null 2>&1 ; then
11840                         echo "Yes, it does."
11841                         val="$undef"
11842                 else
11843                         echo "No, it doesn't."
11844                         val="$define"
11845                 fi
11846         else
11847                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11848                 val="$define"
11849         fi
11850         ;;
11851 *)
11852         val="$undef";
11853         ;;
11854 esac
11855 set d_void_closedir
11856 eval $setvar
11857 $rm -f closedir*
11858 : check for volatile keyword
11859 echo " "
11860 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11861 $cat >try.c <<'EOCP'
11862 int main()
11863 {
11864         typedef struct _goo_struct goo_struct;
11865         goo_struct * volatile goo = ((goo_struct *)0);
11866         struct _goo_struct {
11867                 long long_int;
11868                 int reg_int;
11869                 char char_var;
11870         };
11871         typedef unsigned short foo_t;
11872         char *volatile foo;
11873         volatile int bar;
11874         volatile foo_t blech;
11875         foo = foo;
11876 }
11877 EOCP
11878 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11879         val="$define"
11880         echo "Yup, it does."
11881 else
11882         val="$undef"
11883         echo "Nope, it doesn't."
11884 fi
11885 set d_volatile
11886 eval $setvar
11887 $rm -f try.*
11888
11889 : see if there is a wait4
11890 set wait4 d_wait4
11891 eval $inlibc
11892
11893 : see if waitpid exists
11894 set waitpid d_waitpid
11895 eval $inlibc
11896
11897 : see if wcstombs exists
11898 set wcstombs d_wcstombs
11899 eval $inlibc
11900
11901 : see if wctomb exists
11902 set wctomb d_wctomb
11903 eval $inlibc
11904
11905 : preserve RCS keywords in files with variable substitution, grrr
11906 Date='$Date'
11907 Id='$Id'
11908 Log='$Log'
11909 RCSfile='$RCSfile'
11910 Revision='$Revision'
11911
11912 case "$crosscompile" in
11913 ''|[nN]*) crosscompile="$undef" ;;
11914 esac
11915
11916 case "$osname" in
11917 next|rhapsody|darwin) multiarch="$define" ;;
11918 esac
11919 case "$multiarch" in
11920 ''|[nN]*) multiarch="$undef" ;;
11921 esac
11922
11923 : check for alignment requirements
11924 echo " "
11925 case "$crosscompile$multiarch" in
11926 *$define*)
11927         $cat <<EOM
11928 You seem to be either cross-compiling or doing a multiarchitecture build,
11929 skipping the memory alignment check.
11930
11931 EOM
11932         case "$alignbytes" in
11933         '') alignbytes=8 ;;
11934         esac
11935         ;;
11936 *)
11937         case "$alignbytes" in
11938         '') echo "Checking alignment constraints..." >&4
11939                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
11940                         $cat >try.c <<'EOCP'
11941 typedef long double NV;
11942 EOCP
11943                 else
11944                         $cat >try.c <<'EOCP'
11945 typedef double NV;
11946 EOCP
11947                 fi
11948                 $cat >>try.c <<'EOCP'
11949 #include <stdio.h>
11950 struct foobar {
11951         char foo;
11952         NV bar;
11953 } try_algn;
11954 int main()
11955 {
11956     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11957     return(0);
11958 }
11959 EOCP
11960                 set try
11961                 if eval $compile_ok; then
11962                         dflt=`./try`
11963                 else
11964                         dflt='8'
11965                         echo "(I can't seem to compile the test program...)"
11966                 fi
11967                 ;;
11968         *) dflt="$alignbytes"
11969                 ;;
11970         esac
11971         rp="Doubles must be aligned on a how-many-byte boundary?"
11972         . ./myread
11973         alignbytes="$ans"
11974         $rm -f try.c try
11975         ;;
11976 esac
11977
11978
11979 : set the base revision
11980 baserev=5.0
11981
11982 : check for ordering of bytes in a long
11983 echo " "
11984 case "$crosscompile$multiarch" in
11985 *$define*)
11986         $cat <<EOM
11987 You seem to be either cross-compiling or doing a multiarchitecture build,
11988 skipping the byteorder check.
11989
11990 EOM
11991         byteorder='0xffff'
11992         ;;
11993 *)
11994         case "$byteorder" in
11995         '')
11996                 $cat <<'EOM'
11997 In the following, larger digits indicate more significance.  A big-endian
11998 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11999 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12000 machines may have weird orders like 3412.  A Cray will report 87654321,
12001 an Alpha will report 12345678. If the test program works the default is
12002 probably right.
12003 I'm now running the test program...
12004 EOM
12005                 $cat >try.c <<'EOCP'
12006 #include <stdio.h>
12007 int main()
12008 {
12009         int i;
12010         union {
12011                 unsigned long l;
12012                 char c[sizeof(long)];
12013         } u;
12014
12015         if (sizeof(long) > 4)
12016                 u.l = (0x08070605L << 32) | 0x04030201L;
12017         else
12018                 u.l = 0x04030201L;
12019         for (i = 0; i < sizeof(long); i++)
12020                 printf("%c", u.c[i]+'0');
12021         printf("\n");
12022         exit(0);
12023 }
12024 EOCP
12025                 xxx_prompt=y
12026                 set try
12027                 if eval $compile && ./try > /dev/null; then
12028                         dflt=`./try`
12029                         case "$dflt" in
12030                         [1-4][1-4][1-4][1-4]|12345678|87654321)
12031                                 echo "(The test program ran ok.)"
12032                                 echo "byteorder=$dflt"
12033                                 xxx_prompt=n
12034                         ;;
12035                         ????|????????) echo "(The test program ran ok.)" ;;
12036                         *) echo "(The test program didn't run right for some reason.)" ;;
12037                         esac
12038                 else
12039                         dflt='4321'
12040                         cat <<'EOM'
12041 (I can't seem to compile the test program.  Guessing big-endian...)
12042 EOM
12043                 fi
12044                 case "$xxx_prompt" in
12045                 y)
12046                         rp="What is the order of bytes in a long?"
12047                         . ./myread
12048                         byteorder="$ans"
12049                         ;;
12050                 *)      byteorder=$dflt
12051                         ;;
12052                 esac
12053                 ;;
12054         esac
12055         $rm -f try.c try
12056         ;;
12057 esac
12058
12059
12060 : how do we catenate cpp tokens here?
12061 echo " "
12062 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12063 $cat >cpp_stuff.c <<'EOCP'
12064 #define RCAT(a,b)a/**/b
12065 #define ACAT(a,b)a ## b
12066 RCAT(Rei,ser)
12067 ACAT(Cir,cus)
12068 EOCP
12069 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12070 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12071         echo "Oh!  Smells like ANSI's been here." >&4
12072         echo "We can catify or stringify, separately or together!"
12073         cpp_stuff=42
12074 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12075         echo "Ah, yes!  The good old days!" >&4
12076         echo "However, in the good old days we don't know how to stringify and"
12077         echo "catify at the same time."
12078         cpp_stuff=1
12079 else
12080         $cat >&4 <<EOM
12081 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
12082 to have to edit the values of CAT[2-5] in config.h...
12083 EOM
12084         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12085 fi
12086 $rm -f cpp_stuff.*
12087
12088 : see if this is a db.h system
12089 set db.h i_db
12090 eval $inhdr
12091
12092 case "$i_db" in
12093 $define)
12094         : Check db version.
12095         echo " "
12096         echo "Checking Berkeley DB version ..." >&4
12097         $cat >try.c <<EOCP
12098 #$d_const HASCONST
12099 #ifndef HASCONST
12100 #define const
12101 #endif
12102 #include <sys/types.h>
12103 #include <stdio.h>
12104 #include <db.h>
12105 int main()
12106 {
12107 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12108     int Major, Minor, Patch ;
12109     unsigned long Version ;
12110     (void)db_version(&Major, &Minor, &Patch) ;
12111     printf("You have Berkeley DB Version 2 or greater\n");
12112
12113     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12114                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12115     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12116                 Major, Minor, Patch) ;
12117
12118     /* check that db.h & libdb are compatible */
12119     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12120         printf("db.h and libdb are incompatible\n") ;
12121         exit(3);        
12122     }
12123
12124     printf("db.h and libdb are compatible\n") ;
12125
12126     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12127                 + DB_VERSION_PATCH ;
12128
12129     /* needs to be >= 2.3.4 */
12130     if (Version < 2003004) {
12131     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12132         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12133         exit(2);        
12134     }
12135
12136     exit(0);
12137 #else
12138 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12139     printf("You have Berkeley DB Version 1\n");
12140     exit(0);    /* DB version < 2: the coast is clear. */
12141 #else
12142     exit(1);    /* <db.h> not Berkeley DB? */
12143 #endif
12144 #endif
12145 }
12146 EOCP
12147         set try
12148         if eval $compile_ok && ./try; then
12149                 echo 'Looks OK.' >&4
12150         else
12151                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12152                 i_db=$undef
12153                 case " $libs " in
12154                 *"-ldb "*)
12155                         : Remove db from list of libraries to use
12156                         echo "Removing unusable -ldb from library list" >&4
12157                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12158                         shift
12159                         libs="$*"
12160                         echo "libs = $libs" >&4
12161                         ;;
12162                 esac
12163         fi
12164         $rm -f try.*
12165         ;;
12166 esac
12167
12168 case "$i_db" in
12169 define)
12170         : Check the return type needed for hash 
12171         echo " "
12172         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12173         $cat >try.c <<EOCP
12174 #$d_const HASCONST
12175 #ifndef HASCONST
12176 #define const
12177 #endif
12178 #include <sys/types.h>
12179 #include <db.h>
12180
12181 #ifndef DB_VERSION_MAJOR
12182 u_int32_t hash_cb (ptr, size)
12183 const void *ptr;
12184 size_t size;
12185 {
12186 }
12187 HASHINFO info;
12188 int main()
12189 {
12190         info.hash = hash_cb;
12191 }
12192 #endif
12193 EOCP
12194         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12195                 if $contains warning try.out >>/dev/null 2>&1 ; then
12196                         db_hashtype='int'
12197                 else
12198                         db_hashtype='u_int32_t'
12199                 fi
12200         else
12201                 : XXX Maybe we should just give up here.
12202                 db_hashtype=u_int32_t
12203                 $cat try.out >&4
12204                 echo "Help:  I can't seem to compile the db test program." >&4
12205                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12206         fi
12207         $rm -f try.*
12208         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12209         ;;
12210 *)      db_hashtype=u_int32_t
12211         ;;
12212 esac
12213 case "$i_db" in
12214 define)
12215         : Check the return type needed for prefix 
12216         echo " "
12217         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12218         cat >try.c <<EOCP
12219 #$d_const HASCONST
12220 #ifndef HASCONST
12221 #define const
12222 #endif
12223 #include <sys/types.h>
12224 #include <db.h>
12225
12226 #ifndef DB_VERSION_MAJOR
12227 size_t prefix_cb (key1, key2)
12228 const DBT *key1;
12229 const DBT *key2;
12230 {
12231 }
12232 BTREEINFO info;
12233 int main()
12234 {
12235         info.prefix = prefix_cb;
12236 }
12237 #endif
12238 EOCP
12239         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12240                 if $contains warning try.out >>/dev/null 2>&1 ; then
12241                         db_prefixtype='int'
12242                 else
12243                         db_prefixtype='size_t'
12244                 fi
12245         else
12246                 db_prefixtype='size_t'
12247                 : XXX Maybe we should just give up here.
12248                 $cat try.out >&4
12249                 echo "Help:  I can't seem to compile the db test program." >&4
12250                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12251         fi
12252         $rm -f try.*
12253         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12254         ;;
12255 *)      db_prefixtype='size_t'
12256         ;;
12257 esac
12258
12259 : check for void type
12260 echo " "
12261 echo "Checking to see how well your C compiler groks the void type..." >&4
12262 case "$voidflags" in
12263 '')
12264         $cat >try.c <<'EOCP'
12265 #if TRY & 1
12266 void sub() {
12267 #else
12268 sub() {
12269 #endif
12270         extern void moo();      /* function returning void */
12271         void (*goo)();          /* ptr to func returning void */
12272 #if TRY & 8
12273         void *hue;              /* generic ptr */
12274 #endif
12275 #if TRY & 2
12276         void (*foo[10])();
12277 #endif
12278
12279 #if TRY & 4
12280         if(goo == moo) {
12281                 exit(0);
12282         }
12283 #endif
12284         exit(0);
12285 }
12286 int main() { sub(); }
12287 EOCP
12288         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12289                 voidflags=$defvoidused
12290         echo "Good.  It appears to support void to the level $package wants.">&4
12291                 if $contains warning .out >/dev/null 2>&1; then
12292                         echo "However, you might get some warnings that look like this:"
12293                         $cat .out
12294                 fi
12295         else
12296 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12297                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12298                         echo "It supports 1..."
12299                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12300                                 echo "It also supports 2..."
12301                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12302                                         voidflags=7
12303                                         echo "And it supports 4 but not 8 definitely."
12304                                 else
12305                                         echo "It doesn't support 4..."
12306                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12307                                                 voidflags=11
12308                                                 echo "But it supports 8."
12309                                         else
12310                                                 voidflags=3
12311                                                 echo "Neither does it support 8."
12312                                         fi
12313                                 fi
12314                         else
12315                                 echo "It does not support 2..."
12316                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12317                                         voidflags=13
12318                                         echo "But it supports 4 and 8."
12319                                 else
12320                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12321                                                 voidflags=5
12322                                                 echo "And it supports 4 but has not heard about 8."
12323                                         else
12324                                                 echo "However it supports 8 but not 4."
12325                                         fi
12326                                 fi
12327                         fi
12328                 else
12329                         echo "There is no support at all for void."
12330                         voidflags=0
12331                 fi
12332         fi
12333 esac
12334 case "$voidflags" in
12335 "$defvoidused") ;;
12336 *)      $cat >&4 <<'EOM'
12337   Support flag bits are:
12338     1: basic void declarations.
12339     2: arrays of pointers to functions returning void.
12340     4: operations between pointers to and addresses of void functions.
12341     8: generic void pointers.
12342 EOM
12343         dflt="$voidflags";
12344         rp="Your void support flags add up to what?"
12345         . ./myread
12346         voidflags="$ans"
12347         ;;
12348 esac
12349 $rm -f try.* .out
12350
12351
12352 : How can we generate normalized random numbers ?
12353 echo " "
12354 echo "Looking for a random number function..." >&4
12355 case "$randfunc" in
12356 '')
12357         if set drand48 val -f; eval $csym; $val; then
12358                 dflt="drand48"
12359                 echo "Good, found drand48()." >&4
12360         elif set random val -f; eval $csym; $val; then
12361                 dflt="random"
12362                 echo "OK, found random()." >&4
12363         else
12364                 dflt="rand"
12365                 echo "Yick, looks like I have to use rand()." >&4
12366         fi
12367         echo " "
12368         ;;
12369 *)
12370         dflt="$randfunc"
12371         ;;
12372 esac
12373 cont=true
12374
12375 case "$ccflags" in
12376 *-Dmy_rand=*|*-Dmy_srand=*)
12377         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12378         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12379         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12380         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12381         ;;
12382 esac
12383
12384 while $test "$cont"; do
12385         rp="Use which function to generate random numbers?"
12386         . ./myread
12387         if $test "$ans" = "$dflt"; then
12388                 : null
12389         else
12390                 randbits=''
12391         fi
12392         randfunc="$ans"
12393         if set $ans val -f; eval $csym; $val; then
12394                 cont=''
12395         else
12396                 dflt=y
12397                 rp="I cannot find function $ans. Use that name anyway?"
12398                 . ./myread
12399                 dflt=rand
12400                 case "$ans" in
12401                         [yY]*) cont='';;
12402                 esac
12403         fi
12404         case "$cont" in
12405         '')
12406                 case "$randfunc" in
12407                 drand48)
12408                         drand01="drand48()"
12409                         seedfunc="srand48"
12410                         randbits=48
12411                         randseedtype=long
12412                         ;;
12413                 rand|random)
12414                         case "$randbits" in
12415                         '')
12416 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12417                                 $cat >try.c <<EOCP
12418 #$i_unistd I_UNISTD
12419 #$i_stdlib I_STDLIB
12420 #include <stdio.h>
12421 #ifdef I_UNISTD
12422 #  include <unistd.h>
12423 #endif
12424 #ifdef I_STDLIB
12425 #  include <stdlib.h>
12426 #endif
12427 int main()
12428 {
12429         register int i;
12430         register unsigned long tmp;
12431         register unsigned long max = 0L;
12432
12433         for (i = 1000; i; i--) {
12434                 tmp = (unsigned long) $randfunc();
12435                 if (tmp > max) max = tmp;
12436         }
12437         for (i = 0; max; i++)
12438                 max /= 2;
12439         printf("%d\n",i);
12440 }
12441 EOCP
12442                                 set try
12443                                 if eval $compile_ok; then
12444                                         dflt=`try`
12445                                 else
12446                                         dflt='?'
12447                                         echo "(I can't seem to compile the test program...)"
12448                                 fi
12449                                 ;;
12450                         *)
12451                                 dflt="$randbits"
12452                                 ;;
12453                         esac
12454                         rp="How many bits does your $randfunc() function produce?"
12455                         . ./myread
12456                         randbits="$ans"
12457                         $rm -f try.c try
12458                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12459                         seedfunc="s$randfunc"
12460                         randseedtype=unsigned
12461                         ;;
12462                 *)
12463                         dflt="31"
12464                         rp="How many bits does your $randfunc() function produce?"
12465                         . ./myread
12466                         randbits="$ans"
12467                         seedfunc="s$randfunc"
12468                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12469                         if set $seedfunc val -f; eval $csym; $val; then
12470                                 echo "(Using $seedfunc() to seed random generator)"
12471                         else
12472                                 echo "(Warning: no $seedfunc() to seed random generator)"
12473                                 seedfunc=rand
12474                         fi
12475                         randseedtype=unsigned
12476                         ;;
12477                 esac
12478                 ;;
12479         esac
12480 done
12481
12482 echo " "
12483 echo "Determining whether or not we are on an EBCDIC system..." >&4
12484 $cat >tebcdic.c <<'EOM'
12485 int main()
12486 {
12487   if ('M'==0xd4) return 0;
12488   return 1;
12489 }
12490 EOM
12491
12492 val=$undef
12493 set tebcdic
12494 if eval $compile_ok; then
12495         if ./tebcdic; then
12496                 echo "You have EBCDIC." >&4
12497                 val="$define"
12498         else
12499                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12500         fi
12501 else
12502         echo "I'm unable to compile the test program." >&4
12503         echo "I'll assume ASCII or some ISO Latin." >&4
12504 fi
12505 $rm -f tebcdic.c tebcdic
12506 set ebcdic
12507 eval $setvar
12508
12509 echo " "
12510 $cat >&4 <<EOM
12511 Checking how to flush all pending stdio output...
12512 EOM
12513 # I only know how to find the first 32 possibly open files on SunOS.
12514 # See also hints/sunos_4_1.sh and util.c  --AD
12515 case "$osname" in
12516 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12517 esac
12518 $cat >>try.c <<EOCP
12519 #include <stdio.h>
12520 #$i_unistd I_UNISTD
12521 #ifdef I_UNISTD
12522 # include <unistd.h>
12523 #endif
12524 #$d_sysconf HAS_SYSCONF
12525 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12526 #ifdef HAS_STDIO_STREAM_ARRAY
12527 # define STDIO_STREAM_ARRAY $stdio_stream_array
12528 #endif
12529 int main() {
12530   FILE* p = fopen("try.out", "w");
12531 #ifdef TRY_FPUTC
12532   fputc('x', p);
12533 #else
12534 # ifdef TRY_FPRINTF
12535   fprintf(p, "x");
12536 # endif
12537 #endif
12538 #ifdef TRY_FFLUSH_NULL
12539   fflush(NULL);
12540 #endif
12541 #ifdef TRY_FFLUSH_ALL
12542   {
12543     long open_max = -1;
12544 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12545     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12546 # else
12547 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12548     open_max = sysconf(_SC_OPEN_MAX);
12549 #  else
12550 #   ifdef FOPEN_MAX
12551     open_max = FOPEN_MAX;
12552 #   else
12553 #    ifdef OPEN_MAX
12554     open_max = OPEN_MAX;
12555 #    else
12556 #     ifdef _NFILE
12557     open_max = _NFILE;
12558 #     endif
12559 #    endif
12560 #   endif
12561 #  endif
12562 # endif 
12563 # ifdef HAS_STDIO_STREAM_ARRAY
12564     if (open_max > 0) {
12565       long i;
12566       for (i = 0; i < open_max; i++)
12567             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12568                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12569                 STDIO_STREAM_ARRAY[i]._flag)
12570                 fflush(&STDIO_STREAM_ARRAY[i]);
12571     }   
12572   }
12573 # endif
12574 #endif
12575   _exit(42);
12576 }
12577 EOCP
12578 : first we have to find out how _not_ to flush
12579 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12580     output=''
12581     set try -DTRY_FPUTC
12582     if eval $compile; then
12583             $rm -f try.out
12584             ./try$exe_ext 2>/dev/null
12585             if $test ! -s try.out -a "X$?" = X42; then
12586                 output=-DTRY_FPUTC
12587             fi
12588     fi
12589     case "$output" in
12590     '')
12591             set try -DTRY_FPRINTF
12592             $rm -f try.out
12593             if eval $compile; then
12594                     $rm -f try.out
12595                     ./try$exe_ext 2>/dev/null
12596                     if $test ! -s try.out -a "X$?" = X42; then
12597                         output=-DTRY_FPRINTF
12598                     fi
12599             fi
12600         ;;
12601     esac
12602 fi
12603 : check for fflush NULL behaviour
12604 case "$fflushNULL" in
12605 '')     set try -DTRY_FFLUSH_NULL $output
12606         if eval $compile; then
12607                 $rm -f try.out
12608                 ./try$exe_ext 2>/dev/null
12609                 code="$?"
12610                 if $test -s try.out -a "X$code" = X42; then
12611                         fflushNULL="`$cat try.out`"
12612                 else
12613                         if $test "X$code" != X42; then
12614                                 $cat >&4 <<EOM
12615 (If this test failed, don't worry, we'll try another method shortly.)
12616 EOM
12617                         fi
12618                 fi
12619         fi
12620         $rm -f core try.core core.try.*
12621         case "$fflushNULL" in
12622         x)      $cat >&4 <<EOM
12623 Your fflush(NULL) works okay for output streams.
12624 Let's see if it clobbers input pipes...
12625 EOM
12626 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12627 # bug that improperly flushes the input end of pipes.  So we avoid the
12628 # autoflush on fork/system/exec support for now. :-(
12629 $cat >tryp.c <<EOCP
12630 #include <stdio.h>
12631 int
12632 main(int argc, char **argv)
12633 {
12634     char buf[1024];
12635     int i;
12636     char *bp = buf;
12637     while (1) {
12638         while ((i = getc(stdin)) != -1
12639                && (*bp++ = i) != '\n'
12640                && bp < &buf[1024])
12641         /* DO NOTHING */ ;
12642         *bp = '\0';
12643         fprintf(stdout, "%s", buf);
12644         fflush(NULL);
12645         if (i == -1)
12646             return 0;
12647         bp = buf;
12648     }
12649 }
12650 EOCP
12651                 fflushNULL="$define"
12652                 set tryp
12653                 if eval $compile; then
12654                     $rm -f tryp.out
12655                     $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12656                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
12657                        $cat >&4 <<EOM
12658 fflush(NULL) seems to behave okay with input streams.
12659 EOM
12660                         fflushNULL="$define"
12661                     else
12662                         $cat >&4 <<EOM
12663 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
12664 EOM
12665                         fflushNULL="$undef"
12666                     fi
12667                 fi
12668                 $rm -f core tryp.c tryp.core core.tryp.*
12669                 ;;
12670         '')     $cat >&4 <<EOM
12671 Your fflush(NULL) isn't working (contrary to ANSI C).
12672 EOM
12673                 fflushNULL="$undef"
12674                 ;;
12675         *)      $cat >&4 <<EOM
12676 Cannot figure out whether your fflush(NULL) works or not.
12677 I'm assuming it doesn't (contrary to ANSI C).
12678 EOM
12679                 fflushNULL="$undef"
12680                 ;;
12681         esac
12682         ;;
12683 $define|true|[yY]*)
12684         fflushNULL="$define"
12685         ;;
12686 *)
12687         fflushNULL="$undef"
12688         ;;
12689 esac
12690 : check explicit looping only if NULL did not work, and if the pipe
12691 : bug does not show up on an explicit flush too
12692 case "$fflushNULL" in
12693 "$undef")
12694         $cat >tryp.c <<EOCP
12695 #include <stdio.h>
12696 int
12697 main(int argc, char **argv)
12698 {
12699     char buf[1024];
12700     int i;
12701     char *bp = buf;
12702     while (1) {
12703         while ((i = getc(stdin)) != -1
12704                && (*bp++ = i) != '\n'
12705                && bp < &buf[1024])
12706         /* DO NOTHING */ ;
12707         *bp = '\0';
12708         fprintf(stdout, "%s", buf);
12709         fflush(stdin);
12710         if (i == -1)
12711             return 0;
12712         bp = buf;
12713     }
12714 }
12715 EOCP
12716         set tryp
12717         if eval $compile; then
12718             $rm -f tryp.out
12719             $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12720             if cmp tryp.c tryp.out >/dev/null 2>&1; then
12721                $cat >&4 <<EOM
12722 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12723 EOM
12724                 : now check for fflushall behaviour
12725                 case "$fflushall" in
12726                 '')     set try -DTRY_FFLUSH_ALL $output
12727                         if eval $compile; then
12728                                 $cat >&4 <<EOM
12729 (Now testing the other method--but note that this also may fail.)
12730 EOM
12731                                 $rm -f try.out
12732                                 ./try$exe_ext 2>/dev/null
12733                                 if $test -s try.out -a "X$?" = X42; then
12734                                         fflushall="`$cat try.out`"
12735                                 fi
12736                         fi
12737                         $rm -f core try.core core.try.*
12738                         case "$fflushall" in
12739                         x)      $cat >&4 <<EOM
12740 Whew. Flushing explicitly all the stdio streams works.
12741 EOM
12742                                 fflushall="$define"
12743                                 ;;
12744                         '')     $cat >&4 <<EOM
12745 Sigh. Flushing explicitly all the stdio streams doesn't work.
12746 EOM
12747                                 fflushall="$undef"
12748                                 ;;
12749                         *)      $cat >&4 <<EOM
12750 Cannot figure out whether flushing stdio streams explicitly works or not.
12751 I'm assuming it doesn't.
12752 EOM
12753                                 fflushall="$undef"
12754                                 ;;
12755                         esac
12756                         ;;
12757                 "$define"|true|[yY]*)
12758                         fflushall="$define"
12759                         ;;
12760                 *)
12761                         fflushall="$undef"
12762                         ;;
12763                 esac
12764             else
12765                 $cat >&4 <<EOM
12766 All is futile.  Even fflush(stdin) clobbers input pipes!
12767 EOM
12768                 fflushall="$undef"
12769             fi
12770         else
12771             fflushall="$undef"
12772         fi
12773         $rm -f core tryp.c tryp.core core.tryp.*
12774         ;;
12775 *)      fflushall="$undef"
12776         ;;
12777 esac
12778
12779 case "$fflushNULL$fflushall" in
12780 undefundef)
12781         $cat <<EOM
12782 OK, I give up.  I cannot figure out how to flush pending stdio output.
12783 We won't be flushing handles at all before fork/exec/popen.
12784 EOM
12785         ;;
12786 esac
12787 $rm -f try.* try$exe_ext
12788
12789 : Store the full pathname to the ar program for use in the C program
12790 : Respect a hint or command line value for full_ar.
12791 case "$full_ar" in
12792 '') full_ar=$ar ;;
12793 esac
12794
12795 : Store the full pathname to the sed program for use in the C program
12796 full_sed=$sed
12797
12798 : see what type gids are declared as in the kernel
12799 echo " "
12800 echo "Looking for the type for group ids returned by getgid()."
12801 set gid_t gidtype xxx stdio.h sys/types.h
12802 eval $typedef
12803 case "$gidtype" in
12804 xxx)
12805         xxx=`./findhdr sys/user.h`
12806         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12807         case $1 in
12808         unsigned) dflt="$1 $2" ;;
12809         *) dflt="$1" ;;
12810         esac
12811         ;;
12812 *) dflt="$gidtype";;
12813 esac
12814 case "$gidtype" in
12815 gid_t) echo "gid_t found." ;;
12816 *)      rp="What is the type for group ids returned by getgid()?"
12817         . ./myread
12818         gidtype="$ans"
12819         ;;
12820 esac
12821
12822 echo " "
12823 case "$gidtype" in
12824 *_t) zzz="$gidtype"     ;;
12825 *)   zzz="gid"          ;;
12826 esac
12827 echo "Checking the size of $zzz..." >&4 
12828 cat > try.c <<EOCP
12829 #include <sys/types.h>
12830 #include <stdio.h>
12831 int main() {
12832     printf("%d\n", (int)sizeof($gidtype));
12833     exit(0);
12834 }
12835 EOCP
12836 set try
12837 if eval $compile_ok; then
12838         yyy=`./try`
12839         case "$yyy" in
12840         '')     gidsize=4
12841                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12842                 ;;
12843         *)      gidsize=$yyy
12844                 echo "Your $zzz is $gidsize bytes long."
12845                 ;;
12846         esac
12847 else
12848         gidsize=4
12849         echo "(I can't compile the test program--guessing $gidsize.)" >&4
12850 fi
12851
12852
12853 echo " "
12854 case "$gidtype" in
12855 *_t) zzz="$gidtype"     ;;
12856 *)   zzz="gid"          ;;
12857 esac
12858 echo "Checking the sign of $zzz..." >&4 
12859 cat > try.c <<EOCP
12860 #include <sys/types.h>
12861 #include <stdio.h>
12862 int main() {
12863         $gidtype foo = -1;
12864         if (foo < 0)
12865                 printf("-1\n");
12866         else
12867                 printf("1\n");
12868 }
12869 EOCP
12870 set try
12871 if eval $compile; then
12872         yyy=`./try`
12873         case "$yyy" in
12874         '')     gidsign=1
12875                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12876                 ;;
12877         *)      gidsign=$yyy
12878                 case "$gidsign" in
12879                  1) echo "Your $zzz is unsigned." ;;
12880                 -1) echo "Your $zzz is signed."   ;;
12881                 esac
12882                 ;;
12883         esac
12884 else
12885         gidsign=1
12886         echo "(I can't compile the test program--guessing unsigned.)" >&4
12887 fi
12888
12889
12890 echo " "
12891
12892 if $test X"$quadtype" != X; then
12893
12894 echo "Checking how to print 64-bit integers..." >&4
12895
12896 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12897         $cat >try.c <<'EOCP'
12898 #include <sys/types.h>
12899 #include <stdio.h>
12900 int main() {
12901   int q = 12345678901;
12902   printf("%ld\n", q);
12903 }
12904 EOCP
12905         set try
12906         if eval $compile; then
12907                 yyy=`./try$exe_ext`
12908                 case "$yyy" in
12909                 12345678901)
12910                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12911                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12912                         echo "We will use %d."
12913                         ;;
12914                 esac
12915         fi
12916 fi
12917
12918 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12919         $cat >try.c <<'EOCP'
12920 #include <sys/types.h>
12921 #include <stdio.h>
12922 int main() {
12923   long q = 12345678901;
12924   printf("%ld\n", q);
12925 }
12926 EOCP
12927         set try
12928         if eval $compile; then
12929                 yyy=`./try$exe_ext`
12930                 case "$yyy" in
12931                 12345678901)
12932                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12933                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12934                         echo "We will use %ld."
12935                         ;;
12936                 esac
12937         fi
12938 fi
12939
12940 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12941         $cat >try.c <<'EOCP'
12942 #include <sys/types.h>
12943 #include <inttypes.h>
12944 #include <stdio.h>
12945 int main() {
12946   int64_t q = 12345678901;
12947   printf("%" PRId64 "\n", q);
12948 }
12949 EOCP
12950         set try
12951         if eval $compile; then
12952                 yyy=`./try$exe_ext`
12953                 case "$yyy" in
12954                 12345678901)
12955                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12956                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12957                         echo "We will use the C9X style."
12958                         ;;
12959                 esac
12960         fi
12961 fi
12962
12963 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12964         $cat >try.c <<'EOCP'
12965 #include <sys/types.h>
12966 #include <stdio.h>
12967 int main() {
12968   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12969   printf("%lld\n", q);
12970 }
12971 EOCP
12972         set try
12973         if eval $compile; then
12974                 yyy=`./try$exe_ext`
12975                 case "$yyy" in
12976                 12345678901)
12977                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12978                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12979                         echo "We will use the %lld style."
12980                         ;;
12981                 esac
12982         fi
12983 fi
12984
12985 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12986         $cat >try.c <<EOCP
12987 #include <sys/types.h>
12988 #include <stdio.h>
12989 int main() {
12990   $quadtype q = 12345678901;
12991   printf("%Ld\n", q);
12992 }
12993 EOCP
12994         set try
12995         if eval $compile; then
12996                 yyy=`./try$exe_ext`
12997                 case "$yyy" in
12998                 12345678901)
12999                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13000                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
13001                         echo "We will use %Ld."
13002                         ;;
13003                 esac
13004         fi
13005 fi
13006
13007 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13008         $cat >try.c <<EOCP
13009 #include <sys/types.h>
13010 #include <stdio.h>
13011 int main() {
13012   $quadtype q = 12345678901;
13013   printf("%qd\n", q);
13014 }
13015 EOCP
13016         set try
13017         if eval $compile; then
13018                 yyy=`./try$exe_ext`
13019                 case "$yyy" in
13020                 12345678901)
13021                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13022                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
13023                         echo "We will use %qd."
13024                         ;;
13025                 esac
13026         fi
13027 fi
13028
13029 if $test X"$sPRId64" = X; then
13030         echo "Cannot figure out how to print 64-bit integers." >&4
13031 fi
13032
13033 $rm -f try try.*
13034
13035 fi
13036
13037 case "$sPRId64" in
13038 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
13039         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
13040         ;;
13041 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
13042         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
13043         ;;
13044 esac
13045
13046
13047 echo " "
13048 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13049
13050 if $test X"$ivsize" = X8; then
13051         ivdformat="$sPRId64"
13052         uvuformat="$sPRIu64"
13053         uvoformat="$sPRIo64"
13054         uvxformat="$sPRIx64"
13055 else
13056         if $test X"$ivsize" = X"$longsize"; then
13057                 ivdformat='"ld"'
13058                 uvuformat='"lu"'
13059                 uvoformat='"lo"'
13060                 uvxformat='"lx"'
13061         else
13062                 if $test X"$ivsize" = X"$intsize"; then
13063                         ivdformat='"d"'
13064                         uvuformat='"u"'
13065                         uvoformat='"o"'
13066                         uvxformat='"x"'
13067                 else
13068                         : far out
13069                         if $test X"$ivsize" = X"$shortsize"; then
13070                                 ivdformat='"hd"'
13071                                 uvuformat='"hu"'
13072                                 uvoformat='"ho"'
13073                                 uvxformat='"hx"'
13074                         fi
13075                 fi
13076         fi
13077 fi
13078
13079 case "$ivdformat" in
13080 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13081     exit 1
13082     ;;
13083 esac
13084
13085
13086 echo " "
13087 $echo "Checking the format string to be used for gids..." >&4
13088
13089 case "$gidsign" in
13090 -1)     if $test X"$gidsize" = X"$ivsize"; then
13091                 gidformat="$ivdformat"
13092         else
13093                 if $test X"$gidsize" = X"$longsize"; then
13094                         gidformat='"ld"'
13095                 else
13096                         if $test X"$gidsize" = X"$intsize"; then
13097                                 gidformat='"d"'
13098                         else
13099                                 if $test X"$gidsize" = X"$shortsize"; then
13100                                         gidformat='"hd"'
13101                                 fi
13102                         fi
13103                 fi
13104         fi
13105         ;;
13106 *)      if $test X"$gidsize" = X"$uvsize"; then
13107                 gidformat="$uvuformat"
13108         else
13109                 if $test X"$gidsize" = X"$longsize"; then
13110                         gidformat='"lu"'
13111                 else
13112                         if $test X"$gidsize" = X"$intsize"; then
13113                                 gidformat='"u"'
13114                         else
13115                                 if $test X"$gidsize" = X"$shortsize"; then
13116                                         gidformat='"hu"'
13117                                 fi
13118                         fi
13119                 fi
13120         fi
13121         ;;
13122 esac
13123
13124 : see if getgroups exists
13125 set getgroups d_getgrps
13126 eval $inlibc
13127
13128 : see if setgroups exists
13129 set setgroups d_setgrps
13130 eval $inlibc
13131
13132
13133 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13134 echo " "
13135 case "$d_getgrps$d_setgrps" in
13136 *define*)
13137         case "$groupstype" in
13138         '') dflt="$gidtype" ;;
13139         *)  dflt="$groupstype" ;;
13140         esac
13141         $cat <<EOM
13142 What type of pointer is the second argument to getgroups() and setgroups()?
13143 Usually this is the same as group ids, $gidtype, but not always.
13144
13145 EOM
13146         rp='What type pointer is the second argument to getgroups() and setgroups()?'
13147         . ./myread
13148         groupstype="$ans"
13149         ;;
13150 *)  groupstype="$gidtype";;
13151 esac
13152
13153 echo " "
13154 echo "Checking if your $make program sets \$(MAKE)..." >&4
13155 case "$make_set_make" in
13156 '')
13157         $sed 's/^X //' > testmake.mak << 'EOF'
13158 Xall:
13159 X       @echo 'maketemp="$(MAKE)"'
13160 EOF
13161         case "`$make -f testmake.mak 2>/dev/null`" in
13162         *maketemp=*) make_set_make='#' ;;
13163         *)      make_set_make="MAKE=$make" ;;
13164         esac
13165         $rm -f testmake.mak
13166         ;;
13167 esac
13168 case "$make_set_make" in
13169 '#') echo "Yup, it does.";;
13170 *) echo "Nope, it doesn't.";;
13171 esac
13172
13173 : see what type is used for mode_t
13174 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13175 set mode_t modetype int stdio.h sys/types.h
13176 eval $typedef_ask
13177
13178 : define a fucntion to check prototypes
13179 $cat > protochk <<EOSH
13180 $startsh
13181 cc="$cc"
13182 optimize="$optimize"
13183 ccflags="$ccflags"
13184 prototype="$prototype"
13185 define="$define"
13186 rm=$rm
13187 EOSH
13188
13189 $cat >> protochk <<'EOSH'
13190
13191 $rm -f try.c
13192 foo="$1"
13193 shift
13194 while test $# -ge 2; do
13195         case "$1" in
13196                 $define) echo "#include <$2>" >> try.c ;;
13197                 literal) echo "$2" >> try.c ;;
13198         esac
13199     shift 2
13200 done
13201 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13202 cat >> try.c <<'EOCP'
13203 #ifdef CAN_PROTOTYPE
13204 #define _(args) args
13205 #else
13206 #define _(args) ()
13207 #endif
13208 EOCP
13209 echo "$foo" >> try.c
13210 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13211 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13212 status=$?
13213 $rm -f try.[co]
13214 exit $status
13215 EOSH
13216 chmod +x protochk
13217 $eunicefix protochk
13218
13219 : see what type is used for size_t
13220 rp="What is the type used for the length parameter for string functions?"
13221 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13222 eval $typedef_ask
13223
13224 : check for type of arguments to gethostbyaddr. 
13225 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13226         case "$d_gethbyaddr" in
13227         $define)
13228                 $cat <<EOM
13229
13230 Checking to see what type of arguments are accepted by gethostbyaddr().
13231 EOM
13232                 hdrs="$define sys/types.h
13233                         $d_socket sys/socket.h 
13234                         $i_niin netinet/in.h 
13235                         $i_netdb netdb.h
13236                         $i_unistd unistd.h"
13237                 : The first arg can 'char *' or 'void *'
13238                 : The second arg is some of integral type
13239                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13240                         for yyy in size_t long int; do
13241                                 case "$netdb_host_type" in
13242                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13243                                         if ./protochk "$try" $hdrs; then
13244                                                 echo "Your system accepts $xxx for the first arg."
13245                                                 echo "...and $yyy for the second arg."
13246                                                 netdb_host_type="$xxx"
13247                                                 netdb_hlen_type="$yyy"
13248                                         fi
13249                                         ;;
13250                                 esac
13251                         done
13252                 done
13253                 : In case none of those worked, prompt the user.
13254                 case "$netdb_host_type" in
13255                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
13256                         dflt='char *'
13257                         . ./myread
13258                         netdb_host_type=$ans
13259                         rp='What is the type for the 2nd argument to gethostbyaddr?'
13260                         dflt="$sizetype"
13261                         . ./myread
13262                         netdb_hlen_type=$ans
13263                         ;;
13264                 esac
13265                 ;;
13266         *)      : no gethostbyaddr, so pick harmless defaults
13267                 netdb_host_type='char *'
13268                 netdb_hlen_type="$sizetype"
13269                 ;;
13270         esac
13271         # Remove the "const" if needed. -- but then we'll have a 
13272         # prototype clash!
13273         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13274 fi
13275
13276 : check for type of argument to gethostbyname. 
13277 if test "X$netdb_name_type" = X ; then
13278         case "$d_gethbyname" in
13279         $define)
13280                 $cat <<EOM
13281
13282 Checking to see what type of argument is accepted by gethostbyname().
13283 EOM
13284                 hdrs="$define sys/types.h
13285                         $d_socket sys/socket.h 
13286                         $i_niin netinet/in.h 
13287                         $i_netdb netdb.h
13288                         $i_unistd unistd.h"
13289                 for xxx in "const char *" "char *"; do
13290                         case "$netdb_name_type" in
13291                         '')     try="extern struct hostent *gethostbyname($xxx);"
13292                                 if ./protochk "$try" $hdrs; then
13293                                         echo "Your system accepts $xxx."
13294                                         netdb_name_type="$xxx"
13295                                 fi
13296                                 ;;
13297                         esac
13298                 done
13299                 : In case none of those worked, prompt the user.
13300                 case "$netdb_name_type" in
13301                 '')     rp='What is the type for the 1st argument to gethostbyname?'
13302                         dflt='char *'
13303                         . ./myread
13304                         netdb_name_type=$ans
13305                         ;;
13306                 esac
13307                 ;;
13308         *)      : no gethostbyname, so pick harmless default
13309                 netdb_name_type='char *'
13310                 ;;
13311         esac
13312 fi
13313
13314 : check for type of 1st argument to getnetbyaddr. 
13315 if test "X$netdb_net_type" = X ; then
13316         case "$d_getnbyaddr" in
13317         $define)
13318                 $cat <<EOM
13319
13320 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13321 EOM
13322                 hdrs="$define sys/types.h
13323                         $d_socket sys/socket.h 
13324                         $i_niin netinet/in.h 
13325                         $i_netdb netdb.h
13326                         $i_unistd unistd.h"
13327                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13328                         case "$netdb_net_type" in
13329                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
13330                                 if ./protochk "$try" $hdrs; then
13331                                         echo "Your system accepts $xxx."
13332                                         netdb_net_type="$xxx"
13333                                 fi
13334                                 ;;
13335                         esac
13336                 done
13337                 : In case none of those worked, prompt the user.
13338                 case "$netdb_net_type" in
13339                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
13340                         dflt='long'
13341                         . ./myread
13342                         netdb_net_type=$ans
13343                         ;;
13344                 esac
13345                 ;;
13346         *)      : no getnetbyaddr, so pick harmless default
13347                 netdb_net_type='long'
13348                 ;;
13349         esac
13350 fi
13351 : locate the preferred pager for this system
13352 case "$pager" in
13353 '')
13354         dflt=''
13355         case "$pg" in
13356         /*) dflt=$pg;;
13357         esac
13358         case "$more" in
13359         /*) dflt=$more;;
13360         esac
13361         case "$less" in
13362         /*) dflt=$less;;
13363         esac
13364         case "$dflt" in
13365         '') dflt=/usr/ucb/more;;
13366         esac
13367         ;;
13368 *) dflt="$pager";;
13369 esac
13370 echo " "
13371 fn=f/
13372 rp='What pager is used on your system?'
13373 . ./getfile
13374 pager="$ans"
13375
13376 : see what type pids are declared as in the kernel
13377 rp="What is the type of process ids on this system?"
13378 set pid_t pidtype int stdio.h sys/types.h
13379 eval $typedef_ask
13380
13381 : Find earliest binary compatible site_perl subdirectory perl can use.
13382 case "$bincompat5005" in
13383 "$define") xs_apiversion='5.005' ;;
13384 *) xs_apiversion=$version ;;   # The current site_perl version.
13385 esac
13386 : Find earliest pure perl site_perl subdirectory perl can use.
13387 : The versioned directories started at 5.005.
13388 pm_apiversion='5.005'
13389
13390 : check for length of pointer
13391 echo " "
13392 case "$ptrsize" in
13393 '')
13394         echo "Checking to see how big your pointers are..." >&4
13395         if test "$voidflags" -gt 7; then
13396                 echo '#define VOID_PTR char *' > try.c
13397         else
13398                 echo '#define VOID_PTR void *' > try.c
13399         fi
13400         $cat >>try.c <<'EOCP'
13401 #include <stdio.h>
13402 int main()
13403 {
13404     printf("%d\n", (int)sizeof(VOID_PTR));
13405     exit(0);
13406 }
13407 EOCP
13408         set try
13409         if eval $compile_ok; then
13410                 ptrsize=`./try`
13411                 echo "Your pointers are $ptrsize bytes long."
13412         else
13413                 dflt='4'
13414                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
13415                 rp="What is the size of a pointer (in bytes)?"
13416                 . ./myread
13417                 ptrsize="$ans"
13418         fi
13419         ;;
13420 esac
13421 $rm -f try.c try
13422
13423 : see if ar generates random libraries by itself
13424 echo " "
13425 echo "Checking how to generate random libraries on your machine..." >&4
13426 echo 'int bar1() { return bar2(); }' > bar1.c
13427 echo 'int bar2() { return 2; }' > bar2.c
13428 $cat > foo.c <<'EOP'
13429 int main() { printf("%d\n", bar1()); exit(0); }
13430 EOP
13431 $cc $ccflags -c bar1.c >/dev/null 2>&1
13432 $cc $ccflags -c bar2.c >/dev/null 2>&1
13433 $cc $ccflags -c foo.c >/dev/null 2>&1
13434 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13435 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13436         ./foobar >/dev/null 2>&1; then
13437         echo "$ar appears to generate random libraries itself."
13438         orderlib=false
13439         ranlib=":"
13440 elif $ar ts bar$_a >/dev/null 2>&1 &&
13441         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13442         ./foobar >/dev/null 2>&1; then
13443                 echo "a table of contents needs to be added with '$ar ts'."
13444                 orderlib=false
13445                 ranlib="$ar ts"
13446 else
13447         case "$ranlib" in
13448         :) ranlib='';;
13449         '')
13450                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13451                 $test -f $ranlib || ranlib=''
13452                 ;;
13453         esac
13454         if $test -n "$ranlib"; then
13455                 echo "your system has '$ranlib'; we'll use that."
13456                 orderlib=false
13457         else
13458                 echo "your system doesn't seem to support random libraries"
13459                 echo "so we'll use lorder and tsort to order the libraries."
13460                 orderlib=true
13461                 ranlib=":"
13462         fi
13463 fi
13464 $rm -f foo* bar* 
13465
13466 : check for type of arguments to select. 
13467 case "$selecttype" in
13468 '') case "$d_select" in
13469         $define)
13470                 echo " "
13471                 $cat <<EOM
13472 Checking to see what type of arguments are accepted by select().
13473 EOM
13474                 hdrs="$define sys/types.h
13475                         $i_systime sys/time.h 
13476                         $i_sysselct sys/select.h
13477                         $d_socket sys/socket.h"
13478                 : The first arg can be int, unsigned, or size_t
13479                 : The last arg may or may not be 'const'
13480                 val=''
13481                 : void pointer has been seen but using that
13482                 : breaks the selectminbits test
13483                 for xxx in 'fd_set *' 'int *'; do
13484                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13485                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
13486                                         case "$val" in
13487                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13488                                                 if ./protochk "$try" $hdrs; then
13489                                                         echo "Your system accepts $xxx."
13490                                                         val="$xxx"
13491                                                 fi
13492                                                 ;;
13493                                         esac
13494                                 done
13495                         done
13496                 done
13497                 case "$val" in
13498                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13499                         case "$d_fd_set" in
13500                                 $define) dflt="fd_set *" ;;
13501                                 *)              dflt="int *" ;;
13502                         esac
13503                         . ./myread
13504                         val=$ans
13505                         ;;
13506                 esac
13507                 selecttype="$val"
13508                 ;;
13509         *)      : no select, so pick a harmless default
13510                 selecttype='int *'
13511                 ;;
13512         esac
13513         ;;
13514 esac
13515
13516 : check for the select 'width'
13517 case "$selectminbits" in
13518 '') case "$d_select" in
13519         $define)
13520                 $cat <<EOM
13521
13522 Checking to see on how many bits at a time your select() operates...
13523 EOM
13524                 $cat >try.c <<EOCP
13525 #include <sys/types.h>
13526 #$i_time I_TIME
13527 #$i_systime I_SYS_TIME
13528 #$i_systimek I_SYS_TIME_KERNEL
13529 #ifdef I_TIME
13530 #   include <time.h>
13531 #endif
13532 #ifdef I_SYS_TIME
13533 #   ifdef I_SYS_TIME_KERNEL
13534 #       define KERNEL
13535 #   endif
13536 #   include <sys/time.h>
13537 #   ifdef I_SYS_TIME_KERNEL
13538 #       undef KERNEL
13539 #   endif
13540 #endif
13541 #$i_sysselct I_SYS_SELECT
13542 #ifdef I_SYS_SELECT
13543 #include <sys/select.h>
13544 #endif
13545 #$d_socket HAS_SOCKET
13546 #ifdef HAS_SOCKET
13547 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13548 #endif
13549 #include <stdio.h>
13550 $selecttype b;
13551 #define S sizeof(*(b))
13552 #define MINBITS 64
13553 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13554 #define NBITS  (NBYTES * 8)
13555 int main() {
13556     char s[NBYTES];
13557     struct timeval t;
13558     int i;
13559     FILE* fp;
13560     int fd;
13561
13562     fclose(stdin);
13563     fp = fopen("try.c", "r");
13564     if (fp == 0)
13565       exit(1);
13566     fd = fileno(fp);
13567     if (fd < 0)
13568       exit(2);
13569     b = ($selecttype)s;
13570     for (i = 0; i < NBITS; i++)
13571         FD_SET(i, b);
13572     t.tv_sec  = 0;
13573     t.tv_usec = 0;
13574     select(fd + 1, b, 0, 0, &t);
13575     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13576     printf("%d\n", i + 1);
13577     return 0;
13578 }
13579 EOCP
13580                 set try
13581                 if eval $compile_ok; then
13582                         selectminbits=`./try`
13583                         case "$selectminbits" in
13584                         '')     cat >&4 <<EOM
13585 Cannot figure out on how many bits at a time your select() operates.
13586 I'll play safe and guess it is 32 bits.
13587 EOM
13588                                 selectminbits=32
13589                                 bits="32 bits"
13590                                 ;;
13591                         1)      bits="1 bit" ;;
13592                         *)      bits="$selectminbits bits" ;;
13593                         esac
13594                         echo "Your select() operates on $bits at a time." >&4
13595                 else
13596                         rp='What is the minimum number of bits your select() operates on?'
13597                         case "$byteorder" in
13598                         1234|12345678)  dflt=32 ;;
13599                         *)              dflt=1  ;;
13600                         esac
13601                         . ./myread
13602                         val=$ans
13603                         selectminbits="$val"
13604                 fi
13605                 $rm -f try.* try
13606                 ;;
13607         *)      : no select, so pick a harmless default
13608                 selectminbits='32'
13609                 ;;
13610         esac
13611         ;;
13612 esac
13613
13614 : Trace out the files included by signal.h, then look for SIGxxx names.
13615 : Remove SIGARRAYSIZE used by HPUX.
13616 : Remove SIGSTKSIZE used by Linux.
13617 : Remove SIGSTKSZ used by Posix.
13618 : Remove SIGTYP void lines used by OS2.
13619 : Some cpps, like os390, dont give the file name anywhere
13620 if [ "X$fieldn" = X ]; then
13621         : Just make some guesses.  We check them later.
13622         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13623 else
13624         xxx=`echo '#include <signal.h>' |
13625         $cppstdin $cppminus $cppflags 2>/dev/null |
13626         $grep '^[       ]*#.*include' | 
13627         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13628 fi
13629 : Check this list of files to be sure we have parsed the cpp output ok.
13630 : This will also avoid potentially non-existent files, such 
13631 : as ../foo/bar.h
13632 xxxfiles=''
13633 for xx in $xxx /dev/null ; do
13634         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13635 done
13636 : If we have found no files, at least try signal.h
13637 case "$xxxfiles" in
13638 '')     xxxfiles=`./findhdr signal.h` ;;
13639 esac
13640 xxx=`awk '
13641 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13642         print substr($2, 4, 20)
13643 }
13644 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13645         print substr($3, 4, 20)
13646 }' $xxxfiles`
13647 : Append some common names just in case the awk scan failed.
13648 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13649 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13650 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13651 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13652 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13653
13654 : generate a few handy files for later
13655 $cat > signal.c <<'EOCP'
13656 #include <sys/types.h>
13657 #include <signal.h>
13658 #include <stdio.h>
13659 int main() {
13660
13661 /* Strange style to avoid deeply-nested #if/#else/#endif */
13662 #ifndef NSIG
13663 #  ifdef _NSIG
13664 #    define NSIG (_NSIG)
13665 #  endif
13666 #endif
13667
13668 #ifndef NSIG
13669 #  ifdef SIGMAX
13670 #    define NSIG (SIGMAX+1)
13671 #  endif
13672 #endif
13673
13674 #ifndef NSIG
13675 #  ifdef SIG_MAX
13676 #    define NSIG (SIG_MAX+1)
13677 #  endif
13678 #endif
13679
13680 #ifndef NSIG
13681 #  ifdef MAXSIG
13682 #    define NSIG (MAXSIG+1)
13683 #  endif
13684 #endif
13685
13686 #ifndef NSIG
13687 #  ifdef MAX_SIG
13688 #    define NSIG (MAX_SIG+1)
13689 #  endif
13690 #endif
13691
13692 #ifndef NSIG
13693 #  ifdef SIGARRAYSIZE
13694 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13695 #  endif
13696 #endif
13697
13698 #ifndef NSIG
13699 #  ifdef _sys_nsig
13700 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13701 #  endif
13702 #endif
13703
13704 /* Default to some arbitrary number that's big enough to get most
13705    of the common signals.
13706 */
13707 #ifndef NSIG
13708 #    define NSIG 50
13709 #endif
13710
13711 printf("NSIG %d\n", NSIG);
13712
13713 #ifndef JUST_NSIG
13714
13715 EOCP
13716
13717 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13718 {
13719         printf "#ifdef SIG"; printf $1; printf "\n"
13720         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13721         printf $1; printf ");\n"
13722         printf "#endif\n"
13723 }
13724 END {
13725         printf "#endif /* JUST_NSIG */\n";
13726         printf "exit(0);\n}\n";
13727 }
13728 ' >>signal.c
13729 $cat >signal.awk <<'EOP'
13730 BEGIN { ndups = 0 }
13731 $1 ~ /^NSIG$/ { nsig = $2 }
13732 ($1 !~ /^NSIG$/) && (NF == 2) {
13733     if ($2 > maxsig) { maxsig = $2 }
13734     if (sig_name[$2]) {
13735         dup_name[ndups] = $1
13736         dup_num[ndups] = $2
13737         ndups++ 
13738     }
13739     else {
13740         sig_name[$2] = $1
13741         sig_num[$2] = $2
13742     }
13743 }
13744 END { 
13745     if (nsig == 0) {
13746         nsig = maxsig + 1
13747     }
13748     printf("NSIG %d\n", nsig);
13749     for (n = 1; n < nsig; n++) {
13750         if (sig_name[n]) {
13751             printf("%s %d\n", sig_name[n], sig_num[n])
13752         }
13753         else {
13754             printf("NUM%d %d\n", n, n) 
13755         }
13756     }
13757     for (n = 0; n < ndups; n++) {
13758         printf("%s %d\n", dup_name[n], dup_num[n])
13759     }
13760 }
13761 EOP
13762 $cat >signal_cmd <<EOS
13763 $startsh
13764 if $test -s signal.lst; then
13765     echo "Using your existing signal.lst file"
13766         exit 0
13767 fi
13768 xxx="$xxx"
13769 EOS
13770 $cat >>signal_cmd <<'EOS'
13771
13772 set signal
13773 if eval $compile_ok; then
13774         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13775 else
13776         echo "(I can't seem be able to compile the whole test program)" >&4
13777         echo "(I'll try it in little pieces.)" >&4
13778         set signal -DJUST_NSIG
13779         if eval $compile_ok; then
13780                 ./signal$_exe > signal.nsg
13781                 $cat signal.nsg
13782         else
13783                 echo "I can't seem to figure out how many signals you have." >&4
13784                 echo "Guessing 50." >&4
13785                 echo 'NSIG 50' > signal.nsg
13786         fi
13787         : Now look at all the signal names, one at a time.
13788         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13789                 $cat > signal.c <<EOCP
13790 #include <sys/types.h>
13791 #include <signal.h>
13792 #include <stdio.h>
13793 int main() {
13794 printf("$xx %d\n", SIG${xx});
13795 return 0;
13796 }
13797 EOCP
13798                 set signal
13799                 if eval $compile; then
13800                         echo "SIG${xx} found."
13801                         ./signal$_exe  >> signal.ls1
13802                 else
13803                         echo "SIG${xx} NOT found."
13804                 fi
13805         done
13806         if $test -s signal.ls1; then
13807                 $cat signal.nsg signal.ls1 |
13808                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13809         fi
13810
13811 fi
13812 if $test -s signal.lst; then
13813         :
13814 else
13815         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13816         echo 'kill -l' >signal
13817         set X `csh -f <signal`
13818         $rm -f signal
13819         shift
13820         case $# in
13821         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13822         esac
13823         echo $@ | $tr ' ' $trnl | \
13824             $awk '{ printf "%s %d\n", $1, ++s; }
13825                   END { printf "NSIG %d\n", ++s }' >signal.lst
13826 fi
13827 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13828 EOS
13829 chmod a+x signal_cmd
13830 $eunicefix signal_cmd
13831
13832 : generate list of signal names
13833 echo " "
13834 case "$sig_name_init" in
13835 '') doinit=yes ;;
13836 *)  case "$sig_num_init" in
13837     ''|*,*) doinit=yes ;;
13838     esac ;;
13839 esac
13840 case "$doinit" in
13841 yes)
13842         echo "Generating a list of signal names and numbers..." >&4
13843         . ./signal_cmd
13844         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13845         sig_name=`$awk 'BEGIN { printf "ZERO " }
13846                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13847         sig_num=`$awk  'BEGIN { printf "0 " }
13848                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13849         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
13850                              !/^NSIG/   { printf "\"%s\", ", $1 }
13851                              END        { printf "0\n" }' signal.lst`
13852         sig_num_init=`$awk  'BEGIN      { printf "0, " }
13853                              !/^NSIG/   { printf "%d, ", $2}
13854                              END        { printf "0\n"}' signal.lst`
13855         ;;
13856 esac
13857 echo "The following $sig_count signals are available:"
13858 echo " "
13859 echo $sig_name | $awk \
13860 'BEGIN { linelen = 0 }
13861 {
13862         for (i = 1; i <= NF; i++) {
13863                 name = "SIG" $i " "
13864                 linelen = linelen + length(name)
13865                 if (linelen > 70) {
13866                         printf "\n"
13867                         linelen = length(name)
13868                 }
13869                 printf "%s", name
13870         }
13871         printf "\n"
13872 }'
13873 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
13874
13875 echo " "
13876 case "$sizetype" in
13877 *_t) zzz="$sizetype"    ;;
13878 *)   zzz="filesize"     ;;
13879 esac
13880 echo "Checking the size of $zzz..." >&4 
13881 cat > try.c <<EOCP
13882 #include <sys/types.h>
13883 #include <stdio.h>
13884 int main() {
13885     printf("%d\n", (int)sizeof($sizetype));
13886     exit(0);
13887 }
13888 EOCP
13889 set try
13890 if eval $compile_ok; then
13891         yyy=`./try`
13892         case "$yyy" in
13893         '')     sizesize=4
13894                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
13895                 ;;
13896         *)      sizesize=$yyy
13897                 echo "Your $zzz size is $sizesize bytes."
13898                 ;;
13899         esac
13900 else
13901         sizesize=4
13902         echo "(I can't compile the test program--guessing $sizesize.)" >&4
13903 fi
13904
13905
13906 : check for socklen_t
13907 echo " "
13908 echo "Checking to see if you have socklen_t..." >&4
13909 $cat >try.c <<EOCP
13910 #include <sys/types.h>
13911 #$d_socket HAS_SOCKET
13912 #ifdef HAS_SOCKET
13913 #include <sys/socket.h>
13914 #endif
13915 int main() { socklen_t x = 16; }
13916 EOCP
13917 set try
13918 if eval $compile; then
13919         val="$define"
13920         echo "You have socklen_t."
13921 else
13922         val="$undef"
13923         echo "You do not have socklen_t."
13924         case "$sizetype" in
13925         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
13926         esac
13927 fi
13928 $rm -f try try.*
13929 set d_socklen_t
13930 eval $setvar
13931
13932 : check for type of the size argument to socket calls
13933 case "$d_socket" in
13934 "$define")
13935         $cat <<EOM
13936
13937 Checking to see what type is the last argument of accept().
13938 EOM
13939         hdrs="$define sys/types.h $d_socket sys/socket.h" 
13940         yyy=''
13941         case "$d_socklen_t" in
13942         "$define") yyy="$yyy socklen_t"
13943         esac
13944         yyy="$yyy $sizetype int long unsigned"
13945         for xxx in $yyy; do
13946                 case "$socksizetype" in
13947                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
13948                         if ./protochk "$try" $hdrs; then
13949                                 echo "Your system accepts '$xxx *' for the last argument of accept()."
13950                                 socksizetype="$xxx"
13951                         fi
13952                         ;;
13953                 esac
13954         done
13955 : In case none of those worked, prompt the user.
13956         case "$socksizetype" in
13957         '')     rp='What is the type for socket address structure sizes?'
13958                 dflt='int'
13959                 . ./myread
13960                 socksizetype=$ans
13961                 ;;
13962         esac
13963         ;;
13964 *)      : no sockets, so pick relatively harmless default
13965         socksizetype='int'
13966         ;;
13967 esac
13968
13969 : see what type is used for signed size_t
13970 set ssize_t ssizetype int stdio.h sys/types.h
13971 eval $typedef
13972 dflt="$ssizetype"
13973 $cat > ssize.c <<EOM
13974 #include <stdio.h>
13975 #include <sys/types.h>
13976 #define Size_t $sizetype
13977 #define SSize_t $dflt
13978 int main()
13979 {
13980         if (sizeof(Size_t) == sizeof(SSize_t))
13981                 printf("$dflt\n");
13982         else if (sizeof(Size_t) == sizeof(int))
13983                 printf("int\n");
13984         else 
13985                 printf("long\n");
13986         exit(0);
13987 }
13988 EOM
13989 echo " "
13990 set ssize
13991 if eval $compile_ok && ./ssize > /dev/null; then
13992         ssizetype=`./ssize`
13993         echo "I'll be using $ssizetype for functions returning a byte count." >&4
13994 else
13995         $cat >&4 <<EOM
13996 Help! I can't compile and run the ssize_t test program: please enlighten me!
13997 (This is probably a misconfiguration in your system or libraries, and
13998 you really ought to fix it.  Still, I'll try anyway.)
13999
14000 I need a type that is the same size as $sizetype, but is guaranteed to
14001 be signed.  Common values are ssize_t, int and long.
14002
14003 EOM
14004         rp="What signed type is the same size as $sizetype?"
14005         . ./myread
14006         ssizetype="$ans"
14007 fi
14008 $rm -f ssize ssize.*
14009
14010 : see what type of char stdio uses.
14011 echo " "
14012 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14013         echo "Your stdio uses unsigned chars." >&4
14014         stdchar="unsigned char"
14015 else
14016         echo "Your stdio uses signed chars." >&4
14017         stdchar="char"
14018 fi
14019
14020 : see if time exists
14021 echo " "
14022 if test "X$d_time" = X -o X"$timetype" = X; then
14023     if set time val -f d_time; eval $csym; $val; then
14024                 echo 'time() found.' >&4
14025                 val="$define"
14026                 rp="What is the type returned by time() on this system?"
14027                 set time_t timetype long stdio.h sys/types.h
14028                 eval $typedef_ask
14029     else
14030                 echo 'time() not found, hope that will do.' >&4
14031                 val="$undef"
14032                 timetype='int';
14033     fi
14034     set d_time
14035     eval $setvar
14036 fi
14037
14038 : see what type uids are declared as in the kernel
14039 echo " "
14040 echo "Looking for the type for user ids returned by getuid()."
14041 set uid_t uidtype xxx stdio.h sys/types.h
14042 eval $typedef
14043 case "$uidtype" in
14044 xxx)
14045         xxx=`./findhdr sys/user.h`
14046         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14047         case $1 in
14048         unsigned) dflt="$1 $2" ;;
14049         *) dflt="$1" ;;
14050         esac
14051         ;;
14052 *) dflt="$uidtype";;
14053 esac
14054 case "$uidtype" in
14055 uid_t)  echo "uid_t found." ;;
14056 *)      rp="What is the type for user ids returned by getuid()?"
14057         . ./myread
14058         uidtype="$ans"
14059         ;;
14060 esac
14061
14062 echo " "
14063 case "$uidtype" in
14064 *_t) zzz="$uidtype"     ;;
14065 *)   zzz="uid"          ;;
14066 esac
14067 echo "Checking the size of $zzz..." >&4 
14068 cat > try.c <<EOCP
14069 #include <sys/types.h>
14070 #include <stdio.h>
14071 int main() {
14072     printf("%d\n", (int)sizeof($uidtype));
14073     exit(0);
14074 }
14075 EOCP
14076 set try
14077 if eval $compile_ok; then
14078         yyy=`./try`
14079         case "$yyy" in
14080         '')     uidsize=4
14081                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14082                 ;;
14083         *)      uidsize=$yyy
14084                 echo "Your $zzz is $uidsize bytes long."
14085                 ;;
14086         esac
14087 else
14088         uidsize=4
14089         echo "(I can't compile the test program--guessing $uidsize.)" >&4
14090 fi
14091
14092 echo " "
14093 case "$uidtype" in
14094 *_t) zzz="$uidtype"     ;;
14095 *)   zzz="uid"          ;;
14096 esac
14097 echo "Checking the sign of $zzz..." >&4
14098 cat > try.c <<EOCP
14099 #include <sys/types.h>
14100 #include <stdio.h>
14101 int main() {
14102         $uidtype foo = -1;
14103         if (foo < 0)
14104                 printf("-1\n");
14105         else
14106                 printf("1\n");
14107 }
14108 EOCP
14109 set try
14110 if eval $compile; then
14111         yyy=`./try`
14112         case "$yyy" in
14113         '')     uidsign=1
14114                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14115                 ;;
14116         *)      uidsign=$yyy
14117                 case "$uidsign" in
14118                  1) echo "Your $zzz is unsigned." ;;
14119                 -1) echo "Your $zzz is signed."   ;;
14120                 esac
14121                 ;;
14122         esac
14123 else
14124         uidsign=1
14125         echo "(I can't compile the test program--guessing unsigned.)" >&4
14126 fi
14127
14128
14129
14130 echo " "
14131 $echo "Checking the format string to be used for uids..." >&4
14132
14133 case "$uidsign" in
14134 -1)     if $test X"$uidsize" = X"$ivsize"; then
14135                 uidformat="$ivdformat"
14136         else
14137                 if $test X"$uidsize" = X"$longsize"; then
14138                         uidformat='"ld"'
14139                 else
14140                         if $test X"$uidsize" = X"$intsize"; then
14141                                 uidformat='"d"'
14142                         else
14143                                 if $test X"$uidsize" = X"$shortsize"; then
14144                                         uidformat='"hd"'
14145                                 fi
14146                         fi
14147                 fi
14148         fi
14149         ;;
14150 *)      if $test X"$uidsize" = X"$uvsize"; then
14151                 uidformat="$uvuformat"
14152         else
14153                 if $test X"$uidsize" = X"$longsize"; then
14154                         uidformat='"lu"'
14155                 else
14156                         if $test X"$uidsize" = X"$intsize"; then
14157                                 uidformat='"u"'
14158                         else
14159                                 if $test X"$uidsize" = X"$shortsize"; then
14160                                         uidformat='"hu"'
14161                                 fi
14162                         fi
14163                 fi
14164         fi
14165         ;;
14166 esac
14167
14168 : see if dbm.h is available
14169 : see if dbmclose exists
14170 set dbmclose d_dbmclose
14171 eval $inlibc
14172
14173 case "$d_dbmclose" in
14174 $define)
14175         set dbm.h i_dbm
14176         eval $inhdr
14177         case "$i_dbm" in
14178         $define)
14179                 val="$undef"
14180                 set i_rpcsvcdbm
14181                 eval $setvar
14182                 ;;
14183         *)      set rpcsvc/dbm.h i_rpcsvcdbm
14184                 eval $inhdr
14185                 ;;
14186         esac
14187         ;;
14188 *)      echo "We won't be including <dbm.h>"
14189         val="$undef"
14190         set i_dbm
14191         eval $setvar
14192         val="$undef"
14193         set i_rpcsvcdbm
14194         eval $setvar
14195         ;;
14196 esac
14197
14198 : see if this is a sys/file.h system
14199 val=''
14200 set sys/file.h val
14201 eval $inhdr
14202
14203 : do we need to include sys/file.h ?
14204 case "$val" in
14205 "$define")
14206         echo " "
14207         if $h_sysfile; then
14208                 val="$define"
14209                 echo "We'll be including <sys/file.h>." >&4
14210         else
14211                 val="$undef"
14212                 echo "We won't be including <sys/file.h>." >&4
14213         fi
14214         ;;
14215 *)
14216         h_sysfile=false
14217         ;;
14218 esac
14219 set i_sysfile
14220 eval $setvar
14221
14222 : see if fcntl.h is there
14223 val=''
14224 set fcntl.h val
14225 eval $inhdr
14226
14227 : see if we can include fcntl.h
14228 case "$val" in
14229 "$define")
14230         echo " "
14231         if $h_fcntl; then
14232                 val="$define"
14233                 echo "We'll be including <fcntl.h>." >&4
14234         else
14235                 val="$undef"
14236                 if $h_sysfile; then
14237         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14238                 else
14239                         echo "We won't be including <fcntl.h>." >&4
14240                 fi
14241         fi
14242         ;;
14243 *)
14244         h_fcntl=false
14245         val="$undef"
14246         ;;
14247 esac
14248 set i_fcntl
14249 eval $setvar
14250
14251 : see if this is a iconv.h system
14252 set iconv.h i_iconv
14253 eval $inhdr
14254
14255 : see if this is a ieeefp.h system
14256 set ieeefp.h i_ieeefp
14257 eval $inhdr
14258
14259 : see if locale.h is available
14260 set locale.h i_locale
14261 eval $inhdr
14262
14263 : see if mach cthreads are available
14264 if test "X$usethreads" = "X$define"; then
14265         set mach/cthreads.h i_machcthr
14266         eval $inhdr
14267 else
14268         i_machcthr="$undef"
14269 fi
14270
14271
14272
14273 : see if this is a math.h system
14274 set math.h i_math
14275 eval $inhdr
14276
14277 : see if this is a mntent.h system
14278 set mntent.h i_mntent
14279 eval $inhdr
14280
14281 : see if ndbm.h is available
14282 set ndbm.h t_ndbm
14283 eval $inhdr
14284 case "$t_ndbm" in
14285 $define)
14286         : see if dbm_open exists
14287         set dbm_open d_dbm_open
14288         eval $inlibc
14289         case "$d_dbm_open" in
14290         $undef)
14291                 t_ndbm="$undef"
14292                 echo "We won't be including <ndbm.h>"
14293                 ;;
14294         esac
14295         ;;
14296 esac
14297 val="$t_ndbm"
14298 set i_ndbm
14299 eval $setvar
14300
14301 : see if net/errno.h is available
14302 val=''
14303 set net/errno.h val
14304 eval $inhdr
14305
14306 : Unfortunately, it causes problems on some systems.  Arrgh.
14307 case "$val" in
14308 $define)
14309         cat > try.c <<'EOM'
14310 #include <stdio.h>
14311 #include <errno.h>
14312 #include <net/errno.h>
14313 int func()
14314 {
14315         return ENOTSOCK;
14316 }
14317 EOM
14318         if $cc $ccflags -c try.c >/dev/null 2>&1; then
14319                 echo "We'll be including <net/errno.h>." >&4
14320         else
14321                 echo "We won't be including <net/errno.h>." >&4
14322                 val="$undef"
14323         fi
14324         $rm -f try.* try
14325         ;;
14326 esac
14327 set i_neterrno
14328 eval $setvar
14329
14330 : see if netinet/tcp.h is available
14331 set netinet/tcp.h i_netinettcp
14332 eval $inhdr
14333
14334 : see if this is a poll.h system
14335 set poll.h i_poll
14336 eval $inhdr
14337
14338 echo " "
14339 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
14340 $cat <<'EOSH' > Cppsym.know
14341 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14342 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14343 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14344 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14345 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14346 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14347 bull c cadmus clipper CMU COFF COMPILER_VERSION
14348 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14349 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14350 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14351 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14352 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14353 H3050R H3050RX hbullx20 hcx host_mips
14354 hp200 hp300 hp700 HP700 hp800 hp9000
14355 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14356 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14357 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14358 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14359 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14360 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14361 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14362 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14363 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14364 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14365 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14366 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14367 MATH_HAS_NO_SIDE_EFFECTS
14368 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14369 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14370 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14371 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14372 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14373 NetBSD news1500 news1700 news1800 news1900 news3700
14374 news700 news800 news900 NeXT NLS ns16000 ns32000
14375 ns32016 ns32332 ns32k nsc32000
14376 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14377 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14378 pc532 pdp11 PGC PIC plexus PORTAR posix
14379 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14380 POSIX_C_SOURCE POSIX_SOURCE POWER
14381 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14382 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14383 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14384 sony sony_news sonyrisc sparc sparclite spectrum
14385 stardent stdc STDC_EXT stratos sun sun3 sun386
14386 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14387 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14388 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14389 sysV68 sysV88 Tek4132 Tek4300 titan
14390 tower tower32 tower32_200 tower32_600 tower32_700
14391 tower32_800 tower32_850 tss
14392 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14393 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14394 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14395 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14396 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14397 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14398 z8000
14399 EOSH
14400 # Maybe put other stuff here too.
14401 cat <<EOSH >>Cppsym.know
14402 $osname
14403 EOSH
14404 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14405 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14406 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
14407 $rm -f Cppsym.a Cppsym.b
14408 cat <<EOSH > Cppsym
14409 $startsh
14410 if $test \$# -gt 0; then
14411     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14412     if $test -s Cppsym.got; then
14413         $rm -f Cppsym.got
14414         exit 0
14415     fi
14416     $rm -f Cppsym.got
14417     exit 1
14418 else
14419     $tr " " "$trnl" | ./Cppsym.try
14420     exit 0
14421 fi
14422 EOSH
14423 chmod +x Cppsym
14424 $eunicefix Cppsym
14425 cat <<EOSH > Cppsym.try
14426 $startsh
14427 cat <<'EOCP' > try.c
14428 #include <stdio.h>
14429 int main() {
14430 EOCP
14431 $awk \\
14432 EOSH
14433 cat <<'EOSH' >> Cppsym.try
14434 'length($1) > 0 {
14435     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
14436     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
14437     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
14438     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
14439 }'       >> try.c
14440 echo '}' >> try.c
14441 EOSH
14442 cat <<EOSH >> Cppsym.try
14443 ccflags="$ccflags"
14444 case "$osname-$gccversion" in
14445 irix-) ccflags="\$ccflags -woff 1178" ;;
14446 esac
14447 $cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14448 EOSH
14449 chmod +x Cppsym.try
14450 $eunicefix Cppsym.try
14451 ./Cppsym < Cppsym.know > Cppsym.true
14452 : now check the C compiler for additional symbols
14453 postprocess_cc_v=''
14454 case "$osname" in
14455 aix) postprocess_cc_v="|$tr , ' '" ;;
14456 esac
14457 $cat >ccsym <<EOS
14458 $startsh
14459 $cat >tmp.c <<EOF
14460 extern int foo;
14461 EOF
14462 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14463 do
14464         case "\$i" in
14465         -D*) echo "\$i" | $sed 's/^-D//';;
14466         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14467         esac
14468 done
14469 $rm -f try.c
14470 EOS
14471 postprocess_cc_v=''
14472 chmod +x ccsym
14473 $eunicefix ccsym
14474 ./ccsym > ccsym1.raw
14475 if $test -s ccsym1.raw; then
14476        $sort ccsym1.raw | $uniq >ccsym.raw
14477 else
14478        mv ccsym1.raw ccsym.raw
14479 fi
14480
14481 $awk '/\=/ { print $0; next }
14482         { print $0"=1" }' ccsym.raw >ccsym.list
14483 $awk '/\=/ { print $0; next }
14484         { print $0"=1" }' Cppsym.true >ccsym.true
14485 $comm -13 ccsym.true ccsym.list >ccsym.own
14486 $comm -12 ccsym.true ccsym.list >ccsym.com
14487 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14488 also=''
14489 if $test -z ccsym.raw; then
14490         echo "Your C compiler doesn't seem to define any symbols!" >&4
14491         echo " "
14492         echo "However, your C preprocessor defines the following symbols:"
14493         $cat Cppsym.true
14494         ccsymbols=''
14495         cppsymbols=`$cat Cppsym.true`
14496         cppsymbols=`echo $cppsymbols`
14497         cppccsymbols="$cppsymbols"
14498 else
14499         if $test -s ccsym.com; then
14500                 echo "Your C compiler and pre-processor define these symbols:"
14501                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
14502                 also='also '
14503                 symbols='ones'
14504                 cppccsymbols=`$cat ccsym.com`
14505                 cppccsymbols=`echo $cppccsymbols`
14506                 $test "$silent" || sleep 1
14507         fi
14508         if $test -s ccsym.cpp; then
14509                 $test "$also" && echo " "
14510                 echo "Your C pre-processor ${also}defines the following symbols:"
14511                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
14512                 also='further '
14513                 cppsymbols=`$cat ccsym.cpp`
14514                 cppsymbols=`echo $cppsymbols`
14515                 $test "$silent" || sleep 1
14516         fi
14517         if $test -s ccsym.own; then
14518                 $test "$also" && echo " "
14519                 echo "Your C compiler ${also}defines the following cpp symbols:"
14520                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
14521                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14522                 ccsymbols=`$cat ccsym.own`
14523                 ccsymbols=`echo $ccsymbols`
14524                 $test "$silent" || sleep 1
14525         fi
14526 fi
14527 $rm -f ccsym*
14528
14529 : see if this is a termio system
14530 val="$undef"
14531 val2="$undef"
14532 val3="$undef"
14533 if $test `./findhdr termios.h`; then
14534         set tcsetattr i_termios
14535         eval $inlibc
14536         val3="$i_termios"
14537 fi
14538 echo " "
14539 case "$val3" in
14540 "$define") echo "You have POSIX termios.h... good!" >&4;;
14541 *) if ./Cppsym pyr; then
14542                 case "`/bin/universe`" in
14543                 ucb) if $test `./findhdr sgtty.h`; then
14544                                 val2="$define"
14545                                 echo "<sgtty.h> found." >&4
14546                         else
14547                                 echo "System is pyramid with BSD universe."
14548                                 echo "<sgtty.h> not found--you could have problems." >&4
14549                         fi;;
14550                 *) if $test `./findhdr termio.h`; then
14551                                 val="$define"
14552                                 echo "<termio.h> found." >&4
14553                         else
14554                                 echo "System is pyramid with USG universe."
14555                                 echo "<termio.h> not found--you could have problems." >&4
14556                         fi;;
14557                 esac
14558         elif ./usg; then
14559                 if $test `./findhdr termio.h`; then
14560                         echo "<termio.h> found." >&4
14561                         val="$define"
14562                 elif $test `./findhdr sgtty.h`; then
14563                         echo "<sgtty.h> found." >&4
14564                         val2="$define"
14565                 else
14566 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14567                 fi
14568         else
14569                 if $test `./findhdr sgtty.h`; then
14570                         echo "<sgtty.h> found." >&4
14571                         val2="$define"
14572                 elif $test `./findhdr termio.h`; then
14573                         echo "<termio.h> found." >&4
14574                         val="$define"
14575                 else
14576 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14577                 fi
14578         fi;;
14579 esac
14580 set i_termio; eval $setvar
14581 val=$val2; set i_sgtty; eval $setvar
14582 val=$val3; set i_termios; eval $setvar
14583
14584 : see if this is a shadow.h system
14585 set shadow.h i_shadow
14586 eval $inhdr
14587
14588 : see if this is a socks.h system
14589 set socks.h i_socks
14590 eval $inhdr
14591
14592 : see if stdarg is available
14593 echo " "
14594 if $test `./findhdr stdarg.h`; then
14595         echo "<stdarg.h> found." >&4
14596         valstd="$define"
14597 else
14598         echo "<stdarg.h> NOT found." >&4
14599         valstd="$undef"
14600 fi
14601
14602 : see if varags is available
14603 echo " "
14604 if $test `./findhdr varargs.h`; then
14605         echo "<varargs.h> found." >&4
14606 else
14607         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14608 fi
14609
14610 : set up the varargs testing programs
14611 $cat > varargs.c <<EOP
14612 #ifdef I_STDARG
14613 #include <stdarg.h>
14614 #endif
14615 #ifdef I_VARARGS
14616 #include <varargs.h>
14617 #endif
14618
14619 #ifdef I_STDARG
14620 int f(char *p, ...)
14621 #else
14622 int f(va_alist)
14623 va_dcl
14624 #endif
14625 {
14626         va_list ap;
14627 #ifndef I_STDARG
14628         char *p;
14629 #endif
14630 #ifdef I_STDARG
14631         va_start(ap,p);
14632 #else
14633         va_start(ap);
14634         p = va_arg(ap, char *);
14635 #endif
14636         va_end(ap);
14637 }
14638 EOP
14639 $cat > varargs <<EOP
14640 $startsh
14641 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14642         echo "true"
14643 else
14644         echo "false"
14645 fi
14646 $rm -f varargs$_o
14647 EOP
14648 chmod +x varargs
14649
14650 : now check which varargs header should be included
14651 echo " "
14652 i_varhdr=''
14653 case "$valstd" in
14654 "$define")
14655         if `./varargs I_STDARG`; then
14656                 val='stdarg.h'
14657         elif `./varargs I_VARARGS`; then
14658                 val='varargs.h'
14659         fi
14660         ;;
14661 *)
14662         if `./varargs I_VARARGS`; then
14663                 val='varargs.h'
14664         fi
14665         ;;
14666 esac
14667 case "$val" in
14668 '')
14669 echo "I could not find the definition for va_dcl... You have problems..." >&4
14670         val="$undef"; set i_stdarg; eval $setvar
14671         val="$undef"; set i_varargs; eval $setvar
14672         ;;
14673 *) 
14674         set i_varhdr
14675         eval $setvar
14676         case "$i_varhdr" in
14677         stdarg.h)
14678                 val="$define"; set i_stdarg; eval $setvar
14679                 val="$undef"; set i_varargs; eval $setvar
14680                 ;;
14681         varargs.h)
14682                 val="$undef"; set i_stdarg; eval $setvar
14683                 val="$define"; set i_varargs; eval $setvar
14684                 ;;
14685         esac
14686         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14687 esac
14688 $rm -f varargs*
14689
14690 : see if stddef is available
14691 set stddef.h i_stddef
14692 eval $inhdr
14693
14694 : see if this is a sunmath.h system
14695 set sunmath.h i_sunmath
14696 eval $inhdr
14697
14698 : see if sys/access.h is available
14699 set sys/access.h i_sysaccess
14700 eval $inhdr
14701
14702 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14703 set sys/filio.h i_sysfilio
14704 eval $inhdr
14705 echo " "
14706 if $test `./findhdr sys/ioctl.h`; then
14707         val="$define"
14708         echo '<sys/ioctl.h> found.' >&4
14709 else
14710         val="$undef"
14711         if $test $i_sysfilio = "$define"; then
14712             echo '<sys/ioctl.h> NOT found.' >&4
14713         else
14714                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14715                 $test $i_termio = "$define" && xxx="termio.h"
14716                 $test $i_termios = "$define" && xxx="termios.h"
14717 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14718         fi
14719 fi
14720 set i_sysioctl
14721 eval $setvar
14722
14723
14724 : see if this is a syslog.h system
14725 set syslog.h i_syslog
14726 eval $inhdr
14727
14728
14729 : see if this is a sys/mode.h system
14730 set sys/mode.h i_sysmode
14731 eval $inhdr
14732
14733 : see if sys/resource.h has to be included
14734 set sys/resource.h i_sysresrc
14735 eval $inhdr
14736
14737 : see if sys/security.h is available
14738 set sys/security.h i_syssecrt
14739 eval $inhdr
14740
14741 : see if this is a sys/statvfs.h system
14742 set sys/statvfs.h i_sysstatvfs
14743 eval $inhdr
14744
14745 : see if this is a sys/uio.h system
14746 set sys/uio.h i_sysuio
14747 eval $inhdr
14748
14749 : see if this is a sys/un.h system
14750 set sys/un.h i_sysun
14751 eval $inhdr
14752
14753
14754 : see if this is a sys/utsname.h system
14755 set sys/utsname.h i_sysutsname
14756 eval $inhdr
14757
14758 : see if this is a syswait system
14759 set sys/wait.h i_syswait
14760 eval $inhdr
14761
14762 : see if this is a ustat.h system
14763 set ustat.h i_ustat
14764 eval $inhdr
14765
14766 : see if this is an utime system
14767 set utime.h i_utime
14768 eval $inhdr
14769
14770 : see if this is a values.h system
14771 set values.h i_values
14772 eval $inhdr
14773
14774 : see if this is a vfork system
14775 case "$d_vfork" in
14776 "$define")
14777         set vfork.h i_vfork
14778         eval $inhdr
14779         ;;
14780 *)
14781         i_vfork="$undef"
14782         ;;
14783 esac
14784
14785 : see if gdbm.h is available
14786 set gdbm.h t_gdbm
14787 eval $inhdr
14788 case "$t_gdbm" in
14789 $define)
14790         : see if gdbm_open exists
14791         set gdbm_open d_gdbm_open
14792         eval $inlibc
14793         case "$d_gdbm_open" in
14794         $undef)
14795                 t_gdbm="$undef"
14796                 echo "We won't be including <gdbm.h>"
14797                 ;;
14798         esac
14799         ;;
14800 esac
14801 val="$t_gdbm"
14802 set i_gdbm
14803 eval $setvar
14804
14805 echo " "
14806 echo "Looking for extensions..." >&4
14807 : If we are using the old config.sh, known_extensions may contain
14808 : old or inaccurate or duplicate values.
14809 known_extensions=''
14810 nonxs_extensions=''
14811 : We do not use find because it might not be available.
14812 : We do not just use MANIFEST because the user may have dropped
14813 : some additional extensions into the source tree and expect them
14814 : to be built.
14815
14816 : Function to recursively find available extensions, ignoring DynaLoader
14817 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14818 find_extensions='
14819     for xxx in *; do
14820        case "$xxx" in
14821            DynaLoader|dynaload) ;;
14822            *)
14823            if $test -f $xxx/$xxx.xs; then
14824                known_extensions="$known_extensions $1$xxx";
14825            elif $test -f $xxx/Makefile.PL; then
14826                nonxs_extensions="$nonxs_extensions $1$xxx";
14827            else
14828                if $test -d $xxx -a $# -lt 10; then
14829                    set $1$xxx/ $*;
14830                    cd $xxx;
14831                    eval $find_extensions;
14832                    cd ..;
14833                    shift;
14834                fi;
14835            fi
14836            ;;
14837        esac;
14838     done'
14839 tdir=`pwd`
14840 cd $rsrc/ext
14841 set X
14842 shift
14843 eval $find_extensions
14844 set X $nonxs_extensions
14845 shift
14846 nonxs_extensions="$*"
14847 set X $known_extensions
14848 shift
14849 known_extensions="$*"
14850 cd $tdir
14851
14852 : Now see which are supported on this system.
14853 avail_ext=''
14854 for xxx in $known_extensions ; do
14855         case "$xxx" in
14856         DB_File|db_file)
14857                 case "$i_db" in
14858                 $define) avail_ext="$avail_ext $xxx" ;;
14859                 esac
14860                 ;;
14861         GDBM_File|gdbm_fil)
14862                 case "$i_gdbm" in 
14863                 $define) avail_ext="$avail_ext $xxx" ;;
14864                 esac
14865                 ;;
14866         NDBM_File|ndbm_fil)
14867                 case "$i_ndbm" in
14868                 $define)
14869                     case "$osname-$use64bitint" in
14870                     hpux-define)
14871                         case "$libs" in
14872                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14873                         esac
14874                         ;;
14875                     *) avail_ext="$avail_ext $xxx" ;;
14876                     esac
14877                     ;;
14878                 esac
14879                 ;;
14880         ODBM_File|odbm_fil) 
14881                 case "${i_dbm}${i_rpcsvcdbm}" in
14882                 *"${define}"*)
14883                     case "$osname-$use64bitint" in
14884                     hpux-define)
14885                         case "$libs" in
14886                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14887                         esac
14888                         ;;
14889                     *) avail_ext="$avail_ext $xxx" ;;
14890                     esac
14891                     ;;
14892                 esac
14893                 ;;
14894         POSIX|posix)
14895                 case "$useposix" in
14896                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14897                 esac
14898                 ;;
14899         Opcode|opcode)
14900                 case "$useopcode" in
14901                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14902                 esac
14903                 ;;
14904         Socket|socket)
14905                 case "$d_socket" in 
14906                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14907                 esac
14908                 ;;
14909         Thread|thread)
14910                 case "$usethreads" in 
14911                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14912                 esac
14913                 ;;
14914         IPC/SysV|ipc/sysv)
14915                 : XXX Do we need a useipcsysv variable here
14916                 case "${d_msg}${d_sem}${d_shm}" in 
14917                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14918                 esac
14919                 ;;
14920         *)      avail_ext="$avail_ext $xxx"
14921                 ;;
14922         esac
14923 done
14924
14925 set X $avail_ext
14926 shift
14927 avail_ext="$*"
14928
14929 : Now see which nonxs extensions are supported on this system.
14930 : For now assume all are.
14931 nonxs_ext=''
14932 for xxx in $nonxs_extensions ; do
14933         case "$xxx" in
14934         *)      nonxs_ext="$nonxs_ext $xxx"
14935                 ;;
14936         esac
14937 done
14938
14939 set X $nonxs_ext
14940 shift
14941 nonxs_ext="$*"
14942
14943 case $usedl in
14944 $define)
14945         $cat <<EOM
14946 A number of extensions are supplied with $package.  You may choose to
14947 compile these extensions for dynamic loading (the default), compile
14948 them into the $package executable (static loading), or not include
14949 them at all.  Answer "none" to include no extensions.
14950 Note that DynaLoader is always built and need not be mentioned here.
14951
14952 EOM
14953         case "$dynamic_ext" in
14954         '') dflt="$avail_ext" ;;
14955         *)      dflt="$dynamic_ext"
14956                 # Perhaps we are reusing an old out-of-date config.sh.
14957                 case "$hint" in
14958                 previous)
14959                         if test X"$dynamic_ext" != X"$avail_ext"; then
14960                                 $cat <<EOM
14961 NOTICE:  Your previous config.sh list may be incorrect. 
14962 The extensions now available to you are 
14963         ${avail_ext}
14964 but the default list from your previous config.sh is
14965         ${dynamic_ext} 
14966
14967 EOM
14968                         fi
14969                         ;;
14970                 esac
14971                 ;;
14972         esac
14973         case "$dflt" in
14974         '')     dflt=none;;
14975         esac
14976         rp="What extensions do you wish to load dynamically?"
14977         . ./myread
14978         case "$ans" in
14979         none) dynamic_ext=' ' ;;
14980         *) dynamic_ext="$ans" ;;
14981         esac
14982
14983         case "$static_ext" in
14984         '')
14985                 : Exclude those already listed in dynamic linking
14986                 dflt=''
14987                 for xxx in $avail_ext; do
14988                         case " $dynamic_ext " in
14989                         *" $xxx "*) ;;
14990                         *) dflt="$dflt $xxx" ;;
14991                         esac
14992                 done
14993                 set X $dflt
14994                 shift
14995                 dflt="$*"
14996                 ;;
14997         *)  dflt="$static_ext" 
14998                 ;;
14999         esac
15000
15001         case "$dflt" in
15002         '')     dflt=none;;
15003         esac
15004         rp="What extensions do you wish to load statically?"
15005         . ./myread
15006         case "$ans" in
15007         none) static_ext=' ' ;;
15008         *) static_ext="$ans" ;;
15009         esac
15010         ;;
15011 *)
15012         $cat <<EOM
15013 A number of extensions are supplied with $package.  Answer "none" 
15014 to include no extensions. 
15015 Note that DynaLoader is always built and need not be mentioned here.
15016
15017 EOM
15018         case "$static_ext" in
15019         '') dflt="$avail_ext" ;;
15020         *)      dflt="$static_ext"
15021                 # Perhaps we are reusing an old out-of-date config.sh.
15022                 case "$hint" in
15023                 previous)
15024                         if test X"$static_ext" != X"$avail_ext"; then
15025                                 $cat <<EOM
15026 NOTICE:  Your previous config.sh list may be incorrect. 
15027 The extensions now available to you are 
15028         ${avail_ext}
15029 but the default list from your previous config.sh is
15030         ${static_ext} 
15031
15032 EOM
15033                         fi
15034                         ;;
15035                 esac
15036                 ;;
15037         esac
15038         : Exclude those that are not xs extensions
15039         case "$dflt" in
15040         '')     dflt=none;;
15041         esac
15042         rp="What extensions do you wish to include?"
15043         . ./myread
15044         case "$ans" in
15045         none) static_ext=' ' ;;
15046         *) static_ext="$ans" ;;
15047         esac
15048         ;;
15049 esac
15050
15051 set X $dynamic_ext $static_ext $nonxs_ext
15052 shift
15053 extensions="$*"
15054
15055 : Remove build directory name from cppstdin so it can be used from
15056 : either the present location or the final installed location.
15057 echo " "
15058 : Get out of the UU directory to get correct path name.
15059 cd ..
15060 case "$cppstdin" in
15061 `pwd`/cppstdin)
15062         echo "Stripping down cppstdin path name"
15063         cppstdin=cppstdin
15064         ;;
15065 esac
15066 cd UU
15067
15068 : end of configuration questions
15069 echo " "
15070 echo "End of configuration questions."
15071 echo " "
15072
15073 : back to where it started
15074 if test -d ../UU; then
15075         cd ..
15076 fi
15077
15078 : configuration may be patched via a 'config.over' file
15079 if $test -f config.over; then
15080         echo " "
15081         dflt=y
15082         rp='I see a config.over file.  Do you wish to load it?'
15083         . UU/myread
15084         case "$ans" in
15085         n*) echo "OK, I'll ignore it.";;
15086         *)      . ./config.over
15087                 echo "Configuration override changes have been loaded."
15088                 ;;
15089         esac
15090 fi
15091
15092 : in case they want portability, strip down executable paths
15093 case "$d_portable" in
15094 "$define")
15095         echo " "
15096         echo "Stripping down executable paths..." >&4
15097         for file in $loclist $trylist; do
15098                 eval temp=\$$file
15099                 eval $file=`basename $temp`
15100         done
15101         ;;
15102 esac
15103
15104 : create config.sh file
15105 echo " "
15106 echo "Creating config.sh..." >&4
15107 $spitshell <<EOT >config.sh
15108 $startsh
15109 #
15110 # This file was produced by running the Configure script. It holds all the
15111 # definitions figured out by Configure. Should you modify one of these values,
15112 # do not forget to propagate your changes by running "Configure -der". You may
15113 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15114 #
15115
15116 # Package name      : $package
15117 # Source directory  : $src
15118 # Configuration time: $cf_time
15119 # Configured by     : $cf_by
15120 # Target system     : $myuname
15121
15122 Author='$Author'
15123 Date='$Date'
15124 Header='$Header'
15125 Id='$Id'
15126 Locker='$Locker'
15127 Log='$Log'
15128 Mcc='$Mcc'
15129 RCSfile='$RCSfile'
15130 Revision='$Revision'
15131 Source='$Source'
15132 State='$State'
15133 _a='$_a'
15134 _exe='$_exe'
15135 _o='$_o'
15136 afs='$afs'
15137 alignbytes='$alignbytes'
15138 ansi2knr='$ansi2knr'
15139 aphostname='$aphostname'
15140 api_revision='$api_revision'
15141 api_subversion='$api_subversion'
15142 api_version='$api_version'
15143 api_versionstring='$api_versionstring'
15144 ar='$ar'
15145 archlib='$archlib'
15146 archlibexp='$archlibexp'
15147 archname64='$archname64'
15148 archname='$archname'
15149 archobjs='$archobjs'
15150 awk='$awk'
15151 baserev='$baserev'
15152 bash='$bash'
15153 bin='$bin'
15154 bincompat5005='$bincompat5005'
15155 binexp='$binexp'
15156 bison='$bison'
15157 byacc='$byacc'
15158 byteorder='$byteorder'
15159 c='$c'
15160 castflags='$castflags'
15161 cat='$cat'
15162 cc='$cc'
15163 cccdlflags='$cccdlflags'
15164 ccdlflags='$ccdlflags'
15165 ccflags='$ccflags'
15166 ccsymbols='$ccsymbols'
15167 cf_by='$cf_by'
15168 cf_email='$cf_email'
15169 cf_time='$cf_time'
15170 charsize='$charsize'
15171 chgrp='$chgrp'
15172 chmod='$chmod'
15173 chown='$chown'
15174 clocktype='$clocktype'
15175 comm='$comm'
15176 compress='$compress'
15177 contains='$contains'
15178 cp='$cp'
15179 cpio='$cpio'
15180 cpp='$cpp'
15181 cpp_stuff='$cpp_stuff'
15182 cppccsymbols='$cppccsymbols'
15183 cppflags='$cppflags'
15184 cpplast='$cpplast'
15185 cppminus='$cppminus'
15186 cpprun='$cpprun'
15187 cppstdin='$cppstdin'
15188 cppsymbols='$cppsymbols'
15189 crosscompile='$crosscompile'
15190 cryptlib='$cryptlib'
15191 csh='$csh'
15192 d_Gconvert='$d_Gconvert'
15193 d_PRIEldbl='$d_PRIEldbl'
15194 d_PRIFldbl='$d_PRIFldbl'
15195 d_PRIGldbl='$d_PRIGldbl'
15196 d_PRIX64='$d_PRIX64'
15197 d_PRId64='$d_PRId64'
15198 d_PRIeldbl='$d_PRIeldbl'
15199 d_PRIfldbl='$d_PRIfldbl'
15200 d_PRIgldbl='$d_PRIgldbl'
15201 d_PRIi64='$d_PRIi64'
15202 d_PRIo64='$d_PRIo64'
15203 d_PRIu64='$d_PRIu64'
15204 d_PRIx64='$d_PRIx64'
15205 d_access='$d_access'
15206 d_accessx='$d_accessx'
15207 d_alarm='$d_alarm'
15208 d_archlib='$d_archlib'
15209 d_atolf='$d_atolf'
15210 d_atoll='$d_atoll'
15211 d_attribut='$d_attribut'
15212 d_bcmp='$d_bcmp'
15213 d_bcopy='$d_bcopy'
15214 d_bincompat5005='$d_bincompat5005'
15215 d_bsd='$d_bsd'
15216 d_bsdgetpgrp='$d_bsdgetpgrp'
15217 d_bsdsetpgrp='$d_bsdsetpgrp'
15218 d_bzero='$d_bzero'
15219 d_casti32='$d_casti32'
15220 d_castneg='$d_castneg'
15221 d_charvspr='$d_charvspr'
15222 d_chown='$d_chown'
15223 d_chroot='$d_chroot'
15224 d_chsize='$d_chsize'
15225 d_closedir='$d_closedir'
15226 d_const='$d_const'
15227 d_crypt='$d_crypt'
15228 d_csh='$d_csh'
15229 d_cuserid='$d_cuserid'
15230 d_dbl_dig='$d_dbl_dig'
15231 d_difftime='$d_difftime'
15232 d_dirnamlen='$d_dirnamlen'
15233 d_dlerror='$d_dlerror'
15234 d_dlopen='$d_dlopen'
15235 d_dlsymun='$d_dlsymun'
15236 d_dosuid='$d_dosuid'
15237 d_drand48proto='$d_drand48proto'
15238 d_dup2='$d_dup2'
15239 d_eaccess='$d_eaccess'
15240 d_endgrent='$d_endgrent'
15241 d_endhent='$d_endhent'
15242 d_endnent='$d_endnent'
15243 d_endpent='$d_endpent'
15244 d_endpwent='$d_endpwent'
15245 d_endsent='$d_endsent'
15246 d_eofnblk='$d_eofnblk'
15247 d_eunice='$d_eunice'
15248 d_fchmod='$d_fchmod'
15249 d_fchown='$d_fchown'
15250 d_fcntl='$d_fcntl'
15251 d_fd_macros='$d_fd_macros'
15252 d_fd_set='$d_fd_set'
15253 d_fds_bits='$d_fds_bits'
15254 d_fgetpos='$d_fgetpos'
15255 d_flexfnam='$d_flexfnam'
15256 d_flock='$d_flock'
15257 d_fork='$d_fork'
15258 d_fpathconf='$d_fpathconf'
15259 d_fpos64_t='$d_fpos64_t'
15260 d_frexpl='$d_frexpl'
15261 d_fs_data_s='$d_fs_data_s'
15262 d_fseeko='$d_fseeko'
15263 d_fsetpos='$d_fsetpos'
15264 d_fstatfs='$d_fstatfs'
15265 d_fstatvfs='$d_fstatvfs'
15266 d_ftello='$d_ftello'
15267 d_ftime='$d_ftime'
15268 d_getcwd='$d_getcwd'
15269 d_getfsstat='$d_getfsstat'
15270 d_getgrent='$d_getgrent'
15271 d_getgrps='$d_getgrps'
15272 d_gethbyaddr='$d_gethbyaddr'
15273 d_gethbyname='$d_gethbyname'
15274 d_gethent='$d_gethent'
15275 d_gethname='$d_gethname'
15276 d_gethostprotos='$d_gethostprotos'
15277 d_getlogin='$d_getlogin'
15278 d_getmnt='$d_getmnt'
15279 d_getmntent='$d_getmntent'
15280 d_getnbyaddr='$d_getnbyaddr'
15281 d_getnbyname='$d_getnbyname'
15282 d_getnent='$d_getnent'
15283 d_getnetprotos='$d_getnetprotos'
15284 d_getpbyname='$d_getpbyname'
15285 d_getpbynumber='$d_getpbynumber'
15286 d_getpent='$d_getpent'
15287 d_getpgid='$d_getpgid'
15288 d_getpgrp2='$d_getpgrp2'
15289 d_getpgrp='$d_getpgrp'
15290 d_getppid='$d_getppid'
15291 d_getprior='$d_getprior'
15292 d_getprotoprotos='$d_getprotoprotos'
15293 d_getpwent='$d_getpwent'
15294 d_getsbyname='$d_getsbyname'
15295 d_getsbyport='$d_getsbyport'
15296 d_getsent='$d_getsent'
15297 d_getservprotos='$d_getservprotos'
15298 d_getspnam='$d_getspnam'
15299 d_gettimeod='$d_gettimeod'
15300 d_gnulibc='$d_gnulibc'
15301 d_grpasswd='$d_grpasswd'
15302 d_hasmntopt='$d_hasmntopt'
15303 d_htonl='$d_htonl'
15304 d_iconv='$d_iconv'
15305 d_index='$d_index'
15306 d_inetaton='$d_inetaton'
15307 d_int64_t='$d_int64_t'
15308 d_isascii='$d_isascii'
15309 d_isnan='$d_isnan'
15310 d_isnanl='$d_isnanl'
15311 d_killpg='$d_killpg'
15312 d_lchown='$d_lchown'
15313 d_ldbl_dig='$d_ldbl_dig'
15314 d_link='$d_link'
15315 d_locconv='$d_locconv'
15316 d_lockf='$d_lockf'
15317 d_longdbl='$d_longdbl'
15318 d_longlong='$d_longlong'
15319 d_lseekproto='$d_lseekproto'
15320 d_lstat='$d_lstat'
15321 d_madvise='$d_madvise'
15322 d_mblen='$d_mblen'
15323 d_mbstowcs='$d_mbstowcs'
15324 d_mbtowc='$d_mbtowc'
15325 d_memchr='$d_memchr'
15326 d_memcmp='$d_memcmp'
15327 d_memcpy='$d_memcpy'
15328 d_memmove='$d_memmove'
15329 d_memset='$d_memset'
15330 d_mkdir='$d_mkdir'
15331 d_mkdtemp='$d_mkdtemp'
15332 d_mkfifo='$d_mkfifo'
15333 d_mkstemp='$d_mkstemp'
15334 d_mkstemps='$d_mkstemps'
15335 d_mktime='$d_mktime'
15336 d_mmap='$d_mmap'
15337 d_modfl='$d_modfl'
15338 d_mprotect='$d_mprotect'
15339 d_msg='$d_msg'
15340 d_msg_ctrunc='$d_msg_ctrunc'
15341 d_msg_dontroute='$d_msg_dontroute'
15342 d_msg_oob='$d_msg_oob'
15343 d_msg_peek='$d_msg_peek'
15344 d_msg_proxy='$d_msg_proxy'
15345 d_msgctl='$d_msgctl'
15346 d_msgget='$d_msgget'
15347 d_msgrcv='$d_msgrcv'
15348 d_msgsnd='$d_msgsnd'
15349 d_msync='$d_msync'
15350 d_munmap='$d_munmap'
15351 d_mymalloc='$d_mymalloc'
15352 d_nice='$d_nice'
15353 d_nv_preserved_bits='$d_nv_preserved_bits'
15354 d_nv_preserves_uv='$d_nv_preserves_uv'
15355 d_off64_t='$d_off64_t'
15356 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15357 d_oldpthreads='$d_oldpthreads'
15358 d_oldsock='$d_oldsock'
15359 d_open3='$d_open3'
15360 d_pathconf='$d_pathconf'
15361 d_pause='$d_pause'
15362 d_perl_otherlibdirs='$d_perl_otherlibdirs'
15363 d_phostname='$d_phostname'
15364 d_pipe='$d_pipe'
15365 d_poll='$d_poll'
15366 d_portable='$d_portable'
15367 d_pthread_yield='$d_pthread_yield'
15368 d_pwage='$d_pwage'
15369 d_pwchange='$d_pwchange'
15370 d_pwclass='$d_pwclass'
15371 d_pwcomment='$d_pwcomment'
15372 d_pwexpire='$d_pwexpire'
15373 d_pwgecos='$d_pwgecos'
15374 d_pwpasswd='$d_pwpasswd'
15375 d_pwquota='$d_pwquota'
15376 d_qgcvt='$d_qgcvt'
15377 d_quad='$d_quad'
15378 d_readdir='$d_readdir'
15379 d_readlink='$d_readlink'
15380 d_rename='$d_rename'
15381 d_rewinddir='$d_rewinddir'
15382 d_rmdir='$d_rmdir'
15383 d_safebcpy='$d_safebcpy'
15384 d_safemcpy='$d_safemcpy'
15385 d_sanemcmp='$d_sanemcmp'
15386 d_sched_yield='$d_sched_yield'
15387 d_scm_rights='$d_scm_rights'
15388 d_seekdir='$d_seekdir'
15389 d_select='$d_select'
15390 d_sem='$d_sem'
15391 d_semctl='$d_semctl'
15392 d_semctl_semid_ds='$d_semctl_semid_ds'
15393 d_semctl_semun='$d_semctl_semun'
15394 d_semget='$d_semget'
15395 d_semop='$d_semop'
15396 d_setegid='$d_setegid'
15397 d_seteuid='$d_seteuid'
15398 d_setgrent='$d_setgrent'
15399 d_setgrps='$d_setgrps'
15400 d_sethent='$d_sethent'
15401 d_setlinebuf='$d_setlinebuf'
15402 d_setlocale='$d_setlocale'
15403 d_setnent='$d_setnent'
15404 d_setpent='$d_setpent'
15405 d_setpgid='$d_setpgid'
15406 d_setpgrp2='$d_setpgrp2'
15407 d_setpgrp='$d_setpgrp'
15408 d_setprior='$d_setprior'
15409 d_setpwent='$d_setpwent'
15410 d_setregid='$d_setregid'
15411 d_setresgid='$d_setresgid'
15412 d_setresuid='$d_setresuid'
15413 d_setreuid='$d_setreuid'
15414 d_setrgid='$d_setrgid'
15415 d_setruid='$d_setruid'
15416 d_setsent='$d_setsent'
15417 d_setsid='$d_setsid'
15418 d_setvbuf='$d_setvbuf'
15419 d_sfio='$d_sfio'
15420 d_shm='$d_shm'
15421 d_shmat='$d_shmat'
15422 d_shmatprototype='$d_shmatprototype'
15423 d_shmctl='$d_shmctl'
15424 d_shmdt='$d_shmdt'
15425 d_shmget='$d_shmget'
15426 d_sigaction='$d_sigaction'
15427 d_sigsetjmp='$d_sigsetjmp'
15428 d_socket='$d_socket'
15429 d_socklen_t='$d_socklen_t'
15430 d_sockpair='$d_sockpair'
15431 d_sqrtl='$d_sqrtl'
15432 d_statblks='$d_statblks'
15433 d_statfs_f_flags='$d_statfs_f_flags'
15434 d_statfs_s='$d_statfs_s'
15435 d_statvfs='$d_statvfs'
15436 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15437 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15438 d_stdio_stream_array='$d_stdio_stream_array'
15439 d_stdiobase='$d_stdiobase'
15440 d_stdstdio='$d_stdstdio'
15441 d_strchr='$d_strchr'
15442 d_strcoll='$d_strcoll'
15443 d_strctcpy='$d_strctcpy'
15444 d_strerrm='$d_strerrm'
15445 d_strerror='$d_strerror'
15446 d_strtod='$d_strtod'
15447 d_strtol='$d_strtol'
15448 d_strtold='$d_strtold'
15449 d_strtoll='$d_strtoll'
15450 d_strtoul='$d_strtoul'
15451 d_strtoull='$d_strtoull'
15452 d_strtouq='$d_strtouq'
15453 d_strxfrm='$d_strxfrm'
15454 d_suidsafe='$d_suidsafe'
15455 d_symlink='$d_symlink'
15456 d_syscall='$d_syscall'
15457 d_sysconf='$d_sysconf'
15458 d_sysernlst='$d_sysernlst'
15459 d_syserrlst='$d_syserrlst'
15460 d_system='$d_system'
15461 d_tcgetpgrp='$d_tcgetpgrp'
15462 d_tcsetpgrp='$d_tcsetpgrp'
15463 d_telldir='$d_telldir'
15464 d_telldirproto='$d_telldirproto'
15465 d_time='$d_time'
15466 d_times='$d_times'
15467 d_truncate='$d_truncate'
15468 d_tzname='$d_tzname'
15469 d_umask='$d_umask'
15470 d_uname='$d_uname'
15471 d_union_semun='$d_union_semun'
15472 d_ustat='$d_ustat'
15473 d_vendorarch='$d_vendorarch'
15474 d_vendorbin='$d_vendorbin'
15475 d_vendorlib='$d_vendorlib'
15476 d_vfork='$d_vfork'
15477 d_void_closedir='$d_void_closedir'
15478 d_voidsig='$d_voidsig'
15479 d_voidtty='$d_voidtty'
15480 d_volatile='$d_volatile'
15481 d_vprintf='$d_vprintf'
15482 d_wait4='$d_wait4'
15483 d_waitpid='$d_waitpid'
15484 d_wcstombs='$d_wcstombs'
15485 d_wctomb='$d_wctomb'
15486 d_xenix='$d_xenix'
15487 date='$date'
15488 db_hashtype='$db_hashtype'
15489 db_prefixtype='$db_prefixtype'
15490 defvoidused='$defvoidused'
15491 direntrytype='$direntrytype'
15492 dlext='$dlext'
15493 dlsrc='$dlsrc'
15494 doublesize='$doublesize'
15495 drand01='$drand01'
15496 dynamic_ext='$dynamic_ext'
15497 eagain='$eagain'
15498 ebcdic='$ebcdic'
15499 echo='$echo'
15500 egrep='$egrep'
15501 emacs='$emacs'
15502 eunicefix='$eunicefix'
15503 exe_ext='$exe_ext'
15504 expr='$expr'
15505 extensions='$extensions'
15506 fflushNULL='$fflushNULL'
15507 fflushall='$fflushall'
15508 find='$find'
15509 firstmakefile='$firstmakefile'
15510 flex='$flex'
15511 fpossize='$fpossize'
15512 fpostype='$fpostype'
15513 freetype='$freetype'
15514 full_ar='$full_ar'
15515 full_csh='$full_csh'
15516 full_sed='$full_sed'
15517 gccversion='$gccversion'
15518 gidformat='$gidformat'
15519 gidsign='$gidsign'
15520 gidsize='$gidsize'
15521 gidtype='$gidtype'
15522 glibpth='$glibpth'
15523 grep='$grep'
15524 groupcat='$groupcat'
15525 groupstype='$groupstype'
15526 gzip='$gzip'
15527 h_fcntl='$h_fcntl'
15528 h_sysfile='$h_sysfile'
15529 hint='$hint'
15530 hostcat='$hostcat'
15531 huge='$huge'
15532 i16size='$i16size'
15533 i16type='$i16type'
15534 i32size='$i32size'
15535 i32type='$i32type'
15536 i64size='$i64size'
15537 i64type='$i64type'
15538 i8size='$i8size'
15539 i8type='$i8type'
15540 i_arpainet='$i_arpainet'
15541 i_bsdioctl='$i_bsdioctl'
15542 i_db='$i_db'
15543 i_dbm='$i_dbm'
15544 i_dirent='$i_dirent'
15545 i_dld='$i_dld'
15546 i_dlfcn='$i_dlfcn'
15547 i_fcntl='$i_fcntl'
15548 i_float='$i_float'
15549 i_gdbm='$i_gdbm'
15550 i_grp='$i_grp'
15551 i_iconv='$i_iconv'
15552 i_ieeefp='$i_ieeefp'
15553 i_inttypes='$i_inttypes'
15554 i_limits='$i_limits'
15555 i_locale='$i_locale'
15556 i_machcthr='$i_machcthr'
15557 i_malloc='$i_malloc'
15558 i_math='$i_math'
15559 i_memory='$i_memory'
15560 i_mntent='$i_mntent'
15561 i_ndbm='$i_ndbm'
15562 i_netdb='$i_netdb'
15563 i_neterrno='$i_neterrno'
15564 i_netinettcp='$i_netinettcp'
15565 i_niin='$i_niin'
15566 i_poll='$i_poll'
15567 i_pthread='$i_pthread'
15568 i_pwd='$i_pwd'
15569 i_rpcsvcdbm='$i_rpcsvcdbm'
15570 i_sfio='$i_sfio'
15571 i_sgtty='$i_sgtty'
15572 i_shadow='$i_shadow'
15573 i_socks='$i_socks'
15574 i_stdarg='$i_stdarg'
15575 i_stddef='$i_stddef'
15576 i_stdlib='$i_stdlib'
15577 i_string='$i_string'
15578 i_sunmath='$i_sunmath'
15579 i_sysaccess='$i_sysaccess'
15580 i_sysdir='$i_sysdir'
15581 i_sysfile='$i_sysfile'
15582 i_sysfilio='$i_sysfilio'
15583 i_sysin='$i_sysin'
15584 i_sysioctl='$i_sysioctl'
15585 i_syslog='$i_syslog'
15586 i_sysmman='$i_sysmman'
15587 i_sysmode='$i_sysmode'
15588 i_sysmount='$i_sysmount'
15589 i_sysndir='$i_sysndir'
15590 i_sysparam='$i_sysparam'
15591 i_sysresrc='$i_sysresrc'
15592 i_syssecrt='$i_syssecrt'
15593 i_sysselct='$i_sysselct'
15594 i_syssockio='$i_syssockio'
15595 i_sysstat='$i_sysstat'
15596 i_sysstatfs='$i_sysstatfs'
15597 i_sysstatvfs='$i_sysstatvfs'
15598 i_systime='$i_systime'
15599 i_systimek='$i_systimek'
15600 i_systimes='$i_systimes'
15601 i_systypes='$i_systypes'
15602 i_sysuio='$i_sysuio'
15603 i_sysun='$i_sysun'
15604 i_sysutsname='$i_sysutsname'
15605 i_sysvfs='$i_sysvfs'
15606 i_syswait='$i_syswait'
15607 i_termio='$i_termio'
15608 i_termios='$i_termios'
15609 i_time='$i_time'
15610 i_unistd='$i_unistd'
15611 i_ustat='$i_ustat'
15612 i_utime='$i_utime'
15613 i_values='$i_values'
15614 i_varargs='$i_varargs'
15615 i_varhdr='$i_varhdr'
15616 i_vfork='$i_vfork'
15617 ignore_versioned_solibs='$ignore_versioned_solibs'
15618 inc_version_list='$inc_version_list'
15619 inc_version_list_init='$inc_version_list_init'
15620 incpath='$incpath'
15621 inews='$inews'
15622 installarchlib='$installarchlib'
15623 installbin='$installbin'
15624 installman1dir='$installman1dir'
15625 installman3dir='$installman3dir'
15626 installprefix='$installprefix'
15627 installprefixexp='$installprefixexp'
15628 installprivlib='$installprivlib'
15629 installscript='$installscript'
15630 installsitearch='$installsitearch'
15631 installsitebin='$installsitebin'
15632 installsitelib='$installsitelib'
15633 installstyle='$installstyle'
15634 installusrbinperl='$installusrbinperl'
15635 installvendorarch='$installvendorarch'
15636 installvendorbin='$installvendorbin'
15637 installvendorlib='$installvendorlib'
15638 intsize='$intsize'
15639 ivdformat='$ivdformat'
15640 ivsize='$ivsize'
15641 ivtype='$ivtype'
15642 known_extensions='$known_extensions'
15643 ksh='$ksh'
15644 large='$large'
15645 ld='$ld'
15646 lddlflags='$lddlflags'
15647 ldflags='$ldflags'
15648 ldlibpthname='$ldlibpthname'
15649 less='$less'
15650 lib_ext='$lib_ext'
15651 libc='$libc'
15652 libperl='$libperl'
15653 libpth='$libpth'
15654 libs='$libs'
15655 libsdirs='$libsdirs'
15656 libsfiles='$libsfiles'
15657 libsfound='$libsfound'
15658 libspath='$libspath'
15659 libswanted='$libswanted'
15660 line='$line'
15661 lint='$lint'
15662 lkflags='$lkflags'
15663 ln='$ln'
15664 lns='$lns'
15665 locincpth='$locincpth'
15666 loclibpth='$loclibpth'
15667 longdblsize='$longdblsize'
15668 longlongsize='$longlongsize'
15669 longsize='$longsize'
15670 lp='$lp'
15671 lpr='$lpr'
15672 ls='$ls'
15673 lseeksize='$lseeksize'
15674 lseektype='$lseektype'
15675 mail='$mail'
15676 mailx='$mailx'
15677 make='$make'
15678 make_set_make='$make_set_make'
15679 mallocobj='$mallocobj'
15680 mallocsrc='$mallocsrc'
15681 malloctype='$malloctype'
15682 man1dir='$man1dir'
15683 man1direxp='$man1direxp'
15684 man1ext='$man1ext'
15685 man3dir='$man3dir'
15686 man3direxp='$man3direxp'
15687 man3ext='$man3ext'
15688 medium='$medium'
15689 mips_type='$mips_type'
15690 mkdir='$mkdir'
15691 mmaptype='$mmaptype'
15692 models='$models'
15693 modetype='$modetype'
15694 more='$more'
15695 multiarch='$multiarch'
15696 mv='$mv'
15697 myarchname='$myarchname'
15698 mydomain='$mydomain'
15699 myhostname='$myhostname'
15700 myuname='$myuname'
15701 n='$n'
15702 netdb_hlen_type='$netdb_hlen_type'
15703 netdb_host_type='$netdb_host_type'
15704 netdb_name_type='$netdb_name_type'
15705 netdb_net_type='$netdb_net_type'
15706 nm='$nm'
15707 nm_opt='$nm_opt'
15708 nm_so_opt='$nm_so_opt'
15709 nonxs_ext='$nonxs_ext'
15710 nroff='$nroff'
15711 nvsize='$nvsize'
15712 nvtype='$nvtype'
15713 o_nonblock='$o_nonblock'
15714 obj_ext='$obj_ext'
15715 old_pthread_create_joinable='$old_pthread_create_joinable'
15716 optimize='$optimize'
15717 orderlib='$orderlib'
15718 osname='$osname'
15719 osvers='$osvers'
15720 otherlibdirs='$otherlibdirs'
15721 package='$package'
15722 pager='$pager'
15723 passcat='$passcat'
15724 patchlevel='$patchlevel'
15725 path_sep='$path_sep'
15726 perl5='$perl5'
15727 perl='$perl'
15728 perladmin='$perladmin'
15729 perlpath='$perlpath'
15730 pg='$pg'
15731 phostname='$phostname'
15732 pidtype='$pidtype'
15733 plibpth='$plibpth'
15734 pm_apiversion='$pm_apiversion'
15735 pmake='$pmake'
15736 pr='$pr'
15737 prefix='$prefix'
15738 prefixexp='$prefixexp'
15739 privlib='$privlib'
15740 privlibexp='$privlibexp'
15741 prototype='$prototype'
15742 ptrsize='$ptrsize'
15743 quadkind='$quadkind'
15744 quadtype='$quadtype'
15745 randbits='$randbits'
15746 randfunc='$randfunc'
15747 randseedtype='$randseedtype'
15748 ranlib='$ranlib'
15749 rd_nodata='$rd_nodata'
15750 revision='$revision'
15751 rm='$rm'
15752 rmail='$rmail'
15753 runnm='$runnm'
15754 sPRIEldbl='$sPRIEldbl'
15755 sPRIFldbl='$sPRIFldbl'
15756 sPRIGldbl='$sPRIGldbl'
15757 sPRIX64='$sPRIX64'
15758 sPRId64='$sPRId64'
15759 sPRIeldbl='$sPRIeldbl'
15760 sPRIfldbl='$sPRIfldbl'
15761 sPRIgldbl='$sPRIgldbl'
15762 sPRIi64='$sPRIi64'
15763 sPRIo64='$sPRIo64'
15764 sPRIu64='$sPRIu64'
15765 sPRIx64='$sPRIx64'
15766 sched_yield='$sched_yield'
15767 scriptdir='$scriptdir'
15768 scriptdirexp='$scriptdirexp'
15769 sed='$sed'
15770 seedfunc='$seedfunc'
15771 selectminbits='$selectminbits'
15772 selecttype='$selecttype'
15773 sendmail='$sendmail'
15774 sh='$sh'
15775 shar='$shar'
15776 sharpbang='$sharpbang'
15777 shmattype='$shmattype'
15778 shortsize='$shortsize'
15779 shrpenv='$shrpenv'
15780 shsharp='$shsharp'
15781 sig_count='$sig_count'
15782 sig_name='$sig_name'
15783 sig_name_init='$sig_name_init'
15784 sig_num='$sig_num'
15785 sig_num_init='$sig_num_init'
15786 signal_t='$signal_t'
15787 sitearch='$sitearch'
15788 sitearchexp='$sitearchexp'
15789 sitebin='$sitebin'
15790 sitebinexp='$sitebinexp'
15791 sitelib='$sitelib'
15792 sitelib_stem='$sitelib_stem'
15793 sitelibexp='$sitelibexp'
15794 siteprefix='$siteprefix'
15795 siteprefixexp='$siteprefixexp'
15796 sizesize='$sizesize'
15797 sizetype='$sizetype'
15798 sleep='$sleep'
15799 smail='$smail'
15800 small='$small'
15801 so='$so'
15802 sockethdr='$sockethdr'
15803 socketlib='$socketlib'
15804 socksizetype='$socksizetype'
15805 sort='$sort'
15806 spackage='$spackage'
15807 spitshell='$spitshell'
15808 split='$split'
15809 src='$src'
15810 ssizetype='$ssizetype'
15811 startperl='$startperl'
15812 startsh='$startsh'
15813 static_ext='$static_ext'
15814 stdchar='$stdchar'
15815 stdio_base='$stdio_base'
15816 stdio_bufsiz='$stdio_bufsiz'
15817 stdio_cnt='$stdio_cnt'
15818 stdio_filbuf='$stdio_filbuf'
15819 stdio_ptr='$stdio_ptr'
15820 stdio_stream_array='$stdio_stream_array'
15821 strings='$strings'
15822 submit='$submit'
15823 subversion='$subversion'
15824 sysman='$sysman'
15825 tail='$tail'
15826 tar='$tar'
15827 tbl='$tbl'
15828 tee='$tee'
15829 test='$test'
15830 timeincl='$timeincl'
15831 timetype='$timetype'
15832 touch='$touch'
15833 tr='$tr'
15834 trnl='$trnl'
15835 troff='$troff'
15836 u16size='$u16size'
15837 u16type='$u16type'
15838 u32size='$u32size'
15839 u32type='$u32type'
15840 u64size='$u64size'
15841 u64type='$u64type'
15842 u8size='$u8size'
15843 u8type='$u8type'
15844 uidformat='$uidformat'
15845 uidsign='$uidsign'
15846 uidsize='$uidsize'
15847 uidtype='$uidtype'
15848 uname='$uname'
15849 uniq='$uniq'
15850 uquadtype='$uquadtype'
15851 use5005threads='$use5005threads'
15852 use64bitall='$use64bitall'
15853 use64bitint='$use64bitint'
15854 usedl='$usedl'
15855 useithreads='$useithreads'
15856 uselargefiles='$uselargefiles'
15857 uselongdouble='$uselongdouble'
15858 usemorebits='$usemorebits'
15859 usemultiplicity='$usemultiplicity'
15860 usemymalloc='$usemymalloc'
15861 usenm='$usenm'
15862 useopcode='$useopcode'
15863 useperlio='$useperlio'
15864 useposix='$useposix'
15865 usesfio='$usesfio'
15866 useshrplib='$useshrplib'
15867 usesocks='$usesocks'
15868 usethreads='$usethreads'
15869 usevendorprefix='$usevendorprefix'
15870 usevfork='$usevfork'
15871 usrinc='$usrinc'
15872 uuname='$uuname'
15873 uvoformat='$uvoformat'
15874 uvsize='$uvsize'
15875 uvtype='$uvtype'
15876 uvuformat='$uvuformat'
15877 uvxformat='$uvxformat'
15878 vendorarch='$vendorarch'
15879 vendorarchexp='$vendorarchexp'
15880 vendorbin='$vendorbin'
15881 vendorbinexp='$vendorbinexp'
15882 vendorlib='$vendorlib'
15883 vendorlib_stem='$vendorlib_stem'
15884 vendorlibexp='$vendorlibexp'
15885 vendorprefix='$vendorprefix'
15886 vendorprefixexp='$vendorprefixexp'
15887 version='$version'
15888 vi='$vi'
15889 voidflags='$voidflags'
15890 xlibpth='$xlibpth'
15891 xs_apiversion='$xs_apiversion'
15892 zcat='$zcat'
15893 zip='$zip'
15894 EOT
15895
15896 : Add in command line options if available
15897 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15898
15899 : add special variables
15900 $test -f $src/patchlevel.h && \
15901 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15902 echo "CONFIGDOTSH=true" >>config.sh
15903
15904 : propagate old symbols
15905 if $test -f UU/config.sh; then
15906         <UU/config.sh sort | uniq >UU/oldconfig.sh
15907         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15908         sort | uniq -u >UU/oldsyms
15909         set X `cat UU/oldsyms`
15910         shift
15911         case $# in
15912         0) ;;
15913         *)
15914                 cat <<EOM
15915 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15916 EOM
15917                 echo "# Variables propagated from previous config.sh file." >>config.sh
15918                 for sym in `cat UU/oldsyms`; do
15919                         echo "    Propagating $hint variable "'$'"$sym..."
15920                         eval 'tmp="$'"${sym}"'"'
15921                         echo "$tmp" | \
15922                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15923                 done
15924                 ;;
15925         esac
15926 fi
15927
15928 : Finish up by extracting the .SH files
15929 case "$alldone" in
15930 exit)
15931         $rm -rf UU
15932         echo "Done."
15933         exit 0
15934         ;;
15935 cont)
15936         ;;
15937 '')
15938         dflt=''
15939         nostick=true
15940         $cat <<EOM
15941
15942 If you'd like to make any changes to the config.sh file before I begin
15943 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15944
15945 EOM
15946         rp="Press return or use a shell escape to edit config.sh:"
15947         . UU/myread
15948         nostick=''
15949         case "$ans" in
15950         '') ;;
15951         *) : in case they cannot read
15952                 sh 1>&4 -c "$ans";;
15953         esac
15954         ;;
15955 esac
15956
15957 : if this fails, just run all the .SH files by hand
15958 . ./config.sh
15959
15960 echo " "
15961 exec 1>&4
15962 . ./UU/extract
15963
15964 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15965         dflt=y
15966         case "$silent" in
15967         true) ;;
15968         *)
15969                 $cat <<EOM
15970
15971 Now you need to generate make dependencies by running "$make depend".
15972 You might prefer to run it in background: "$make depend > makedepend.out &"
15973 It can take a while, so you might not want to run it right now.
15974
15975 EOM
15976                 ;;
15977         esac
15978         rp="Run $make depend now?"
15979         . UU/myread
15980         case "$ans" in
15981         y*)
15982                 $make depend && echo "Now you must run a $make."
15983                 ;;
15984         *)
15985                 echo "You must run '$make depend' then '$make'."
15986                 ;;
15987         esac
15988 elif test -f [Mm]akefile; then
15989         echo " "
15990         echo "Now you must run a $make."
15991 else
15992         echo "Done."
15993 fi
15994
15995 if $test -f Policy.sh; then
15996     $cat <<EOM
15997
15998 If you compile $package on a different machine or from a different object
15999 directory, copy the Policy.sh file from this object directory to the
16000 new one before you run Configure -- this will help you with most of
16001 the policy defaults.
16002
16003 EOM
16004 fi
16005 if $test -f config.msg; then
16006     echo "Hmm.  I also noted the following information while running:"
16007     echo " "
16008     $cat config.msg >&4
16009     $rm -f config.msg
16010 fi
16011 $rm -f kit*isdone ark*isdone
16012 $rm -rf UU
16013
16014 : End of Configure
16015