5be461dffb1b5bbb6920eff84308cb1f89d63850
[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 Sat Jul 29 00:58:08 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 ccflags=''
292 cppflags=''
293 ldflags=''
294 lkflags=''
295 locincpth=''
296 optimize=''
297 cf_email=''
298 cf_by=''
299 cf_time=''
300 charsize=''
301 contains=''
302 cpp_stuff=''
303 cpplast=''
304 cppminus=''
305 cpprun=''
306 cppstdin=''
307 crosscompile=''
308 d_access=''
309 d_accessx=''
310 d_alarm=''
311 d_attribut=''
312 d_bcmp=''
313 d_bcopy=''
314 d_bzero=''
315 d_casti32=''
316 castflags=''
317 d_castneg=''
318 d_chown=''
319 d_chroot=''
320 d_chsize=''
321 d_closedir=''
322 d_void_closedir=''
323 d_const=''
324 cryptlib=''
325 d_crypt=''
326 d_csh=''
327 full_csh=''
328 d_cuserid=''
329 d_dbl_dig=''
330 d_difftime=''
331 d_dlerror=''
332 d_dlopen=''
333 d_dlsymun=''
334 d_dosuid=''
335 d_suidsafe=''
336 d_drand48proto=''
337 d_dup2=''
338 d_eaccess=''
339 d_endgrent=''
340 d_endhent=''
341 d_endnent=''
342 d_endpent=''
343 d_endpwent=''
344 d_endsent=''
345 d_fchmod=''
346 d_fchown=''
347 d_fcntl=''
348 d_fd_macros=''
349 d_fd_set=''
350 d_fds_bits=''
351 d_fgetpos=''
352 d_flexfnam=''
353 d_flock=''
354 d_fork=''
355 d_fpos64_t=''
356 d_frexpl=''
357 d_fs_data_s=''
358 d_fseeko=''
359 d_fsetpos=''
360 d_fstatfs=''
361 d_ftello=''
362 d_ftime=''
363 d_gettimeod=''
364 d_Gconvert=''
365 d_getcwd=''
366 d_getespwnam=''
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_getprpwnam=''
396 d_getpwent=''
397 d_getsent=''
398 d_getservprotos=''
399 d_getspnam=''
400 d_getsbyname=''
401 d_getsbyport=''
402 d_gnulibc=''
403 d_hasmntopt=''
404 d_htonl=''
405 d_iconv=''
406 d_inetaton=''
407 d_int64_t=''
408 d_isascii=''
409 d_isnan=''
410 d_isnanl=''
411 d_killpg=''
412 d_lchown=''
413 d_ldbl_dig=''
414 d_link=''
415 d_locconv=''
416 d_lockf=''
417 d_longdbl=''
418 longdblsize=''
419 d_longlong=''
420 longlongsize=''
421 d_lseekproto=''
422 d_lstat=''
423 d_madvise=''
424 d_mblen=''
425 d_mbstowcs=''
426 d_mbtowc=''
427 d_memchr=''
428 d_memcmp=''
429 d_memcpy=''
430 d_memmove=''
431 d_memset=''
432 d_mkdir=''
433 d_mkdtemp=''
434 d_mkfifo=''
435 d_mkstemp=''
436 d_mkstemps=''
437 d_mktime=''
438 d_mmap=''
439 mmaptype=''
440 d_modfl=''
441 d_mprotect=''
442 d_msg=''
443 d_msgctl=''
444 d_msgget=''
445 d_msgrcv=''
446 d_msgsnd=''
447 d_msync=''
448 d_munmap=''
449 d_nice=''
450 d_off64_t=''
451 d_open3=''
452 d_fpathconf=''
453 d_pathconf=''
454 d_pause=''
455 d_pipe=''
456 d_poll=''
457 d_portable=''
458 d_old_pthread_create_joinable=''
459 old_pthread_create_joinable=''
460 d_pthread_yield=''
461 d_sched_yield=''
462 sched_yield=''
463 d_qgcvt=''
464 d_readdir=''
465 d_rewinddir=''
466 d_seekdir=''
467 d_telldir=''
468 d_readlink=''
469 d_rename=''
470 d_rmdir=''
471 d_safebcpy=''
472 d_safemcpy=''
473 d_sanemcmp=''
474 d_select=''
475 d_sem=''
476 d_semctl=''
477 d_semget=''
478 d_semop=''
479 d_setegid=''
480 d_seteuid=''
481 d_setgrent=''
482 d_setgrps=''
483 d_sethent=''
484 d_setlinebuf=''
485 d_setlocale=''
486 d_setnent=''
487 d_setpent=''
488 d_setpgid=''
489 d_setpgrp2=''
490 d_bsdsetpgrp=''
491 d_setpgrp=''
492 d_setprior=''
493 d_setproctitle=''
494 d_setpwent=''
495 d_setregid=''
496 d_setresgid=''
497 d_setresuid=''
498 d_setreuid=''
499 d_setrgid=''
500 d_setruid=''
501 d_setsent=''
502 d_setsid=''
503 d_setvbuf=''
504 d_sfio=''
505 usesfio=''
506 d_shm=''
507 d_shmat=''
508 d_shmatprototype=''
509 shmattype=''
510 d_shmctl=''
511 d_shmdt=''
512 d_shmget=''
513 d_sigaction=''
514 d_sigsetjmp=''
515 d_msg_ctrunc=''
516 d_msg_dontroute=''
517 d_msg_oob=''
518 d_msg_peek=''
519 d_msg_proxy=''
520 d_oldsock=''
521 d_scm_rights=''
522 d_socket=''
523 d_sockpair=''
524 sockethdr=''
525 socketlib=''
526 d_socklen_t=''
527 d_sqrtl=''
528 d_statblks=''
529 d_statfs_f_flags=''
530 d_statfs_s=''
531 d_fstatvfs=''
532 d_statvfs=''
533 d_stdio_cnt_lval=''
534 d_stdio_ptr_lval=''
535 d_stdiobase=''
536 d_stdstdio=''
537 stdio_base=''
538 stdio_bufsiz=''
539 stdio_cnt=''
540 stdio_filbuf=''
541 stdio_ptr=''
542 d_index=''
543 d_strchr=''
544 d_strcoll=''
545 d_strctcpy=''
546 d_strerrm=''
547 d_strerror=''
548 d_sysernlst=''
549 d_syserrlst=''
550 d_strtod=''
551 d_strtol=''
552 d_strtold=''
553 d_strtoll=''
554 d_strtoul=''
555 d_strtoull=''
556 d_strtouq=''
557 d_strxfrm=''
558 d_symlink=''
559 d_syscall=''
560 d_sysconf=''
561 d_system=''
562 d_tcgetpgrp=''
563 d_tcsetpgrp=''
564 d_telldirproto=''
565 d_time=''
566 timetype=''
567 clocktype=''
568 d_times=''
569 d_truncate=''
570 d_tzname=''
571 d_umask=''
572 d_semctl_semid_ds=''
573 d_semctl_semun=''
574 d_union_semun=''
575 d_ustat=''
576 d_vfork=''
577 usevfork=''
578 d_voidsig=''
579 signal_t=''
580 d_volatile=''
581 d_charvspr=''
582 d_vprintf=''
583 d_wait4=''
584 d_waitpid=''
585 d_wcstombs=''
586 d_wctomb=''
587 dlext=''
588 cccdlflags=''
589 ccdlflags=''
590 dlsrc=''
591 ld=''
592 lddlflags=''
593 usedl=''
594 doublesize=''
595 ebcdic=''
596 fflushNULL=''
597 fflushall=''
598 fpossize=''
599 fpostype=''
600 gccversion=''
601 gidformat=''
602 gidsign=''
603 gidsize=''
604 gidtype=''
605 groupstype=''
606 h_fcntl=''
607 h_sysfile=''
608 i_arpainet=''
609 db_hashtype=''
610 db_prefixtype=''
611 i_db=''
612 i_dbm=''
613 i_rpcsvcdbm=''
614 d_dirnamlen=''
615 direntrytype=''
616 i_dirent=''
617 i_dld=''
618 i_dlfcn=''
619 i_fcntl=''
620 i_float=''
621 i_gdbm=''
622 d_grpasswd=''
623 i_grp=''
624 i_iconv=''
625 i_ieeefp=''
626 i_inttypes=''
627 i_limits=''
628 i_locale=''
629 i_machcthr=''
630 i_malloc=''
631 i_math=''
632 i_memory=''
633 i_mntent=''
634 i_ndbm=''
635 i_netdb=''
636 i_neterrno=''
637 i_netinettcp=''
638 i_niin=''
639 i_sysin=''
640 i_poll=''
641 i_prot=''
642 i_pthread=''
643 d_pwage=''
644 d_pwchange=''
645 d_pwclass=''
646 d_pwcomment=''
647 d_pwexpire=''
648 d_pwgecos=''
649 d_pwpasswd=''
650 d_pwquota=''
651 i_pwd=''
652 i_sfio=''
653 i_shadow=''
654 i_socks=''
655 i_stddef=''
656 i_stdlib=''
657 i_string=''
658 strings=''
659 i_sunmath=''
660 i_sysaccess=''
661 i_sysdir=''
662 i_sysfile=''
663 d_voidtty=''
664 i_bsdioctl=''
665 i_sysfilio=''
666 i_sysioctl=''
667 i_syssockio=''
668 i_syslog=''
669 i_sysmman=''
670 i_sysmode=''
671 i_sysmount=''
672 i_sysndir=''
673 i_sysparam=''
674 i_sysresrc=''
675 i_syssecrt=''
676 i_sysselct=''
677 i_sysstat=''
678 i_sysstatfs=''
679 i_sysstatvfs=''
680 i_systimes=''
681 i_systypes=''
682 i_sysuio=''
683 i_sysun=''
684 i_sysutsname=''
685 i_sysvfs=''
686 i_syswait=''
687 i_sgtty=''
688 i_termio=''
689 i_termios=''
690 i_systime=''
691 i_systimek=''
692 i_time=''
693 timeincl=''
694 i_unistd=''
695 i_ustat=''
696 i_utime=''
697 i_values=''
698 i_stdarg=''
699 i_varargs=''
700 i_varhdr=''
701 i_vfork=''
702 inc_version_list=''
703 inc_version_list_init=''
704 installprefix=''
705 installprefixexp=''
706 installstyle=''
707 installusrbinperl=''
708 intsize=''
709 longsize=''
710 shortsize=''
711 libc=''
712 ldlibpthname=''
713 libperl=''
714 shrpenv=''
715 useshrplib=''
716 glibpth=''
717 libpth=''
718 loclibpth=''
719 plibpth=''
720 xlibpth=''
721 ignore_versioned_solibs=''
722 libs=''
723 libsdirs=''
724 libsfiles=''
725 libsfound=''
726 libspath=''
727 lns=''
728 d_PRIEldbl=''
729 d_PRIFldbl=''
730 d_PRIGldbl=''
731 d_PRIeldbl=''
732 d_PRIfldbl=''
733 d_PRIgldbl=''
734 sPRIEldbl=''
735 sPRIFldbl=''
736 sPRIGldbl=''
737 sPRIeldbl=''
738 sPRIfldbl=''
739 sPRIgldbl=''
740 lseeksize=''
741 lseektype=''
742 make_set_make=''
743 d_mymalloc=''
744 freetype=''
745 mallocobj=''
746 mallocsrc=''
747 malloctype=''
748 usemymalloc=''
749 installman1dir=''
750 man1dir=''
751 man1direxp=''
752 man1ext=''
753 installman3dir=''
754 man3dir=''
755 man3direxp=''
756 man3ext=''
757 huge=''
758 large=''
759 medium=''
760 models=''
761 small=''
762 split=''
763 modetype=''
764 multiarch=''
765 mydomain=''
766 myhostname=''
767 phostname=''
768 c=''
769 n=''
770 d_eofnblk=''
771 eagain=''
772 o_nonblock=''
773 rd_nodata=''
774 netdb_hlen_type=''
775 netdb_host_type=''
776 netdb_name_type=''
777 netdb_net_type=''
778 groupcat=''
779 hostcat=''
780 passcat=''
781 orderlib=''
782 ranlib=''
783 d_perl_otherlibdirs=''
784 otherlibdirs=''
785 package=''
786 spackage=''
787 pager=''
788 api_revision=''
789 api_subversion=''
790 api_version=''
791 api_versionstring=''
792 patchlevel=''
793 revision=''
794 subversion=''
795 version=''
796 perl5=''
797 perladmin=''
798 perlpath=''
799 d_nv_preserves_uv=''
800 d_nv_preserves_uv_bits=''
801 i16size=''
802 i16type=''
803 i32size=''
804 i32type=''
805 i64size=''
806 i64type=''
807 i8size=''
808 i8type=''
809 ivsize=''
810 ivtype=''
811 nvsize=''
812 nvtype=''
813 u16size=''
814 u16type=''
815 u32size=''
816 u32type=''
817 u64size=''
818 u64type=''
819 u8size=''
820 u8type=''
821 uvsize=''
822 uvtype=''
823 ivdformat=''
824 uvoformat=''
825 uvuformat=''
826 uvxformat=''
827 pidtype=''
828 prefix=''
829 prefixexp=''
830 installprivlib=''
831 privlib=''
832 privlibexp=''
833 prototype=''
834 ptrsize=''
835 d_PRIX64=''
836 d_PRId64=''
837 d_PRIi64=''
838 d_PRIo64=''
839 d_PRIu64=''
840 d_PRIx64=''
841 sPRIX64=''
842 sPRId64=''
843 sPRIi64=''
844 sPRIo64=''
845 sPRIu64=''
846 sPRIx64=''
847 d_quad=''
848 quadkind=''
849 quadtype=''
850 uquadtype=''
851 drand01=''
852 randbits=''
853 randfunc=''
854 randseedtype=''
855 seedfunc=''
856 installscript=''
857 scriptdir=''
858 scriptdirexp=''
859 selectminbits=''
860 selecttype=''
861 sh=''
862 sig_count=''
863 sig_name=''
864 sig_name_init=''
865 sig_num=''
866 sig_num_init=''
867 installsitearch=''
868 sitearch=''
869 sitearchexp=''
870 installsitebin=''
871 sitebin=''
872 sitebinexp=''
873 installsitelib=''
874 sitelib=''
875 sitelib_stem=''
876 sitelibexp=''
877 siteprefix=''
878 siteprefixexp=''
879 sizesize=''
880 sizetype=''
881 so=''
882 socksizetype=''
883 sharpbang=''
884 shsharp=''
885 spitshell=''
886 src=''
887 ssizetype=''
888 startperl=''
889 startsh=''
890 stdchar=''
891 d_stdio_stream_array=''
892 stdio_stream_array=''
893 sysman=''
894 trnl=''
895 uidformat=''
896 uidsign=''
897 uidsize=''
898 uidtype=''
899 archname64=''
900 use64bitall=''
901 use64bitint=''
902 uselargefiles=''
903 uselongdouble=''
904 usemorebits=''
905 usemultiplicity=''
906 nm_opt=''
907 nm_so_opt=''
908 runnm=''
909 usenm=''
910 useperlio=''
911 usesocks=''
912 d_oldpthreads=''
913 use5005threads=''
914 useithreads=''
915 usethreads=''
916 incpath=''
917 mips_type=''
918 usrinc=''
919 d_vendorarch=''
920 installvendorarch=''
921 vendorarch=''
922 vendorarchexp=''
923 d_vendorbin=''
924 installvendorbin=''
925 vendorbin=''
926 vendorbinexp=''
927 d_vendorlib=''
928 installvendorlib=''
929 vendorlib=''
930 vendorlib_stem=''
931 vendorlibexp=''
932 usevendorprefix=''
933 vendorprefix=''
934 vendorprefixexp=''
935 defvoidused=''
936 voidflags=''
937 pm_apiversion=''
938 xs_apiversion=''
939 CONFIG=''
940
941 define='define'
942 undef='undef'
943 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
944 rmlist=''
945
946 : We must find out about Eunice early
947 eunicefix=':'
948 if test -f /etc/unixtovms; then
949         eunicefix=/etc/unixtovms
950 fi
951 if test -f /etc/unixtovms.exe; then
952         eunicefix=/etc/unixtovms.exe
953 fi
954
955 i_whoami=''
956 : set useposix=false in your hint file to disable the POSIX extension.
957 useposix=true
958 : set useopcode=false in your hint file to disable the Opcode extension.
959 useopcode=true
960 : Trailing extension.  Override this in a hint file, if needed.
961 _exe=''
962 : Extra object files, if any, needed on this platform.
963 archobjs=''
964 : Possible local include directories to search.
965 : Set locincpth to "" in a hint file to defeat local include searches.
966 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
967 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
968 :
969 : no include file wanted by default
970 inclwanted=''
971
972 groupstype=''
973 : change the next line if compiling for Xenix/286 on Xenix/386
974 xlibpth='/usr/lib/386 /lib/386'
975 : Possible local library directories to search.
976 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
977 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
978
979 : general looking path for locating libraries
980 glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
981 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
982 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
983 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
984 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
985
986 : Private path used by Configure to find libraries.  Its value
987 : is prepended to libpth. This variable takes care of special
988 : machines, like the mips.  Usually, it should be empty.
989 plibpth=''
990
991 : default library list
992 libswanted=''
993 : some systems want to use only the non-versioned libso:s
994 ignore_versioned_solibs=''
995 : set usemultiplicity on the Configure command line to enable multiplicity.
996 : set usesocks on the Configure command line to enable socks.
997 : set usethreads on the Configure command line to enable threads.
998 : full support for void wanted by default
999 defvoidused=15
1000
1001 : List of libraries we want.
1002 : If anyone needs -lnet, put it in a hint file.
1003 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1004 libswanted="$libswanted dld ld sun m c cposix posix"
1005 libswanted="$libswanted ndir dir crypt sec"
1006 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1007 : We probably want to search /usr/shlib before most other libraries.
1008 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1009 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1010 glibpth="/usr/shlib $glibpth"
1011 : Do not use vfork unless overridden by a hint file.
1012 usevfork=false
1013
1014 : Find the basic shell for Bourne shell scripts
1015 case "$sh" in
1016 '')
1017         case "$SYSTYPE" in
1018         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1019         *) xxx='/bin/sh';;
1020         esac
1021         if test -f "$xxx"; then
1022                 sh="$xxx"
1023         else
1024                 : Build up a list and do a single loop so we can 'break' out.
1025                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1026                 for xxx in sh bash ksh pdksh ash; do
1027                         for p in $pth; do
1028                                 try="$try ${p}/${xxx}"
1029                         done
1030                 done
1031                 for xxx in $try; do
1032                         if test -f "$xxx"; then
1033                                 sh="$xxx";
1034                                 break
1035                         elif test -f "$xxx.exe"; then
1036                                 sh="$xxx";
1037                                 break
1038                         fi
1039                 done
1040         fi
1041         ;;
1042 esac
1043
1044 case "$sh" in
1045 '')     cat <<EOM >&2
1046 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1047
1048 Usually it's in /bin/sh.  How did you even get this far?
1049 Please contact me (Perl Maintainers) at perlbug@perl.com and 
1050 we'll try to straighten this all out.
1051 EOM
1052         exit 1
1053         ;;
1054 esac
1055
1056 : see if sh knows # comments
1057 if `$sh -c '#' >/dev/null 2>&1`; then
1058         shsharp=true
1059         spitshell=cat
1060         xcat=/bin/cat
1061         test -f $xcat || xcat=/usr/bin/cat
1062         echo "#!$xcat" >try
1063         $eunicefix try
1064         chmod +x try
1065         ./try > today
1066         if test -s today; then
1067                 sharpbang='#!'
1068         else
1069                 echo "#! $xcat" > try
1070                 $eunicefix try
1071                 chmod +x try
1072                 ./try > today
1073                 if test -s today; then
1074                         sharpbang='#! '
1075                 else
1076                         sharpbang=': use '
1077                 fi
1078         fi
1079 else
1080         echo " "
1081         echo "Your $sh doesn't grok # comments--I will strip them later on."
1082         shsharp=false
1083         cd ..
1084         echo "exec grep -v '^[  ]*#'" >spitshell
1085         chmod +x spitshell
1086         $eunicefix spitshell
1087         spitshell=`pwd`/spitshell
1088         cd UU
1089         echo "I presume that if # doesn't work, #! won't work either!"
1090         sharpbang=': use '
1091 fi
1092 rm -f try today
1093
1094 : figure out how to guarantee sh startup
1095 case "$startsh" in
1096 '') startsh=${sharpbang}${sh} ;;
1097 *)
1098 esac
1099 cat >try <<EOSS
1100 $startsh
1101 set abc
1102 test "$?abc" != 1
1103 EOSS
1104
1105 chmod +x try
1106 $eunicefix try
1107 if ./try; then
1108         : echo "Yup, it does."
1109 else
1110         echo "Hmm... '$startsh' does not guarantee sh startup..."
1111         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1112 fi
1113 rm -f try
1114
1115
1116 : Save command line options in file UU/cmdline.opt for later use in
1117 : generating config.sh.
1118 cat > cmdline.opt <<EOSH
1119 # Configure command line arguments.
1120 config_arg0='$0'
1121 config_args='$*'
1122 config_argc=$#
1123 EOSH
1124 argn=1
1125 for arg in "$@"; do
1126         cat >>cmdline.opt <<EOSH
1127 config_arg$argn='$arg'
1128 EOSH
1129         argn=`expr $argn + 1`
1130 done
1131
1132 : produce awk script to parse command line options
1133 cat >options.awk <<'EOF'
1134 BEGIN {
1135         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1136
1137         len = length(optstr);
1138         for (i = 1; i <= len; i++) {
1139                 c = substr(optstr, i, 1);
1140                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1141                 if (a == ":") {
1142                         arg[c] = 1;
1143                         i++;
1144                 }
1145                 opt[c] = 1;
1146         }
1147 }
1148 {
1149         expect = 0;
1150         str = $0;
1151         if (substr(str, 1, 1) != "-") {
1152                 printf("'%s'\n", str);
1153                 next;
1154         }
1155         len = length($0);
1156         for (i = 2; i <= len; i++) {
1157                 c = substr(str, i, 1);
1158                 if (!opt[c]) {
1159                         printf("-%s\n", substr(str, i));
1160                         next;
1161                 }
1162                 printf("-%s\n", c);
1163                 if (arg[c]) {
1164                         if (i < len)
1165                                 printf("'%s'\n", substr(str, i + 1));
1166                         else
1167                                 expect = 1;
1168                         next;
1169                 }
1170         }
1171 }
1172 END {
1173         if (expect)
1174                 print "?";
1175 }
1176 EOF
1177
1178 : process the command line options
1179 set X `for arg in "$@"; do echo "X$arg"; done |
1180         sed -e s/X// | awk -f options.awk`
1181 eval "set $*"
1182 shift
1183 rm -f options.awk
1184
1185 : set up default values
1186 fastread=''
1187 reuseval=false
1188 config_sh=''
1189 alldone=''
1190 error=''
1191 silent=''
1192 extractsh=''
1193 override=''
1194 knowitall=''
1195 rm -f optdef.sh posthint.sh
1196 cat >optdef.sh <<EOS
1197 $startsh
1198 EOS
1199
1200
1201 : option parsing
1202 while test $# -gt 0; do
1203         case "$1" in
1204         -d) shift; fastread=yes;;
1205         -e) shift; alldone=cont;;
1206         -f)
1207                 shift
1208                 cd ..
1209                 if test -r "$1"; then
1210                         config_sh="$1"
1211                 else
1212                         echo "$me: cannot read config file $1." >&2
1213                         error=true
1214                 fi
1215                 cd UU
1216                 shift;;
1217         -h) shift; error=true;;
1218         -r) shift; reuseval=true;;
1219         -s) shift; silent=true; realsilent=true;;
1220         -E) shift; alldone=exit;;
1221         -K) shift; knowitall=true;;
1222         -O) shift; override=true;;
1223         -S) shift; silent=true; extractsh=true;;
1224         -D)
1225                 shift
1226                 case "$1" in
1227                 *=)
1228                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1229                         echo "$me: ignoring -D $1" >&2
1230                         ;;
1231                 *=*) echo "$1" | \
1232                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1233                 *) echo "$1='define'" >> optdef.sh;;
1234                 esac
1235                 shift
1236                 ;;
1237         -U)
1238                 shift
1239                 case "$1" in
1240                 *=) echo "$1" >> optdef.sh;;
1241                 *=*)
1242                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1243                         echo "$me: ignoring -U $1" >&2
1244                         ;;
1245                 *) echo "$1='undef'" >> optdef.sh;;
1246                 esac
1247                 shift
1248                 ;;
1249         -A)
1250             shift
1251             xxx=''
1252             yyy="$1"
1253             zzz=''
1254             uuu=undef
1255             case "$yyy" in
1256             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1257                  case "$zzz" in
1258                  *:*) zzz='' ;;
1259                  *)   xxx=append
1260                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1261                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1262                  esac
1263                  ;;
1264             esac
1265             case "$xxx" in
1266             '')  case "$yyy" in
1267                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1268                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1269                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1270                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1271                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1272                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1273                  esac
1274                  ;;       
1275             esac
1276             case "$xxx" in
1277             append)
1278                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1279             clear)
1280                 echo "$yyy=''"                  >> posthint.sh ;;
1281             define)
1282                 case "$zzz" in
1283                 '') zzz=define ;;
1284                 esac
1285                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1286             eval)
1287                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1288             prepend)
1289                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1290             undef)
1291                 case "$zzz" in
1292                 '') zzz="$uuu" ;;
1293                 esac
1294                 echo "$yyy=$zzz"                >> posthint.sh ;;
1295             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1296             esac
1297             shift
1298             ;;
1299         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1300             exit 0;;
1301         --) break;;
1302         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1303         *) break;;
1304         esac
1305 done
1306
1307 case "$error" in
1308 true)
1309         cat >&2 <<EOM
1310 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1311                  [-U symbol] [-U symbol=] [-A command:symbol...]
1312   -d : use defaults for all answers.
1313   -e : go on without questioning past the production of config.sh.
1314   -f : specify an alternate default configuration file.
1315   -h : print this help message and exit (with an error status).
1316   -r : reuse C symbols value if possible (skips costly nm extraction).
1317   -s : silent mode, only echoes questions and essential information.
1318   -D : define symbol to have some value:
1319          -D symbol         symbol gets the value 'define'
1320          -D symbol=value   symbol gets the value 'value'
1321   -E : stop at the end of questions, after having produced config.sh.
1322   -K : do not use unless you know what you are doing.
1323   -O : let -D and -U override definitions from loaded configuration file.
1324   -S : perform variable substitutions on all .SH files (can mix with -f)
1325   -U : undefine symbol:
1326          -U symbol    symbol gets the value 'undef'
1327          -U symbol=   symbol gets completely empty
1328   -A : manipulate symbol after the platform specific hints have been applied:
1329          -A symbol=value                append " "value to symbol
1330          -A append:symbol=value         append value to symbol
1331          -A define:symbol=value         define symbol to have value
1332          -A clear:symbol                define symbol to be ''
1333          -A define:symbol               define symbol to be 'define'
1334          -A eval:symbol=value           define symbol to be eval of value
1335          -A prepend:symbol=value        prepend value to symbol
1336          -A undef:symbol                define symbol to be 'undef'
1337          -A undef:symbol=               define symbol to be ''
1338   -V : print version number and exit (with a zero status).
1339 EOM
1340         exit 1
1341         ;;
1342 esac
1343
1344 : Sanity checks
1345 case "$fastread$alldone" in
1346 yescont|yesexit) ;;
1347 *)
1348         case "$extractsh" in
1349         true) ;;
1350         *)
1351                 if test ! -t 0; then
1352                         echo "Say 'sh Configure', not 'sh <Configure'"
1353                         exit 1
1354                 fi
1355                 ;;
1356         esac
1357         ;;
1358 esac
1359
1360 exec 4>&1
1361 case "$silent" in
1362 true) exec 1>/dev/null;;
1363 esac
1364
1365 : run the defines and the undefines, if any, but leave the file out there...
1366 touch optdef.sh
1367 . ./optdef.sh
1368 : create the posthint manipulation script and leave the file out there...
1369 touch posthint.sh
1370
1371 : set package name
1372 package=perl5
1373 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1374 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1375 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1376 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1377 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1378 esac
1379
1380 : Some greps do not return status, grrr.
1381 echo "grimblepritz" >grimble
1382 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1383         contains=contains
1384 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1385         contains=grep
1386 else
1387         contains=contains
1388 fi
1389 rm -f grimble
1390 : the following should work in any shell
1391 case "$contains" in
1392 contains*)
1393         echo " "
1394         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1395         cat >contains <<'EOSS'
1396 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1397 EOSS
1398 chmod +x contains
1399 esac
1400
1401 : Find the path to the source tree
1402 case "$src" in
1403 '') case "$0" in
1404     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1405          case "$src" in
1406          /*)    ;;
1407          *)     src=`cd ../$src && pwd` ;;
1408          esac
1409          ;;
1410     *)   src='.';;
1411     esac;;
1412 esac
1413 case "$src" in
1414 '')     src=/
1415         rsrc=/
1416         ;;
1417 /*) rsrc="$src";;
1418 *) rsrc="../$src";;
1419 esac
1420 if test -f $rsrc/Configure && \
1421         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1422 then
1423    : found it, so we are ok.
1424 else
1425         rsrc=''
1426         for src in . .. ../.. ../../.. ../../../..; do
1427                 if test -f ../$src/Configure && \
1428                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1429                 then
1430                         rsrc=../$src
1431                         break
1432                 fi
1433         done
1434 fi
1435 case "$rsrc" in
1436 '')
1437         cat <<EOM >&4
1438
1439 Sorry, I can't seem to locate the source dir for $package.  Please start
1440 Configure with an explicit path -- i.e. /some/path/Configure.
1441
1442 EOM
1443         exit 1
1444         ;;
1445 ../.)   rsrc='..';;
1446 *)
1447         echo " "
1448         echo "Sources for $package found in \"$src\"." >&4
1449         ;;
1450 esac
1451
1452 : script used to extract .SH files with variable substitutions
1453 cat >extract <<'EOS'
1454 CONFIGDOTSH=true
1455 echo "Doing variable substitutions on .SH files..."
1456 if test -f $src/MANIFEST; then
1457         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1458 else
1459         echo "(Looking for .SH files under the source directory.)"
1460         set x `(cd $src; find . -name "*.SH" -print)`
1461 fi
1462 shift
1463 case $# in
1464 0) set x `(cd $src; echo *.SH)`; shift;;
1465 esac
1466 if test ! -f $src/$1; then
1467         shift
1468 fi
1469 mkdir_p='
1470 name=$1;
1471 create="";
1472 while test $name; do
1473         if test ! -d "$name"; then
1474                 create="$name $create";
1475                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1476                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1477         else
1478                 name="";
1479         fi;
1480 done;
1481 for file in $create; do
1482         mkdir $file;
1483 done
1484 '
1485 for file in $*; do
1486         case "$src" in
1487         ".")
1488                 case "$file" in
1489                 */*)
1490                         dir=`expr X$file : 'X\(.*\)/'`
1491                         file=`expr X$file : 'X.*/\(.*\)'`
1492                         (cd $dir && . ./$file)
1493                         ;;
1494                 *)
1495                         . ./$file
1496                         ;;
1497                 esac
1498                 ;;
1499         *)
1500                 case "$file" in
1501                 */*)
1502                         dir=`expr X$file : 'X\(.*\)/'`
1503                         file=`expr X$file : 'X.*/\(.*\)'`
1504                         (set x $dir; shift; eval $mkdir_p)
1505                         sh <$src/$dir/$file
1506                         ;;
1507                 *)
1508                         sh <$src/$file
1509                         ;;
1510                 esac
1511                 ;;
1512         esac
1513 done
1514 if test -f $src/config_h.SH; then
1515         if test ! -f config.h; then
1516         : oops, they left it out of MANIFEST, probably, so do it anyway.
1517         . $src/config_h.SH
1518         fi
1519 fi
1520 EOS
1521
1522 : extract files and exit if asked to do so
1523 case "$extractsh" in
1524 true)
1525         case "$realsilent" in
1526         true) ;;
1527         *) exec 1>&4;;
1528         esac
1529         case "$config_sh" in
1530         '') config_sh='config.sh';;
1531         esac
1532         echo " "
1533         echo "Fetching answers from $config_sh..."
1534         cd ..
1535         . $config_sh
1536         test "$override" && . ./optdef.sh
1537         echo " "
1538         . UU/extract
1539         rm -rf UU
1540         echo "Done."
1541         exit 0
1542         ;;
1543 esac
1544
1545 : Eunice requires " " instead of "", can you believe it
1546 echo " "
1547 : Here we go...
1548 echo "Beginning of configuration questions for $package."
1549
1550 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1551
1552 : first determine how to suppress newline on echo command
1553 echo " "
1554 echo "Checking echo to see how to suppress newlines..."
1555 (echo "hi there\c" ; echo " ") >.echotmp
1556 if $contains c .echotmp >/dev/null 2>&1 ; then
1557         echo "...using -n."
1558         n='-n'
1559         c=''
1560 else
1561         cat <<'EOM'
1562 ...using \c
1563 EOM
1564         n=''
1565         c='\c'
1566 fi
1567 echo $n "The star should be here-->$c"
1568 echo '*'
1569 rm -f .echotmp
1570
1571 : Now test for existence of everything in MANIFEST
1572 echo " "
1573 if test -f $rsrc/MANIFEST; then
1574         echo "First let's make sure your kit is complete.  Checking..." >&4
1575         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1576         rm -f missing
1577         tmppwd=`pwd`
1578         for filelist in x??; do
1579                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1580         done
1581         if test -s missing; then
1582                 cat missing >&4
1583                 cat >&4 <<'EOM'
1584
1585 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1586
1587 You have the option of continuing the configuration process, despite the
1588 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1589 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1590 and contact the author (perlbug@perl.com).
1591
1592 EOM
1593                 echo $n "Continue? [n] $c" >&4
1594                 read ans
1595                 case "$ans" in
1596                 y*)
1597                         echo "Continuing..." >&4
1598                         rm -f missing
1599                         ;;
1600                 *)
1601                         echo "ABORTING..." >&4
1602                         kill $$
1603                         ;;
1604                 esac
1605         else
1606                 echo "Looks good..."
1607         fi
1608 else
1609         echo "There is no MANIFEST file.  I hope your kit is complete !"
1610 fi
1611 rm -f missing x??
1612
1613 echo " "
1614 : Find the appropriate value for a newline for tr
1615 if test -n "$DJGPP"; then
1616        trnl='\012'
1617 fi
1618 if test X"$trnl" = X; then
1619         case "`echo foo|tr '\n' x 2>/dev/null`" in
1620         foox) trnl='\n' ;;
1621         esac
1622 fi
1623 if test X"$trnl" = X; then
1624         case "`echo foo|tr '\012' x 2>/dev/null`" in
1625         foox) trnl='\012' ;;
1626         esac
1627 fi
1628 if test X"$trnl" = X; then
1629         cat <<EOM >&2
1630
1631 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1632
1633 EOM
1634         exit 1
1635 fi
1636
1637 : compute the number of columns on the terminal for proper question formatting
1638 case "$COLUMNS" in
1639 '') COLUMNS='80';;
1640 esac
1641
1642 : set up the echo used in my read
1643 myecho="case \"\$xxxm\" in
1644 '') echo $n \"\$rp $c\" >&4;;
1645 *) case \"\$rp\" in
1646         '') echo $n \"[\$xxxm] $c\";;
1647         *)
1648                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1649                         echo \"\$rp\" >&4
1650                         echo $n \"[\$xxxm] $c\" >&4
1651                 else
1652                         echo $n \"\$rp [\$xxxm] $c\" >&4
1653                 fi
1654                 ;;
1655         esac;;
1656 esac"
1657
1658 : now set up to do reads with possible shell escape and default assignment
1659 cat <<EOSC >myread
1660 $startsh
1661 xxxm=\$dflt
1662 $myecho
1663 ans='!'
1664 case "\$fastread" in
1665 yes) case "\$dflt" in
1666         '') ;;
1667         *) ans='';
1668                 case "\$silent-\$rp" in
1669                 true-) ;;
1670                 *) echo " " >&4;;
1671                 esac;;
1672         esac;;
1673 *) case "\$silent" in
1674         true) case "\$rp" in
1675                 '') ans='';;
1676                 esac;;
1677         esac;;
1678 esac
1679 while expr "X\$ans" : "X!" >/dev/null; do
1680         read answ
1681         set x \$xxxm
1682         shift
1683         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1684         case  "\$answ" in
1685         "!")
1686                 sh 1>&4
1687                 echo " "
1688                 $myecho
1689                 ;;
1690         !*)
1691                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1692                 shift
1693                 sh 1>&4 -c "\$*"
1694                 echo " "
1695                 $myecho
1696                 ;;
1697         "\$ans")
1698                 case "\$ans" in
1699                 \\&*)
1700                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1701                         shift
1702                         case "\$1" in
1703                         -d)
1704                                 fastread=yes
1705                                 echo "(OK, I'll run with -d after this question.)" >&4
1706                                 ;;
1707                         -*)
1708                                 echo "*** Sorry, \$1 not supported yet." >&4
1709                                 ;;
1710                         esac
1711                         $myecho
1712                         ans=!
1713                         ;;
1714                 esac;;
1715         *)
1716                 case "\$aok" in
1717                 y)
1718                         echo "*** Substitution done -- please confirm."
1719                         xxxm="\$ans"
1720                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1721                         xxxm="\$ans"
1722                         ans=!
1723                         ;;
1724                 *)
1725                         echo "*** Error -- try again."
1726                         ans=!
1727                         ;;
1728                 esac
1729                 $myecho
1730                 ;;
1731         esac
1732         case "\$ans\$xxxm\$nostick" in
1733         '')
1734                 ans=!
1735                 $myecho
1736                 ;;
1737         esac
1738 done
1739 case "\$ans" in
1740 '') ans="\$xxxm";;
1741 esac
1742 EOSC
1743
1744 : create .config dir to save info across Configure sessions
1745 test -d ../.config || mkdir ../.config
1746 cat >../.config/README <<EOF
1747 This directory created by Configure to save information that should
1748 persist across sessions for $package.
1749
1750 You may safely delete it if you wish.
1751 EOF
1752
1753 : general instructions
1754 needman=true
1755 firsttime=true
1756 user=`(logname) 2>/dev/null`
1757 case "$user" in
1758 '') user=`whoami 2>&1`;;
1759 esac
1760 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1761         firsttime=false
1762         echo " "
1763         rp='Would you like to see the instructions?'
1764         dflt=n
1765         . ./myread
1766         case "$ans" in
1767         [yY]*) ;;
1768         *) needman=false;;
1769         esac
1770 fi
1771 if $needman; then
1772         cat <<EOH
1773
1774 This installation shell script will examine your system and ask you questions
1775 to determine how the perl5 package should be installed. If you get
1776 stuck on a question, you may use a ! shell escape to start a subshell or
1777 execute a command.  Many of the questions will have default answers in square
1778 brackets; typing carriage return will give you the default.
1779
1780 On some of the questions which ask for file or directory names you are allowed
1781 to use the ~name construct to specify the login directory belonging to "name",
1782 even if you don't have a shell which knows about that.  Questions where this is
1783 allowed will be marked "(~name ok)".
1784
1785 EOH
1786         rp=''
1787         dflt='Type carriage return to continue'
1788         . ./myread
1789         cat <<'EOH'
1790
1791 The prompter used in this script allows you to use shell variables and
1792 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1793 in the default answer, as if the default line was a set of arguments given to a
1794 script shell.  This means you may also use $* to repeat the whole default line,
1795 so you do not have to re-type everything to add something to the default.
1796
1797 Everytime there is a substitution, you will have to confirm.  If there is an
1798 error (e.g. an unmatched backtick), the default answer will remain unchanged
1799 and you will be prompted again.
1800
1801 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1802 the questions and use the computed defaults (or the previous answers if there
1803 was already a config.sh file). Type 'Configure -h' for a list of options.
1804 You may also start interactively and then answer '& -d' at any prompt to turn
1805 on the non-interactive behaviour for the remainder of the execution.
1806
1807 EOH
1808         . ./myread
1809         cat <<EOH
1810
1811 Much effort has been expended to ensure that this shell script will run on any
1812 Unix system.  If despite that it blows up on yours, your best bet is to edit
1813 Configure and run it again.  If you can't run Configure for some reason,
1814 you'll have to generate a config.sh file by hand.  Whatever problems you
1815 have, let me (perlbug@perl.com) know how I blew it.
1816
1817 This installation script affects things in two ways:
1818
1819 1) it may do direct variable substitutions on some of the files included
1820    in this kit.
1821 2) it builds a config.h file for inclusion in C programs.  You may edit
1822    any of these files as the need arises after running this script.
1823
1824 If you make a mistake on a question, there is no easy way to back up to it
1825 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1826 files.  Configure will offer to let you do this before it runs the SH files.
1827
1828 EOH
1829         dflt='Type carriage return to continue'
1830         . ./myread
1831         case "$firsttime" in
1832         true) echo $user >>../.config/instruct;;
1833         esac
1834 fi
1835
1836 : find out where common programs are
1837 echo " "
1838 echo "Locating common programs..." >&4
1839 cat <<EOSC >loc
1840 $startsh
1841 case \$# in
1842 0) exit 1;;
1843 esac
1844 thing=\$1
1845 shift
1846 dflt=\$1
1847 shift
1848 for dir in \$*; do
1849         case "\$thing" in
1850         .)
1851         if test -d \$dir/\$thing; then
1852                 echo \$dir
1853                 exit 0
1854         fi
1855         ;;
1856         *)
1857         for thisthing in \$dir/\$thing; do
1858                 : just loop through to pick last item
1859         done
1860         if test -f \$thisthing; then
1861                 echo \$thisthing
1862                 exit 0
1863         elif test -f \$dir/\$thing.exe; then
1864                 if test -n "$DJGPP"; then
1865                         echo \$dir/\$thing.exe
1866                 else
1867                         : on Eunice apparently
1868                         echo \$dir/\$thing
1869                 fi
1870                 exit 0
1871         fi
1872         ;;
1873         esac
1874 done
1875 echo \$dflt
1876 exit 1
1877 EOSC
1878 chmod +x loc
1879 $eunicefix loc
1880 loclist="
1881 awk
1882 cat
1883 comm
1884 cp
1885 echo
1886 expr
1887 grep
1888 ls
1889 make
1890 mkdir
1891 rm
1892 sed
1893 sort
1894 touch
1895 tr
1896 uniq
1897 "
1898 trylist="
1899 Mcc
1900 ar
1901 byacc
1902 cpp
1903 csh
1904 date
1905 egrep
1906 gzip
1907 less
1908 ln
1909 more
1910 nm
1911 nroff
1912 pg
1913 test
1914 uname
1915 zip
1916 "
1917 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1918 pth="$pth /lib /usr/lib"
1919 for file in $loclist; do
1920         eval xxx=\$$file
1921         case "$xxx" in
1922         /*|?:[\\/]*)
1923                 if test -f "$xxx"; then
1924                         : ok
1925                 else
1926                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1927                         xxx=`./loc $file $file $pth`
1928                 fi
1929                 ;;
1930         '') xxx=`./loc $file $file $pth`;;
1931         *) xxx=`./loc $xxx $xxx $pth`;;
1932         esac
1933         eval $file=$xxx
1934         eval _$file=$xxx
1935         case "$xxx" in
1936         /*)
1937                 echo $file is in $xxx.
1938                 ;;
1939         ?:[\\/]*)
1940                 echo $file is in $xxx.
1941                 ;;
1942         *)
1943                 echo "I don't know where '$file' is, and my life depends on it." >&4
1944                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1945                 exit 1
1946                 ;;
1947         esac
1948 done
1949 echo " "
1950 echo "Don't worry if any of the following aren't found..."
1951 say=offhand
1952 for file in $trylist; do
1953         eval xxx=\$$file
1954         case "$xxx" in
1955         /*|?:[\\/]*)
1956                 if test -f "$xxx"; then
1957                         : ok
1958                 else
1959                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1960                         xxx=`./loc $file $file $pth`
1961                 fi
1962                 ;;
1963         '') xxx=`./loc $file $file $pth`;;
1964         *) xxx=`./loc $xxx $xxx $pth`;;
1965         esac
1966         eval $file=$xxx
1967         eval _$file=$xxx
1968         case "$xxx" in
1969         /*)
1970                 echo $file is in $xxx.
1971                 ;;
1972         ?:[\\/]*)
1973                 echo $file is in $xxx.
1974                 ;;
1975         *)
1976                 echo "I don't see $file out there, $say."
1977                 say=either
1978                 ;;
1979         esac
1980 done
1981 case "$egrep" in
1982 egrep)
1983         echo "Substituting grep for egrep."
1984         egrep=$grep
1985         ;;
1986 esac
1987 case "$ln" in
1988 ln)
1989         echo "Substituting cp for ln."
1990         ln=$cp
1991         ;;
1992 esac
1993 case "$test" in
1994 test)
1995         echo "Hopefully test is built into your sh."
1996         ;;
1997 *)
1998         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1999                 echo "Using the test built into your sh."
2000                 test=test
2001                 _test=test
2002         fi
2003         ;;
2004 esac
2005 case "$echo" in
2006 echo)
2007         echo "Hopefully echo is built into your sh."
2008         ;;
2009 '') ;;
2010 *)
2011         echo " "
2012 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2013         $echo $n "hi there$c" >foo1
2014         echo $n "hi there$c" >foo2
2015         if cmp foo1 foo2 >/dev/null 2>&1; then
2016                 echo "They are compatible.  In fact, they may be identical."
2017         else
2018                 case "$n" in
2019                 '-n') n='' c='\c';;
2020                 *) n='-n' c='';;
2021                 esac
2022                 cat <<FOO
2023 They are not compatible!  You are probably running ksh on a non-USG system.
2024 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2025 have echo built in and we may have to run some Bourne shell scripts.  That
2026 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2027
2028 FOO
2029                 $echo $n "The star should be here-->$c"
2030                 $echo "*"
2031         fi
2032         $rm -f foo1 foo2
2033         ;;
2034 esac
2035
2036 cat <<EOS >checkcc
2037 $startsh
2038 EOS
2039 cat <<'EOSC' >>checkcc
2040 case "$cc" in
2041 '') ;;
2042 *)  $rm -f try try.*
2043     $cat >try.c <<EOM
2044 int main(int argc, char *argv[]) {
2045   return 0;
2046 }
2047 EOM
2048     if $cc -o try try.c; then
2049        :
2050     else
2051         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2052         despair=yes
2053         trygcc=yes
2054         case "$cc" in
2055         *gcc*) trygcc=no ;;
2056         esac
2057         case "`$cc -v -c try.c 2>&1`" in
2058         *gcc*) trygcc=no ;;
2059         esac
2060         if $test X"$trygcc" = Xyes; then
2061             if gcc -o try -c try.c; then
2062                 echo " "
2063                 echo "You seem to have a working gcc, though." >&4
2064                 rp="Would you like to use it?"
2065                 dflt=y
2066                 if $test -f myread; then
2067                     . ./myread
2068                 else
2069                     if $test -f UU/myread; then
2070                         . ./UU/myread
2071                     else
2072                         echo "Cannot find myread, sorry.  Aborting." >&2
2073                         exit 1
2074                     fi
2075                 fi  
2076                 case "$ans" in
2077                 [yY]*) cc=gcc; ccflags=''; despair=no ;;
2078                 esac
2079             fi
2080         fi
2081         if $test X"$despair" = Xyes; then
2082             echo "You need to find a working C compiler." >&4
2083             echo "I cannot continue any further, aborting." >&4
2084             exit 1
2085         fi
2086     fi
2087     $rm -f try try.*
2088     ;;
2089 esac
2090 EOSC
2091
2092 : determine whether symbolic links are supported
2093 echo " "
2094 $touch blurfl
2095 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2096         echo "Symbolic links are supported." >&4
2097         lns="$ln -s"
2098 else
2099         echo "Symbolic links are NOT supported." >&4
2100         lns="$ln"
2101 fi
2102 $rm -f blurfl sym
2103
2104 : see whether [:lower:] and [:upper:] are supported character classes
2105 echo " "
2106 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2107 ABYZ)
2108         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2109         up='[:upper:]'
2110         low='[:lower:]'
2111         ;;
2112 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2113         # (0xc9 and 0xd1), therefore that is a nice testing point.
2114         if test "X$up" = X -o "X$low" = X; then
2115             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2116             ij) up='[A-Z]'
2117                 low='[a-z]'
2118                 ;;
2119             esac
2120         fi
2121         if test "X$up" = X -o "X$low" = X; then
2122             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2123             ij) up='A-Z'
2124                 low='a-z'
2125                 ;;
2126             esac
2127         fi
2128         if test "X$up" = X -o "X$low" = X; then
2129             case "`echo IJ | od -x 2>/dev/null`" in
2130             *C9D1*|*c9d1*)
2131                 echo "Hey, this might be EBCDIC." >&4
2132                 if test "X$up" = X -o "X$low" = X; then
2133                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2134                     ij) up='[A-IJ-RS-Z]'
2135                         low='[a-ij-rs-z]'
2136                         ;;
2137                     esac
2138                 fi
2139                 if test "X$up" = X -o "X$low" = X; then
2140                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2141                     ij) up='A-IJ-RS-Z'
2142                         low='a-ij-rs-z'
2143                         ;;
2144                     esac
2145                 fi
2146                 ;;
2147             esac
2148         fi
2149 esac
2150 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2151 ij)
2152     echo "Using $up and $low to convert case." >&4
2153     ;;
2154 *)
2155     echo "I don't know how to translate letters from upper to lower case." >&4
2156     echo "Your tr is not acting any way I know of." >&4
2157     exit 1
2158     ;;
2159 esac
2160 : set up the translation script tr, must be called with ./tr of course
2161 cat >tr <<EOSC
2162 $startsh
2163 case "\$1\$2" in
2164 '[A-Z][a-z]') exec $tr '$up' '$low';;
2165 '[a-z][A-Z]') exec $tr '$low' '$up';;
2166 esac
2167 exec $tr "\$@"
2168 EOSC
2169 chmod +x tr
2170 $eunicefix tr
2171
2172 : Try to determine whether config.sh was made on this system
2173 case "$config_sh" in
2174 '')
2175 myuname=`$uname -a 2>/dev/null`
2176 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2177 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2178 # because the A-Z/a-z are not consecutive.
2179 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2180         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2181 newmyuname="$myuname"
2182 dflt=n
2183 case "$knowitall" in
2184 '')
2185         if test -f ../config.sh; then
2186                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2187                         eval "`grep myuname= ../config.sh`"
2188                 fi
2189                 if test "X$myuname" = "X$newmyuname"; then
2190                         dflt=y
2191                 fi
2192         fi
2193         ;;
2194 *) dflt=y;;
2195 esac
2196
2197 : Get old answers from old config file if Configure was run on the
2198 : same system, otherwise use the hints.
2199 hint=default
2200 cd ..
2201 if test -f config.sh; then
2202         echo " "
2203         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2204         . UU/myread
2205         case "$ans" in
2206         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2207         *)  echo "Fetching default answers from your old config.sh file..." >&4
2208                 tmp_n="$n"
2209                 tmp_c="$c"
2210                 tmp_sh="$sh"
2211                 . ./config.sh
2212                 cp config.sh UU
2213                 n="$tmp_n"
2214                 c="$tmp_c"
2215                 : Older versions did not always set $sh.  Catch re-use of such
2216                 : an old config.sh.
2217                 case "$sh" in
2218                 '') sh="$tmp_sh" ;;
2219                 esac
2220                 hint=previous
2221                 ;;
2222         esac
2223 fi
2224 . ./UU/checkcc
2225 if test ! -f config.sh; then
2226         $cat <<EOM
2227
2228 First time through, eh?  I have some defaults handy for some systems
2229 that need some extra help getting the Configure answers right:
2230
2231 EOM
2232         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2233         dflt=''
2234         : Half the following guesses are probably wrong... If you have better
2235         : tests or hints, please send them to perlbug@perl.com
2236         : The metaconfig authors would also appreciate a copy...
2237         $test -f /irix && osname=irix
2238         $test -f /xenix && osname=sco_xenix
2239         $test -f /dynix && osname=dynix
2240         $test -f /dnix && osname=dnix
2241         $test -f /lynx.os && osname=lynxos
2242         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2243         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2244         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2245         $test -f /bin/mips && /bin/mips && osname=mips
2246         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2247                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2248         $test -d /usr/apollo/bin && osname=apollo
2249         $test -f /etc/saf/_sactab && osname=svr4
2250         $test -d /usr/include/minix && osname=minix
2251         if $test -d /MachTen -o -d /MachTen_Folder; then
2252                 osname=machten
2253                 if $test -x /sbin/version; then
2254                         osvers=`/sbin/version | $awk '{print $2}' |
2255                         $sed -e 's/[A-Za-z]$//'`
2256                 elif $test -x /usr/etc/version; then
2257                         osvers=`/usr/etc/version | $awk '{print $2}' |
2258                         $sed -e 's/[A-Za-z]$//'`
2259                 else
2260                         osvers="$2.$3"
2261                 fi
2262         fi
2263
2264         $test -f /sys/posix.dll &&
2265                 $test -f /usr/bin/what &&
2266                 set X `/usr/bin/what /sys/posix.dll` &&
2267                 $test "$3" = UWIN &&
2268                 osname=uwin &&
2269                 osvers="$5"
2270
2271         if $test -f $uname; then
2272                 set X $myuname
2273                 shift
2274
2275                 case "$5" in
2276                 fps*) osname=fps ;;
2277                 mips*)
2278                         case "$4" in
2279                         umips) osname=umips ;;
2280                         *) osname=mips ;;
2281                         esac;;
2282                 [23]100) osname=mips ;;
2283                 next*) osname=next ;;
2284                 i386*)
2285                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2286                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2287                                 osname='sco'
2288                                 osvers=$tmp
2289                         elif $test -f /etc/kconfig; then
2290                                 osname=isc
2291                                 if test "$lns" = "$ln -s"; then
2292                                         osvers=4
2293                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2294                                         osvers=3
2295                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2296                                         osvers=2
2297                                 fi
2298                         fi
2299                         tmp=''
2300                         ;;
2301                 pc*)
2302                         if test -n "$DJGPP"; then
2303                                 osname=dos
2304                                 osvers=djgpp
2305                         fi
2306                         ;;
2307                 esac
2308
2309                 case "$1" in
2310                 aix) osname=aix
2311                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2312                         case "$tmp" in
2313                         'not found') osvers="$4"."$3" ;;
2314                         '<3240'|'<>3240') osvers=3.2.0 ;;
2315                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2316                         '=3250'|'>3250') osvers=3.2.5 ;;
2317                         *) osvers=$tmp;;
2318                         esac
2319                         ;;
2320                 bsd386) osname=bsd386
2321                         osvers=`$uname -r`
2322                         ;;
2323                 cygwin*) osname=cygwin
2324                         osvers="$3"
2325                         ;;
2326                 *dc.osx) osname=dcosx
2327                         osvers="$3"
2328                         ;;
2329                 dnix) osname=dnix
2330                         osvers="$3"
2331                         ;;
2332                 domainos) osname=apollo
2333                         osvers="$3"
2334                         ;;
2335                 dgux) osname=dgux 
2336                         osvers="$3"
2337                         ;;
2338                 dynixptx*) osname=dynixptx
2339                         osvers=`echo "$4"|sed 's/^v//'`
2340                         ;;
2341                 freebsd) osname=freebsd 
2342                         osvers="$3" ;;
2343                 genix) osname=genix ;;
2344                 hp*) osname=hpux 
2345                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2346                         ;;
2347                 irix*) osname=irix
2348                         case "$3" in
2349                         4*) osvers=4 ;;
2350                         5*) osvers=5 ;;
2351                         *)      osvers="$3" ;;
2352                         esac
2353                         ;;
2354                 linux) osname=linux
2355                         case "$3" in
2356                         *)      osvers="$3" ;;
2357                         esac
2358                         ;;
2359                 MiNT) osname=mint
2360                         ;;
2361                 netbsd*) osname=netbsd
2362                         osvers="$3"
2363                         ;;
2364                 news-os) osvers="$3"
2365                         case "$3" in
2366                         4*) osname=newsos4 ;;
2367                         *) osname=newsos ;;
2368                         esac
2369                         ;;
2370                 next*) osname=next ;;
2371                 POSIX-BC | posix-bc ) osname=posix-bc
2372                         osvers="$3"
2373                         ;;
2374                 powerux | power_ux | powermax_os | powermaxos | \
2375                 powerunix | power_unix) osname=powerux
2376                         osvers="$3"
2377                         ;;
2378                 qnx) osname=qnx
2379                         osvers="$4"
2380                         ;;
2381                 solaris) osname=solaris
2382                         case "$3" in
2383                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2384                         *)      osvers="$3" ;;
2385                         esac
2386                         ;;
2387                 sunos) osname=sunos
2388                         case "$3" in
2389                         5*) osname=solaris
2390                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2391                         *)      osvers="$3" ;;
2392                         esac
2393                         ;;
2394                 titanos) osname=titanos
2395                         case "$3" in
2396                         1*) osvers=1 ;;
2397                         2*) osvers=2 ;;
2398                         3*) osvers=3 ;;
2399                         4*) osvers=4 ;;
2400                         *)      osvers="$3" ;;
2401                         esac
2402                         ;;
2403                 ultrix) osname=ultrix
2404                         osvers="$3"
2405                         ;;
2406                 osf1|mls+)      case "$5" in
2407                                 alpha)
2408                                         osname=dec_osf
2409                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2410                                         case "$osvers" in
2411                                         [1-9].[0-9]*) ;;
2412                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2413                                         esac
2414                                         ;;
2415                         hp*)    osname=hp_osf1  ;;
2416                         mips)   osname=mips_osf1 ;;
2417                         esac
2418                         ;;
2419                 unixware) osname=svr5
2420                         osvers="$4"
2421                         ;;
2422                 uts) osname=uts
2423                         osvers="$3"
2424                         ;;
2425                 $2) case "$osname" in
2426                         *isc*) ;;
2427                         *freebsd*) ;;
2428                         svr*)
2429                                 : svr4.x or possibly later
2430                                 case "svr$3" in 
2431                                 ${osname}*)
2432                                         osname=svr$3
2433                                         osvers=$4
2434                                         ;;
2435                                 esac
2436                                 case "$osname" in
2437                                 svr4.0)
2438                                         : Check for ESIX
2439                                         if test -f /stand/boot ; then
2440                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2441                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2442                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2443                                                         if test -n "$isesix"; then
2444                                                                 osname=esix4
2445                                                         fi
2446                                                 fi
2447                                         fi
2448                                         ;;
2449                                 esac
2450                                 ;;
2451                         *)      if test -f /etc/systemid; then
2452                                         osname=sco
2453                                         set `echo $3 | $sed 's/\./ /g'` $4
2454                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2455                                                 osvers=$1.$2.$3
2456                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2457                                                 osvers=$1.$2
2458                                         elif $test -f $src/hints/sco_$1.sh; then
2459                                                 osvers=$1
2460                                         fi
2461                                 else
2462                                         case "$osname" in
2463                                         '') : Still unknown.  Probably a generic Sys V.
2464                                                 osname="sysv"
2465                                                 osvers="$3"
2466                                                 ;;
2467                                         esac
2468                                 fi
2469                                 ;;
2470                         esac
2471                         ;;
2472                 *)      case "$osname" in
2473                         '') : Still unknown.  Probably a generic BSD.
2474                                 osname="$1"
2475                                 osvers="$3"
2476                                 ;;
2477                         esac
2478                         ;;
2479                 esac
2480         else
2481                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2482                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2483                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2484                                 osname=news_os
2485                         fi
2486                         $rm -f UU/kernel.what
2487                 elif test -d c:/.; then
2488                         set X $myuname
2489                         osname=os2
2490                         osvers="$5"
2491                 fi
2492         fi
2493         
2494         : Now look for a hint file osname_osvers, unless one has been
2495         : specified already.
2496         case "$hintfile" in
2497         ''|' ')
2498                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2499                 : Also try without trailing minor version numbers.
2500                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2501                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2502                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2503                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2504                 case "$file" in
2505                 '') dflt=none ;;
2506                 *)  case "$osvers" in
2507                         '') dflt=$file
2508                                 ;;
2509                         *)  if $test -f $src/hints/$file.sh ; then
2510                                         dflt=$file
2511                                 elif $test -f $src/hints/$xfile.sh ; then
2512                                         dflt=$xfile
2513                                 elif $test -f $src/hints/$xxfile.sh ; then
2514                                         dflt=$xxfile
2515                                 elif $test -f $src/hints/$xxxfile.sh ; then
2516                                         dflt=$xxxfile
2517                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2518                                         dflt=$xxxxfile
2519                                 elif $test -f "$src/hints/${osname}.sh" ; then
2520                                         dflt="${osname}"
2521                                 else
2522                                         dflt=none
2523                                 fi
2524                                 ;;
2525                         esac
2526                         ;;
2527                 esac
2528                 if $test -f Policy.sh ; then
2529                         case "$dflt" in
2530                         *Policy*) ;;
2531                         none) dflt="Policy" ;;
2532                         *) dflt="Policy $dflt" ;;
2533                         esac
2534                 fi
2535                 ;;
2536         *)
2537                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2538                 ;;
2539         esac
2540
2541         if $test -f Policy.sh ; then
2542                 $cat <<EOM
2543
2544 There's also a Policy hint file available, which should make the
2545 site-specific (policy) questions easier to answer.
2546 EOM
2547
2548         fi
2549
2550         $cat <<EOM
2551
2552 You may give one or more space-separated answers, or "none" if appropriate.
2553 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2554 is a good thing.  DO NOT give a wrong version or a wrong OS.
2555
2556 EOM
2557
2558         rp="Which of these apply, if any?"
2559         . UU/myread
2560         tans=$ans
2561         for file in $tans; do
2562                 if $test X$file = XPolicy -a -f Policy.sh; then
2563                         . Policy.sh
2564                         $cat Policy.sh >> UU/config.sh
2565                 elif $test -f $src/hints/$file.sh; then
2566                         . $src/hints/$file.sh
2567                         $cat $src/hints/$file.sh >> UU/config.sh
2568                 elif $test X$tans = X -o X$tans = Xnone ; then
2569                         : nothing
2570                 else
2571                         : Give one chance to correct a possible typo.
2572                         echo "$file.sh does not exist"
2573                         dflt=$file
2574                         rp="hint to use instead?"
2575                         . UU/myread
2576                         for file in $ans; do
2577                                 if $test -f "$src/hints/$file.sh"; then
2578                                         . $src/hints/$file.sh
2579                                         $cat $src/hints/$file.sh >> UU/config.sh
2580                                 elif $test X$ans = X -o X$ans = Xnone ; then
2581                                         : nothing
2582                                 else
2583                                         echo "$file.sh does not exist -- ignored."
2584                                 fi
2585                         done
2586                 fi
2587         done
2588
2589         hint=recommended
2590         : Remember our hint file for later.
2591         if $test -f "$src/hints/$file.sh" ; then
2592                 hintfile="$file"
2593         else
2594                 hintfile=''
2595         fi
2596 fi
2597 cd UU
2598 ;;
2599 *)
2600         echo " "
2601         echo "Fetching default answers from $config_sh..." >&4
2602         tmp_n="$n"
2603         tmp_c="$c"
2604         cd ..
2605         cp $config_sh config.sh 2>/dev/null
2606         chmod +w config.sh
2607         . ./config.sh
2608         cd UU
2609         cp ../config.sh .
2610         n="$tmp_n"
2611         c="$tmp_c"
2612         hint=previous
2613         ;;
2614 esac
2615 test "$override" && . ./optdef.sh
2616 myuname="$newmyuname"
2617
2618 : Restore computed paths
2619 for file in $loclist $trylist; do
2620         eval $file="\$_$file"
2621 done
2622
2623 cat << EOM
2624
2625 Configure uses the operating system name and version to set some defaults.
2626 The default value is probably right if the name rings a bell. Otherwise,
2627 since spelling matters for me, either accept the default or answer "none"
2628 to leave it blank.
2629
2630 EOM
2631 case "$osname" in
2632         ''|' ')
2633                 case "$hintfile" in
2634                 ''|' '|none) dflt=none ;;
2635                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2636                 esac
2637                 ;;
2638         *) dflt="$osname" ;;
2639 esac
2640 rp="Operating system name?"
2641 . ./myread
2642 case "$ans" in
2643 none)  osname='' ;;
2644 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2645 esac
2646 echo " "
2647 case "$osvers" in
2648         ''|' ')
2649                 case "$hintfile" in
2650                 ''|' '|none) dflt=none ;;
2651                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2652                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2653                         case "$dflt" in
2654                         ''|' ') dflt=none ;;
2655                         esac
2656                         ;;
2657                 esac
2658                 ;;
2659         *) dflt="$osvers" ;;
2660 esac
2661 rp="Operating system version?"
2662 . ./myread
2663 case "$ans" in
2664 none)  osvers='' ;;
2665 *) osvers="$ans" ;;
2666 esac
2667
2668
2669 . ./posthint.sh
2670
2671 : who configured the system
2672 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2673 cf_by=`(logname) 2>/dev/null`
2674 case "$cf_by" in
2675 "")
2676         cf_by=`(whoami) 2>/dev/null`
2677         case "$cf_by" in
2678         "") cf_by=unknown ;;
2679         esac ;;
2680 esac
2681
2682 : set up the script used to warn in case of inconsistency
2683 cat <<EOS >whoa
2684 $startsh
2685 EOS
2686 cat <<'EOSC' >>whoa
2687 dflt=y
2688 echo " "
2689 echo "*** WHOA THERE!!! ***" >&4
2690 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2691 rp="    Keep the $hint value?"
2692 . ./myread
2693 case "$ans" in
2694 y) td=$was; tu=$was;;
2695 esac
2696 EOSC
2697
2698 : function used to set $1 to $val
2699 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2700 case "$val$was" in
2701 $define$undef) . ./whoa; eval "$var=\$td";;
2702 $undef$define) . ./whoa; eval "$var=\$tu";;
2703 *) eval "$var=$val";;
2704 esac'
2705
2706 case "$usethreads" in
2707 $define|true|[yY]*)     dflt='y';;
2708 *) dflt='n';;
2709 esac
2710 cat <<EOM
2711
2712 Perl can be built to take advantage of threads on some systems.
2713 To do so, Configure can be run with -Dusethreads.
2714
2715 Note that threading is a highly experimental feature, and
2716 some known race conditions still remain.  If you choose to try
2717 it, be very sure to not actually deploy it for production
2718 purposes.  README.threads has more details, and is required
2719 reading if you enable threads.
2720
2721 If this doesn't make any sense to you, just accept the default '$dflt'.
2722 EOM
2723 rp='Build a threading Perl?'
2724 . ./myread
2725 case "$ans" in
2726 y|Y)    val="$define" ;;
2727 *)      val="$undef" ;;
2728 esac
2729 set usethreads
2730 eval $setvar
2731
2732 case "$usethreads" in
2733 $define)
2734         $cat <<EOM
2735
2736 As of 5.5.640, Perl has two different internal threading implementations,
2737 the 5.005 version (5005threads) and an interpreter-based version
2738 (ithreads) that has one interpreter per thread.  Both are very 
2739 experimental.  This arrangement exists to help developers work out
2740 which one is better.
2741
2742 If you're a casual user, you probably don't want interpreter-threads
2743 at this time.  There doesn't yet exist a way to create threads from
2744 within Perl in this model, i.e., "use Thread;" will NOT work.
2745 EOM
2746         : Default to ithreads unless overridden on command line or with
2747         : old config.sh
2748         dflt='y'
2749         case "$use5005threads" in
2750                 $define|true|[yY]*) dflt='n';;
2751         esac
2752         case "$useithreads" in
2753                 $undef|false|[nN]*) dflt='n';;
2754         esac
2755         rp='Use interpreter-based ithreads?'
2756         . ./myread
2757         case "$ans" in
2758         y|Y)    val="$define" ;;
2759         *)      val="$undef" ;;
2760         esac
2761         set useithreads
2762         eval $setvar
2763         : Now set use5005threads to the opposite value.
2764         case "$useithreads" in
2765         $define) val="$undef" ;;
2766         *) val="$define" ;;
2767         esac
2768         set use5005threads
2769         eval $setvar
2770         ;;
2771 *)
2772         useithreads="$undef"
2773         use5005threads="$undef"
2774         ;;
2775 esac
2776
2777 case "$d_oldpthreads" in
2778 '')     : Configure tests would be welcome here.  For now, assume undef.
2779         val="$undef" ;;
2780 *)      val="$d_oldpthreads" ;;
2781 esac
2782 set d_oldpthreads
2783 eval $setvar
2784
2785
2786 case "$usethreads" in
2787 "$define"|true|[yY]*)
2788 : Look for a hint-file generated 'call-back-unit'.  If the
2789 : user has specified that a threading perl is to be built,
2790 : we may need to set or change some other defaults.
2791         if $test -f usethreads.cbu; then
2792                 echo "Your platform has some specific hints for threaded builds, using them..."
2793                 . ./usethreads.cbu
2794         else
2795                 $cat <<EOM
2796 (Your platform doesn't have any specific hints for threaded builds.
2797  Assuming POSIX threads, then.)
2798 EOM
2799         fi
2800         ;;
2801 esac
2802
2803 cat <<EOM
2804
2805 Perl can be built so that multiple Perl interpreters can coexist
2806 within the same Perl executable.
2807 EOM
2808
2809 case "$useithreads" in
2810 $define)
2811         cat <<EOM
2812 This multiple interpreter support is required for interpreter-based threads.
2813 EOM
2814         val="$define"
2815         ;;
2816 *)      case "$usemultiplicity" in
2817         $define|true|[yY]*)     dflt='y';;
2818         *) dflt='n';;
2819         esac
2820         echo " "
2821         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2822         rp='Build Perl for multiplicity?'
2823         . ./myread
2824         case "$ans" in
2825         y|Y)    val="$define" ;;
2826         *)      val="$undef" ;;
2827         esac
2828         ;;
2829 esac
2830 set usemultiplicity
2831 eval $setvar
2832
2833 : determine where manual pages are on this system
2834 echo " "
2835 case "$sysman" in
2836 '') 
2837         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2838         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2839         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2840         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2841         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2842         sysman=`./loc . /usr/man/man1 $syspath`
2843         ;;
2844 esac
2845 if $test -d "$sysman"; then
2846         echo "System manual is in $sysman." >&4
2847 else
2848         echo "Could not find manual pages in source form." >&4
2849 fi
2850
2851 : see what memory models we can support
2852 case "$models" in
2853 '')
2854         $cat >pdp11.c <<'EOP'
2855 int main() {
2856 #ifdef pdp11
2857         exit(0);
2858 #else
2859         exit(1);
2860 #endif
2861 }
2862 EOP
2863         case "$cc" in
2864         '') modelcc="$cc" ;;
2865         *) modelcc="cc" ;;
2866         esac
2867         ( $modelcc -o pdp11 pdp11.c ) >/dev/null 2>&1
2868         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2869                 dflt='unsplit split'
2870         else
2871                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2872                 case "$tans" in
2873                 X) dflt='none';;
2874                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2875                                 dflt='small'
2876                         else
2877                                 dflt=''
2878                         fi
2879                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2880                                 dflt="$dflt medium"
2881                         fi
2882                         if $test -d /lib/large || $test -d /usr/lib/large; then
2883                                 dflt="$dflt large"
2884                         fi
2885                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2886                                 dflt="$dflt huge"
2887                         fi
2888                 esac
2889         fi;;
2890 *) dflt="$models";;
2891 esac
2892 $cat <<EOM
2893  
2894 Some systems have different model sizes.  On most systems they are called
2895 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2896 split.  If your system doesn't support different memory models, say "none".
2897 If you wish to force everything to one memory model, say "none" here and
2898 put the appropriate flags later when it asks you for other cc and ld flags.
2899 Venix systems may wish to put "none" and let the compiler figure things out.
2900 (In the following question multiple model names should be space separated.)
2901
2902 The default for most systems is "none".
2903
2904 EOM
2905 rp="Which memory models are supported?"
2906 . ./myread
2907 models="$ans"
2908
2909 case "$models" in
2910 none)
2911         small=''
2912         medium=''
2913         large=''
2914         huge=''
2915         unsplit=''
2916         split=''
2917         ;;
2918 *split)
2919         case "$split" in
2920         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2921                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2922                         dflt='-i'
2923                 else
2924                         dflt='none'
2925                 fi;;
2926         *) dflt="$split";;
2927         esac
2928         rp="What flag indicates separate I and D space?"
2929         . ./myread
2930         tans="$ans"
2931         case "$tans" in
2932         none) tans='';;
2933         esac
2934         split="$tans"
2935         unsplit='';;
2936 *large*|*small*|*medium*|*huge*)
2937         case "$models" in
2938         *large*)
2939                 case "$large" in
2940                 '') dflt='-Ml';;
2941                 *) dflt="$large";;
2942                 esac
2943         rp="What flag indicates large model?"
2944         . ./myread
2945         tans="$ans"
2946         case "$tans" in
2947         none) tans='';
2948         esac
2949         large="$tans";;
2950         *) large='';;
2951         esac
2952         case "$models" in
2953         *huge*) case "$huge" in
2954                 '') dflt='-Mh';;
2955                 *) dflt="$huge";;
2956                 esac
2957                 rp="What flag indicates huge model?"
2958                 . ./myread
2959                 tans="$ans"
2960                 case "$tans" in
2961                 none) tans='';
2962                 esac
2963                 huge="$tans";;
2964         *) huge="$large";;
2965         esac
2966         case "$models" in
2967         *medium*) case "$medium" in
2968                 '') dflt='-Mm';;
2969                 *) dflt="$medium";;
2970                 esac
2971                 rp="What flag indicates medium model?"
2972                 . ./myread
2973                 tans="$ans"
2974                 case "$tans" in
2975                 none) tans='';
2976                 esac
2977                 medium="$tans";;
2978         *) medium="$large";;
2979         esac
2980         case "$models" in
2981         *small*) case "$small" in
2982                 '') dflt='none';;
2983                 *) dflt="$small";;
2984                 esac
2985                 rp="What flag indicates small model?"
2986                 . ./myread
2987                 tans="$ans"
2988                 case "$tans" in
2989                 none) tans='';
2990                 esac
2991                 small="$tans";;
2992         *) small='';;
2993         esac
2994         ;;
2995 *)
2996         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2997         ;;
2998 esac
2999 $rm -f pdp11.* pdp11
3000
3001 : make some quick guesses about what we are up against
3002 echo " "
3003 $echo $n "Hmm...  $c"
3004 echo exit 1 >bsd
3005 echo exit 1 >usg
3006 echo exit 1 >v7
3007 echo exit 1 >osf1
3008 echo exit 1 >eunice
3009 echo exit 1 >xenix
3010 echo exit 1 >venix
3011 echo exit 1 >os2
3012 d_bsd="$undef"
3013 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3014 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3015 then
3016         echo "Looks kind of like an OSF/1 system, but we'll see..."
3017         echo exit 0 >osf1
3018 elif test `echo abc | tr a-z A-Z` = Abc ; then
3019         xxx=`./loc addbib blurfl $pth`
3020         if $test -f $xxx; then
3021         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3022                 echo exit 0 >bsd
3023                 echo exit 0 >usg
3024         else
3025                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3026                         echo "Looks kind of like an extended USG system, but we'll see..."
3027                 else
3028                         echo "Looks kind of like a USG system, but we'll see..."
3029                 fi
3030                 echo exit 0 >usg
3031         fi
3032 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3033         echo "Looks kind of like a BSD system, but we'll see..."
3034         d_bsd="$define"
3035         echo exit 0 >bsd
3036 else
3037         echo "Looks kind of like a Version 7 system, but we'll see..."
3038         echo exit 0 >v7
3039 fi
3040 case "$eunicefix" in
3041 *unixtovms*)
3042         $cat <<'EOI'
3043 There is, however, a strange, musty smell in the air that reminds me of
3044 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3045 EOI
3046         echo exit 0 >eunice
3047         d_eunice="$define"
3048 : it so happens the Eunice I know will not run shell scripts in Unix format
3049         ;;
3050 *)
3051         echo " "
3052         echo "Congratulations.  You aren't running Eunice."
3053         d_eunice="$undef"
3054         ;;
3055 esac
3056 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3057 case "$p_" in
3058 :) ;;
3059 *)
3060         $cat <<'EOI'
3061 I have the feeling something is not exactly right, however...don't tell me...
3062 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3063 EOI
3064         echo exit 0 >os2
3065         ;;
3066 esac
3067 if test -f /xenix; then
3068         echo "Actually, this looks more like a XENIX system..."
3069         echo exit 0 >xenix
3070         d_xenix="$define"
3071 else
3072         echo " "
3073         echo "It's not Xenix..."
3074         d_xenix="$undef"
3075 fi
3076 chmod +x xenix
3077 $eunicefix xenix
3078 if test -f /venix; then
3079         echo "Actually, this looks more like a VENIX system..."
3080         echo exit 0 >venix
3081 else
3082         echo " "
3083         if ./xenix; then
3084                 : null
3085         else
3086                 echo "Nor is it Venix..."
3087         fi
3088 fi
3089 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3090 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3091 $rm -f foo
3092
3093 : see if we need a special compiler
3094 echo " "
3095 if ./usg; then
3096         case "$cc" in
3097         '') case "$Mcc" in
3098                 /*) dflt='Mcc';;
3099                 *) case "$large" in
3100                         -M*) dflt='cc';;
3101                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3102                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3103                                                 dflt='cc'
3104                                         else
3105                                                 dflt='cc -M'
3106                                         fi
3107                                 else
3108                                         dflt='cc'
3109                                 fi;;
3110                         esac;;
3111                 esac;;
3112         *)  dflt="$cc";;
3113         esac
3114         case "$dflt" in
3115         *M*)    $cat <<'EOM'
3116 On some older systems the default C compiler will not resolve multiple global
3117 references that happen to have the same name.  On some such systems the "Mcc"
3118 command may be used to force these to be resolved.  On other systems a "cc -M"
3119 command is required.  (Note that the -M flag on other systems indicates a
3120 memory model to use!) If you have the Gnu C compiler, you might wish to use
3121 that instead.
3122
3123 EOM
3124         ;;
3125         esac
3126         rp="Use which C compiler?"
3127         . ./myread
3128         cc="$ans"
3129 else
3130         case "$cc" in
3131         '') dflt=cc;;
3132         *) dflt="$cc";;
3133         esac
3134         rp="Use which C compiler?"
3135         . ./myread
3136         cc="$ans"
3137 fi
3138 : Look for a hint-file generated 'call-back-unit'.  Now that the
3139 : user has specified the compiler, we may need to set or change some
3140 : other defaults.
3141 if $test -f cc.cbu; then
3142     . ./cc.cbu
3143 fi
3144 . ./checkcc
3145
3146 echo " "
3147 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3148 $cat >gccvers.c <<EOM
3149 #include <stdio.h>
3150 int main() {
3151 #ifdef __GNUC__
3152 #ifdef __VERSION__
3153         printf("%s\n", __VERSION__);
3154 #else
3155         printf("%s\n", "1");
3156 #endif
3157 #endif
3158         exit(0);
3159 }
3160 EOM
3161 if $cc $ldflags -o gccvers gccvers.c; then
3162         gccversion=`./gccvers`
3163         case "$gccversion" in
3164         '') echo "You are not using GNU cc." ;;
3165         *)  echo "You are using GNU cc $gccversion."
3166             ;;
3167         esac
3168 else
3169         echo " "
3170         echo "*** WHOA THERE!!! ***" >&4
3171         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3172         case "$knowitall" in
3173         '')
3174         echo "    You'd better start hunting for one and let me know about it." >&4
3175                 exit 1
3176                 ;;
3177         esac
3178 fi
3179 $rm -f gccvers*
3180 case "$gccversion" in
3181 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3182 esac
3183
3184 : see how we invoke the C preprocessor
3185 echo " "
3186 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3187 cat <<'EOT' >testcpp.c
3188 #define ABC abc
3189 #define XYZ xyz
3190 ABC.XYZ
3191 EOT
3192 cd ..
3193 if test ! -f cppstdin; then
3194         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3195                 # AIX cc -E doesn't show the absolute headerfile
3196                 # locations but we'll cheat by using the -M flag.
3197                 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
3198         else
3199                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3200         fi
3201 else
3202         echo "Keeping your $hint cppstdin wrapper."
3203 fi
3204 chmod 755 cppstdin
3205 wrapper=`pwd`/cppstdin
3206 ok='false'
3207 cd UU
3208
3209 if $test "X$cppstdin" != "X" && \
3210         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3211         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3212 then
3213         echo "You used to use $cppstdin $cppminus so we'll use that again."
3214         case "$cpprun" in
3215         '') echo "But let's see if we can live without a wrapper..." ;;
3216         *)
3217                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3218                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3219                 then
3220                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3221                         ok='true'
3222                 else
3223                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3224                 fi
3225                 ;;
3226         esac
3227 else
3228         case "$cppstdin" in
3229         '') ;;
3230         *)
3231                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3232                 ;;
3233         esac
3234 fi
3235
3236 if $ok; then
3237         : nothing
3238 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3239         $cc -E <testcpp.c >testcpp.out 2>&1; \
3240         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3241         echo "Yup, it does."
3242         x_cpp="$cc -E"
3243         x_minus='';
3244 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3245         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3246         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3247         echo "Yup, it does."
3248         x_cpp="$cc -E"
3249         x_minus='-';
3250 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3251         $cc -P <testcpp.c >testcpp.out 2>&1; \
3252         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3253         echo "Yipee, that works!"
3254         x_cpp="$cc -P"
3255         x_minus='';
3256 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3257         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3258         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3259         echo "At long last!"
3260         x_cpp="$cc -P"
3261         x_minus='-';
3262 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3263         $cpp <testcpp.c >testcpp.out 2>&1; \
3264         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3265         echo "It works!"
3266         x_cpp="$cpp"
3267         x_minus='';
3268 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3269         $cpp - <testcpp.c >testcpp.out 2>&1; \
3270         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3271         echo "Hooray, it works!  I was beginning to wonder."
3272         x_cpp="$cpp"
3273         x_minus='-';
3274 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3275         $wrapper <testcpp.c >testcpp.out 2>&1; \
3276         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3277         x_cpp="$wrapper"
3278         x_minus=''
3279         echo "Eureka!"
3280 else
3281         dflt=''
3282         rp="No dice.  I can't find a C preprocessor.  Name one:"
3283         . ./myread
3284         x_cpp="$ans"
3285         x_minus=''
3286         $x_cpp <testcpp.c >testcpp.out 2>&1
3287         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3288                 echo "OK, that will do." >&4
3289         else
3290 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3291                 exit 1
3292         fi
3293 fi
3294
3295 case "$ok" in
3296 false)
3297         cppstdin="$x_cpp"
3298         cppminus="$x_minus"
3299         cpprun="$x_cpp"
3300         cpplast="$x_minus"
3301         set X $x_cpp
3302         shift
3303         case "$1" in
3304         "$cpp")
3305                 echo "Perhaps can we force $cc -E using a wrapper..."
3306                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3307                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3308                 then
3309                         echo "Yup, we can."
3310                         cppstdin="$wrapper"
3311                         cppminus='';
3312                 else
3313                         echo "Nope, we'll have to live without it..."
3314                 fi
3315                 ;;
3316         esac
3317         case "$cpprun" in
3318         "$wrapper")
3319                 cpprun=''
3320                 cpplast=''
3321                 ;;
3322         esac
3323         ;;
3324 esac
3325
3326 case "$cppstdin" in
3327 "$wrapper"|'cppstdin') ;;
3328 *) $rm -f $wrapper;;
3329 esac
3330 $rm -f testcpp.c testcpp.out
3331
3332 : decide how portable to be.  Allow command line overrides.
3333 case "$d_portable" in
3334 "$undef") ;;
3335 *)      d_portable="$define" ;;
3336 esac
3337
3338 : set up shell script to do ~ expansion
3339 cat >filexp <<EOSS
3340 $startsh
3341 : expand filename
3342 case "\$1" in
3343  ~/*|~)
3344         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3345         ;;
3346  ~*)
3347         if $test -f /bin/csh; then
3348                 /bin/csh -f -c "glob \$1"
3349                 failed=\$?
3350                 echo ""
3351                 exit \$failed
3352         else
3353                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3354                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3355                 if $test ! -d "\$dir"; then
3356                         me=\`basename \$0\`
3357                         echo "\$me: can't locate home directory for: \$name" >&2
3358                         exit 1
3359                 fi
3360                 case "\$1" in
3361                 */*)
3362                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3363                         ;;
3364                 *)
3365                         echo \$dir
3366                         ;;
3367                 esac
3368         fi
3369         ;;
3370 *)
3371         echo \$1
3372         ;;
3373 esac
3374 EOSS
3375 chmod +x filexp
3376 $eunicefix filexp
3377
3378 : now set up to get a file name
3379 cat <<EOS >getfile
3380 $startsh
3381 EOS
3382 cat <<'EOSC' >>getfile
3383 tilde=''
3384 fullpath=''
3385 already=''
3386 skip=''
3387 none_ok=''
3388 exp_file=''
3389 nopath_ok=''
3390 orig_rp="$rp"
3391 orig_dflt="$dflt"
3392 case "$gfpth" in
3393 '') gfpth='.' ;;
3394 esac
3395
3396 case "$fn" in
3397 *\(*)
3398         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3399         fn=`echo $fn | sed 's/(.*)//'`
3400         ;;
3401 esac
3402
3403 case "$fn" in
3404 *:*)
3405         loc_file=`expr $fn : '.*:\(.*\)'`
3406         fn=`expr $fn : '\(.*\):.*'`
3407         ;;
3408 esac
3409
3410 case "$fn" in
3411 *~*) tilde=true;;
3412 esac
3413 case "$fn" in
3414 */*) fullpath=true;;
3415 esac
3416 case "$fn" in
3417 *+*) skip=true;;
3418 esac
3419 case "$fn" in
3420 *n*) none_ok=true;;
3421 esac
3422 case "$fn" in
3423 *e*) exp_file=true;;
3424 esac
3425 case "$fn" in
3426 *p*) nopath_ok=true;;
3427 esac
3428
3429 case "$fn" in
3430 *f*) type='File';;
3431 *d*) type='Directory';;
3432 *l*) type='Locate';;
3433 esac
3434
3435 what="$type"
3436 case "$what" in
3437 Locate) what='File';;
3438 esac
3439
3440 case "$exp_file" in
3441 '')
3442         case "$d_portable" in
3443         "$define") ;;
3444         *) exp_file=true;;
3445         esac
3446         ;;
3447 esac
3448
3449 cd ..
3450 while test "$type"; do
3451         redo=''
3452         rp="$orig_rp"
3453         dflt="$orig_dflt"
3454         case "$tilde" in
3455         true) rp="$rp (~name ok)";;
3456         esac
3457         . UU/myread
3458         if test -f UU/getfile.ok && \
3459                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3460         then
3461                 value="$ans"
3462                 ansexp="$ans"
3463                 break
3464         fi
3465         case "$ans" in
3466         none)
3467                 value=''
3468                 ansexp=''
3469                 case "$none_ok" in
3470                 true) type='';;
3471                 esac
3472                 ;;
3473         *)
3474                 case "$tilde" in
3475                 '') value="$ans"
3476                         ansexp="$ans";;
3477                 *)
3478                         value=`UU/filexp $ans`
3479                         case $? in
3480                         0)
3481                                 if test "$ans" != "$value"; then
3482                                         echo "(That expands to $value on this system.)"
3483                                 fi
3484                                 ;;
3485                         *) value="$ans";;
3486                         esac
3487                         ansexp="$value"
3488                         case "$exp_file" in
3489                         '') value="$ans";;
3490                         esac
3491                         ;;
3492                 esac
3493                 case "$fullpath" in
3494                 true)
3495                         case "$ansexp" in
3496                         /*) value="$ansexp" ;;
3497                         [a-zA-Z]:/*) value="$ansexp" ;;
3498                         *)
3499                                 redo=true
3500                                 case "$already" in
3501                                 true)
3502                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3503                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3504                                         ;;
3505                                 *)
3506                                 echo "Please give a full path name, starting with slash." >&4
3507                                         case "$tilde" in
3508                                         true)
3509                                 echo "Note that using ~name is ok provided it expands well." >&4
3510                                                 already=true
3511                                                 ;;
3512                                         esac
3513                                 esac
3514                                 ;;
3515                         esac
3516                         ;;
3517                 esac
3518                 case "$redo" in
3519                 '')
3520                         case "$type" in
3521                         File)
3522                                 for fp in $gfpth; do
3523                                         if test "X$fp" = X.; then
3524                                             pf="$ansexp"
3525                                         else    
3526                                             pf="$fp/$ansexp"
3527                                         fi
3528                                         if test -f "$pf"; then
3529                                                 type=''
3530                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3531                                         then
3532                                                 echo "($value is not a plain file, but that's ok.)"
3533                                                 type=''
3534                                         fi
3535                                         if test X"$type" = X; then
3536                                             value="$pf"
3537                                             break
3538                                         fi
3539                                 done
3540                                 ;;
3541                         Directory)
3542                                 for fp in $gfpth; do
3543                                         if test "X$fp" = X.; then
3544                                             dir="$ans"
3545                                             direxp="$ansexp"
3546                                         else    
3547                                             dir="$fp/$ansexp"
3548                                             direxp="$fp/$ansexp"
3549                                         fi
3550                                         if test -d "$direxp"; then
3551                                                 type=''
3552                                                 value="$dir"
3553                                                 break
3554                                         fi
3555                                 done
3556                                 ;;
3557                         Locate)
3558                                 if test -d "$ansexp"; then
3559                                         echo "(Looking for $loc_file in directory $value.)"
3560                                         value="$value/$loc_file"
3561                                         ansexp="$ansexp/$loc_file"
3562                                 fi
3563                                 if test -f "$ansexp"; then
3564                                         type=''
3565                                 fi
3566                                 case "$nopath_ok" in
3567                                 true)   case "$value" in
3568                                         */*) ;;
3569                                         *)      echo "Assuming $value will be in people's path."
3570                                                 type=''
3571                                                 ;;
3572                                         esac
3573                                         ;;
3574                                 esac
3575                                 ;;
3576                         esac
3577
3578                         case "$skip" in
3579                         true) type='';
3580                         esac
3581
3582                         case "$type" in
3583                         '') ;;
3584                         *)
3585                                 if test "$fastread" = yes; then
3586                                         dflt=y
3587                                 else
3588                                         dflt=n
3589                                 fi
3590                                 rp="$what $value doesn't exist.  Use that name anyway?"
3591                                 . UU/myread
3592                                 dflt=''
3593                                 case "$ans" in
3594                                 y*) type='';;
3595                                 *) echo " ";;
3596                                 esac
3597                                 ;;
3598                         esac
3599                         ;;
3600                 esac
3601                 ;;
3602         esac
3603 done
3604 cd UU
3605 ans="$value"
3606 rp="$orig_rp"
3607 dflt="$orig_dflt"
3608 rm -f getfile.ok
3609 test "X$gfpthkeep" != Xy && gfpth=""
3610 EOSC
3611
3612 : What should the include directory be ?
3613 echo " "
3614 $echo $n "Hmm...  $c"
3615 dflt='/usr/include'
3616 incpath=''
3617 mips_type=''
3618 if $test -f /bin/mips && /bin/mips; then
3619         echo "Looks like a MIPS system..."
3620         $cat >usr.c <<'EOCP'
3621 #ifdef SYSTYPE_BSD43
3622 /bsd43
3623 #endif
3624 EOCP
3625         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3626                 dflt='/bsd43/usr/include'
3627                 incpath='/bsd43'
3628                 mips_type='BSD 4.3'
3629         else
3630                 mips_type='System V'
3631         fi
3632         $rm -f usr.c usr.out
3633         echo "and you're compiling with the $mips_type compiler and libraries."
3634         xxx_prompt=y
3635         echo "exit 0" >mips
3636 else
3637         echo "Doesn't look like a MIPS system."
3638         xxx_prompt=n
3639         echo "exit 1" >mips
3640 fi
3641 chmod +x mips
3642 $eunicefix mips
3643 case "$usrinc" in
3644 '') ;;
3645 *) dflt="$usrinc";;
3646 esac
3647 case "$xxx_prompt" in
3648 y)      fn=d/
3649         echo " "
3650         rp='Where are the include files you want to use?'
3651         . ./getfile
3652         usrinc="$ans"
3653         ;;
3654 *)      usrinc="$dflt"
3655         ;;
3656 esac
3657
3658 : Set private lib path
3659 case "$plibpth" in
3660 '') if ./mips; then
3661                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3662         fi;;
3663 esac
3664 case "$libpth" in
3665 ' ') dlist='';;
3666 '') dlist="$loclibpth $plibpth $glibpth";;
3667 *) dlist="$libpth";;
3668 esac
3669
3670 : Now check and see which directories actually exist, avoiding duplicates
3671 libpth=''
3672 for xxx in $dlist
3673 do
3674     if $test -d $xxx; then
3675                 case " $libpth " in
3676                 *" $xxx "*) ;;
3677                 *) libpth="$libpth $xxx";;
3678                 esac
3679     fi
3680 done
3681 $cat <<'EOM'
3682
3683 Some systems have incompatible or broken versions of libraries.  Among
3684 the directories listed in the question below, please remove any you
3685 know not to be holding relevant libraries, and add any that are needed.
3686 Say "none" for none.
3687
3688 EOM
3689 case "$libpth" in
3690 '') dflt='none';;
3691 *)
3692         set X $libpth
3693         shift
3694         dflt=${1+"$@"}
3695         ;;
3696 esac
3697 rp="Directories to use for library searches?"
3698 . ./myread
3699 case "$ans" in
3700 none) libpth=' ';;
3701 *) libpth="$ans";;
3702 esac
3703
3704 : compute shared library extension
3705 case "$so" in
3706 '')
3707         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3708                 dflt='sl'
3709         else
3710                 dflt='so'
3711         fi
3712         ;;
3713 *) dflt="$so";;
3714 esac
3715 $cat <<EOM
3716
3717 On some systems, shared libraries may be available.  Answer 'none' if
3718 you want to suppress searching of shared libraries for the remainder
3719 of this configuration.
3720
3721 EOM
3722 rp='What is the file extension used for shared libraries?'
3723 . ./myread
3724 so="$ans"
3725
3726 : Define several unixisms.
3727 : Hints files or command line option can be used to override them.
3728 : The convoluted testing is in case hints files set either the old
3729 : or the new name.
3730 case "$_exe" in
3731 '')     case "$exe_ext" in
3732     '') ;;
3733         *)      _exe="$exe_ext" ;;
3734         esac
3735         ;;
3736 esac
3737 case "$_a" in
3738 '')     case "$lib_ext" in
3739     '') _a='.a';;
3740         *)      _a="$lib_ext" ;;
3741         esac
3742         ;;
3743 esac
3744 case "$_o" in
3745 '') case "$obj_ext" in
3746         '')     _o='.o';;
3747         *)      _o="$obj_ext";;
3748         esac
3749         ;;
3750 esac
3751 case "$p_" in
3752 '') case "$path_sep" in
3753         '')     p_=':';;
3754         *)      p_="$path_sep";;
3755         esac
3756         ;;
3757 esac
3758 exe_ext=$_exe
3759 lib_ext=$_a
3760 obj_ext=$_o
3761 path_sep=$p_
3762
3763 : Which makefile gets called first.  This is used by make depend.
3764 case "$firstmakefile" in
3765 '') firstmakefile='makefile';;
3766 esac
3767
3768 case "$usesocks" in
3769 $define|true|[yY]*)     dflt='y';;
3770 *) dflt='n';;
3771 esac
3772 cat <<EOM
3773
3774 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3775 Configure must be run with -Dusesocks.
3776
3777 If this doesn't make any sense to you, just accept the default '$dflt'.
3778 EOM
3779 rp='Build Perl for SOCKS?'
3780 . ./myread
3781 case "$ans" in
3782 y|Y)    val="$define" ;;     
3783 *)      val="$undef" ;;
3784 esac
3785 set usesocks
3786 eval $setvar
3787
3788 : Looking for optional libraries
3789 echo " "
3790 echo "Checking for optional libraries..." >&4
3791 case "$libs" in
3792 ' '|'') dflt='';;
3793 *) dflt="$libs";;
3794 esac
3795 case "$libswanted" in
3796 '') libswanted='c_s';;
3797 esac
3798 case "$usesocks" in
3799 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3800 esac
3801 libsfound=''
3802 libsfiles=''
3803 libsdirs=''
3804 libspath=''
3805 for thisdir in $libpth $xlibpth; do
3806   test -d $thisdir && libspath="$libspath $thisdir"
3807 done
3808 for thislib in $libswanted; do
3809         for thisdir in $libspath; do
3810             xxx=''
3811             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3812                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3813                 $test -f "$xxx" && eval $libscheck
3814                 $test -f "$xxx" && libstyle=shared
3815             fi
3816             if test ! -f "$xxx"; then
3817                 xxx=$thisdir/lib$thislib.$so
3818                 $test -f "$xxx" && eval $libscheck
3819                 $test -f "$xxx" && libstyle=shared
3820             fi  
3821             if test ! -f "$xxx"; then
3822                 xxx=$thisdir/lib$thislib$_a
3823                 $test -f "$xxx" && eval $libscheck
3824                 $test -f "$xxx" && libstyle=static
3825             fi
3826             if test ! -f "$xxx"; then
3827                 xxx=$thisdir/$thislib$_a
3828                 $test -f "$xxx" && eval $libscheck
3829                 $test -f "$xxx" && libstyle=static
3830             fi
3831             if test ! -f "$xxx"; then
3832                 xxx=$thisdir/lib${thislib}_s$_a
3833                 $test -f "$xxx" && eval $libscheck
3834                 $test -f "$xxx" && libstyle=static
3835                 $test -f "$xxx" && thislib=${thislib}_s
3836             fi
3837             if test ! -f "$xxx"; then
3838                 xxx=$thisdir/Slib$thislib$_a
3839                 $test -f "$xxx" && eval $libscheck
3840                 $test -f "$xxx" && libstyle=static
3841             fi
3842             if $test -f "$xxx"; then
3843                 case "$libstyle" in
3844                 shared) echo "Found -l$thislib (shared)." ;;
3845                 static) echo "Found -l$thislib." ;;
3846                 *)      echo "Found -l$thislib ($libstyle)." ;;
3847                 esac
3848                 case " $dflt " in
3849                 *"-l$thislib "*);;
3850                 *) dflt="$dflt -l$thislib"
3851                    libsfound="$libsfound $xxx"
3852                    yyy=`basename $xxx`
3853                    libsfiles="$libsfiles $yyy"
3854                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3855                    case " $libsdirs " in
3856                    *" $yyy "*) ;;
3857                    *) libsdirs="$libsdirs $yyy" ;;
3858                    esac
3859                    ;;
3860                 esac
3861                 break
3862             fi  
3863         done
3864         if $test ! -f "$xxx"; then
3865             echo "No -l$thislib."
3866         fi
3867 done
3868 set X $dflt
3869 shift
3870 dflt="$*"
3871 case "$libs" in
3872 '') dflt="$dflt";;
3873 *) dflt="$libs";;
3874 esac
3875 case "$dflt" in
3876 ' '|'') dflt='none';;
3877 esac
3878
3879 $cat <<EOM
3880
3881 In order to compile $package on your machine, a number of libraries
3882 are usually needed.  Include any other special libraries here as well.
3883 Say "none" for none.  The default list is almost always right.
3884 EOM
3885
3886 echo " "
3887 rp="What libraries to use?"
3888 . ./myread
3889 case "$ans" in
3890 none) libs=' ';;
3891 *) libs="$ans";;
3892 esac
3893
3894 : determine optimization, if desired, or use for debug flag also
3895 case "$optimize" in
3896 ' '|$undef) dflt='none';;
3897 '') dflt='-O';;
3898 *) dflt="$optimize";;
3899 esac
3900 $cat <<EOH
3901
3902 By default, $package compiles with the -O flag to use the optimizer.
3903 Alternately, you might want to use the symbolic debugger, which uses
3904 the -g flag (on traditional Unix systems).  Either flag can be
3905 specified here.  To use neither flag, specify the word "none".
3906
3907 EOH
3908 rp="What optimizer/debugger flag should be used?"
3909 . ./myread
3910 optimize="$ans"
3911 case "$optimize" in
3912 'none') optimize=" ";;
3913 esac
3914
3915 dflt=''
3916 : We will not override a previous value, but we might want to
3917 : augment a hint file
3918 case "$hint" in
3919 default|recommended)
3920         case "$gccversion" in
3921         1*) dflt='-fpcc-struct-return' ;;
3922         esac
3923         case "$optimize" in
3924         *-g*) dflt="$dflt -DDEBUGGING";;
3925         esac
3926         case "$gccversion" in
3927         2*) if test -d /etc/conf/kconfig.d &&
3928                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3929                 then
3930                         dflt="$dflt -posix"
3931                 fi
3932                 ;;
3933         esac
3934         case "$gccversion" in
3935         1*) ;;
3936         2.[0-8]*) ;;
3937         ?*)     echo " "
3938                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3939                 echo 'int main(void) { return 0; }' > gcctest.c
3940                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3941                         echo "Yes, it does." 2>&1
3942                         case "$ccflags" in
3943                         *strict-aliasing*) 
3944                                 echo "Leaving current flags $ccflags alone." 2>&1
3945                                 ;;
3946                         *) dflt="$dflt -fno-strict-aliasing" ;;
3947                         esac
3948                 else
3949                         echo "Nope, it doesn't, but that's ok." 2>&1
3950                 fi
3951                 ;;
3952         esac
3953         ;;
3954 esac
3955
3956 case "$mips_type" in
3957 *BSD*|'') inclwanted="$locincpth $usrinc";;
3958 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3959 esac
3960 for thisincl in $inclwanted; do
3961         if $test -d $thisincl; then
3962                 if $test x$thisincl != x$usrinc; then
3963                         case "$dflt" in
3964                         *$thisincl*);;
3965                         *) dflt="$dflt -I$thisincl";;
3966                         esac
3967                 fi
3968         fi
3969 done
3970
3971 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3972         xxx=true;
3973 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3974         xxx=true;
3975 else
3976         xxx=false;
3977 fi;
3978 if $xxx; then
3979         case "$dflt" in
3980         *$2*);;
3981         *) dflt="$dflt -D$2";;
3982         esac;
3983 fi'
3984
3985 set signal.h LANGUAGE_C; eval $inctest
3986
3987 case "$usesocks" in
3988 $define)
3989         ccflags="$ccflags -DSOCKS"
3990         ;;
3991 esac
3992
3993 case "$hint" in
3994 default|recommended) dflt="$ccflags $dflt" ;;
3995 *) dflt="$ccflags";;
3996 esac
3997
3998 case "$dflt" in
3999 ''|' ') dflt=none;;
4000 esac
4001 $cat <<EOH
4002
4003 Your C compiler may want other flags.  For this question you should include
4004 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4005 but you should NOT include libraries or ld flags like -lwhatever.  If you
4006 want $package to honor its debug switch, you should include -DDEBUGGING here.
4007 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4008
4009 To use no flags, specify the word "none".
4010
4011 EOH
4012 set X $dflt
4013 shift
4014 dflt=${1+"$@"}
4015 rp="Any additional cc flags?"
4016 . ./myread
4017 case "$ans" in
4018 none) ccflags='';;
4019 *) ccflags="$ans";;
4020 esac
4021
4022 : the following weeds options from ccflags that are of no interest to cpp
4023 cppflags="$ccflags"
4024 case "$gccversion" in
4025 1*) cppflags="$cppflags -D__GNUC__"
4026 esac
4027 case "$mips_type" in
4028 '');;
4029 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4030 esac
4031 case "$cppflags" in
4032 '');;
4033 *)
4034         echo " "
4035         echo "Let me guess what the preprocessor flags are..." >&4
4036         set X $cppflags
4037         shift
4038         cppflags=''
4039         $cat >cpp.c <<'EOM'
4040 #define BLURFL foo
4041
4042 BLURFL xx LFRULB
4043 EOM
4044         previous=''
4045         for flag in $*
4046         do
4047                 case "$flag" in
4048                 -*) ftry="$flag";;
4049                 *) ftry="$previous $flag";;
4050                 esac
4051                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4052                         >cpp1.out 2>/dev/null && \
4053                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4054                         >cpp2.out 2>/dev/null && \
4055                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4056                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4057                 then
4058                         cppflags="$cppflags $ftry"
4059                         previous=''
4060                 else
4061                         previous="$flag"
4062                 fi
4063         done
4064         set X $cppflags
4065         shift
4066         cppflags=${1+"$@"}
4067         case "$cppflags" in
4068         *-*)  echo "They appear to be: $cppflags";;
4069         esac
4070         $rm -f cpp.c cpp?.out
4071         ;;
4072 esac
4073
4074 : flags used in final linking phase
4075 case "$ldflags" in
4076 '') if ./venix; then
4077                 dflt='-i -z'
4078         else
4079                 dflt=''
4080         fi
4081         case "$ccflags" in
4082         *-posix*) dflt="$dflt -posix" ;;
4083         esac
4084         ;;
4085 *) dflt="$ldflags";;
4086 esac
4087
4088 : Try to guess additional flags to pick up local libraries.
4089 for thislibdir in $libpth; do
4090         case " $loclibpth " in
4091         *" $thislibdir "*)
4092                 case "$dflt " in 
4093                 *"-L$thislibdir "*) ;;
4094                 *)  dflt="$dflt -L$thislibdir" ;;
4095                 esac
4096                 ;;
4097         esac
4098 done
4099
4100 case "$dflt" in
4101 '') dflt='none' ;;
4102 esac
4103
4104 $cat <<EOH
4105
4106 Your C linker may need flags.  For this question you should
4107 include -L/whatever and any other flags used by the C linker, but you
4108 should NOT include libraries like -lwhatever.
4109
4110 Make sure you include the appropriate -L/path flags if your C linker
4111 does not normally search all of the directories you specified above,
4112 namely
4113         $libpth
4114 To use no flags, specify the word "none".
4115
4116 EOH
4117
4118 rp="Any additional ld flags (NOT including libraries)?"
4119 . ./myread
4120 case "$ans" in
4121 none) ldflags='';;
4122 *) ldflags="$ans";;
4123 esac
4124 rmlist="$rmlist pdp11"
4125
4126 : coherency check
4127 echo " "
4128 echo "Checking your choice of C compiler and flags for coherency..." >&4
4129 $cat > try.c <<'EOF'
4130 #include <stdio.h>
4131 int main() { printf("Ok\n"); exit(0); }
4132 EOF
4133 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4134 shift
4135 $cat >try.msg <<'EOM'
4136 I've tried to compile and run the following simple program:
4137
4138 EOM
4139 $cat try.c >> try.msg
4140
4141 $cat >> try.msg <<EOM
4142
4143 I used the command:
4144
4145         $*
4146         ./try
4147
4148 and I got the following output:
4149
4150 EOM
4151 dflt=y
4152 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4153         if sh -c './try' >>try.msg 2>&1; then
4154                 xxx=`./try`
4155                 case "$xxx" in
4156                 "Ok") dflt=n ;;
4157                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4158                         case " $libs " in
4159                         *" -lsfio "*)
4160                                 cat >> try.msg <<'EOQS'
4161 If $libs contains -lsfio, and sfio is mis-configured, then it
4162 sometimes (apparently) runs and exits with a 0 status, but with no
4163 output!  It may have to do with sfio's use of _exit vs. exit.
4164
4165 EOQS
4166                                 rp="You have a big problem.  Shall I abort Configure"
4167                                 dflt=y
4168                                 ;;
4169                         esac
4170                         ;;
4171                 esac
4172         else
4173                 echo "The program compiled OK, but exited with status $?." >>try.msg
4174                 rp="You have a problem.  Shall I abort Configure"
4175                 dflt=y
4176         fi
4177 else
4178         echo "I can't compile the test program." >>try.msg
4179         rp="You have a BIG problem.  Shall I abort Configure"
4180         dflt=y
4181 fi
4182 case "$dflt" in
4183 y)
4184         $cat try.msg >&4
4185         case "$knowitall" in
4186         '')
4187                 echo "(The supplied flags or libraries might be incorrect.)"
4188                 ;;
4189         *) dflt=n;;
4190         esac
4191         echo " "
4192         . ./myread
4193         case "$ans" in
4194         n*|N*) ;;
4195         *)      echo "Ok.  Stopping Configure." >&4
4196                 exit 1
4197                 ;;
4198         esac
4199         ;;
4200 n) echo "OK, that should do.";;
4201 esac
4202 $rm -f try try.* core
4203
4204 : define an is-a-typedef? function
4205 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4206 case "$inclist" in
4207 "") inclist="sys/types.h";;
4208 esac;
4209 eval "varval=\$$var";
4210 case "$varval" in
4211 "")
4212         $rm -f temp.c;
4213         for inc in $inclist; do
4214                 echo "#include <$inc>" >>temp.c;
4215         done;
4216         echo "#ifdef $type" >> temp.c;
4217         echo "printf(\"We have $type\");" >> temp.c;
4218         echo "#endif" >> temp.c;
4219         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4220         if $contains $type temp.E >/dev/null 2>&1; then
4221                 eval "$var=\$type";
4222         else
4223                 eval "$var=\$def";
4224         fi;
4225         $rm -f temp.?;;
4226 *) eval "$var=\$varval";;
4227 esac'
4228
4229 : define an is-a-typedef? function that prompts if the type is not available.
4230 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4231 case "$inclist" in
4232 "") inclist="sys/types.h";;
4233 esac;
4234 eval "varval=\$$var";
4235 case "$varval" in
4236 "")
4237         $rm -f temp.c;
4238         for inc in $inclist; do
4239                 echo "#include <$inc>" >>temp.c;
4240         done;
4241         echo "#ifdef $type" >> temp.c;
4242         echo "printf(\"We have $type\");" >> temp.c;
4243         echo "#endif" >> temp.c;
4244         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4245         echo " " ;
4246         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4247         if $contains $type temp.E >/dev/null 2>&1; then
4248                 echo "$type found." >&4;
4249                 eval "$var=\$type";
4250         else
4251                 echo "$type NOT found." >&4;
4252                 dflt="$def";
4253                 . ./myread ;
4254                 eval "$var=\$ans";
4255         fi;
4256         $rm -f temp.?;;
4257 *) eval "$var=\$varval";;
4258 esac'
4259
4260 : define a shorthand compile call
4261 compile='
4262 mc_file=$1;
4263 shift;
4264 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4265 : define a shorthand compile call for compilations that should be ok.
4266 compile_ok='
4267 mc_file=$1;
4268 shift;
4269 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4270
4271 : check for lengths of integral types
4272 echo " "
4273 case "$intsize" in
4274 '')
4275         echo "Checking to see how big your integers are..." >&4
4276         $cat >intsize.c <<'EOCP'
4277 #include <stdio.h>
4278 int main()
4279 {
4280         printf("intsize=%d;\n", (int)sizeof(int));
4281         printf("longsize=%d;\n", (int)sizeof(long));
4282         printf("shortsize=%d;\n", (int)sizeof(short));
4283         exit(0);
4284 }
4285 EOCP
4286         set intsize
4287         if eval $compile_ok && ./intsize > /dev/null; then
4288                 eval `./intsize`
4289                 echo "Your integers are $intsize bytes long."
4290                 echo "Your long integers are $longsize bytes long."
4291                 echo "Your short integers are $shortsize bytes long."
4292         else
4293                 $cat >&4 <<EOM
4294 !
4295 Help! I can't compile and run the intsize test program: please enlighten me!
4296 (This is probably a misconfiguration in your system or libraries, and
4297 you really ought to fix it.  Still, I'll try anyway.)
4298 !
4299 EOM
4300                 dflt=4
4301                 rp="What is the size of an integer (in bytes)?"
4302                 . ./myread
4303                 intsize="$ans"
4304                 dflt=$intsize
4305                 rp="What is the size of a long integer (in bytes)?"
4306                 . ./myread
4307                 longsize="$ans"
4308                 dflt=2
4309                 rp="What is the size of a short integer (in bytes)?"
4310                 . ./myread
4311                 shortsize="$ans"
4312         fi
4313         ;;
4314 esac
4315 $rm -f intsize intsize.*
4316
4317 : see what type lseek is declared as in the kernel
4318 rp="What is the type used for lseek's offset on this system?"
4319 set off_t lseektype long stdio.h sys/types.h
4320 eval $typedef_ask
4321
4322 echo " "
4323 echo "Checking to see how big your file offsets are..." >&4
4324 $cat >try.c <<EOCP
4325 #include <sys/types.h>
4326 #include <stdio.h>
4327 int main()
4328 {
4329     printf("%d\n", (int)sizeof($lseektype));
4330     return(0); 
4331 }
4332 EOCP
4333 set try
4334 if eval $compile_ok; then
4335         lseeksize=`./try`
4336         echo "Your file offsets are $lseeksize bytes long."
4337 else
4338         dflt=$longsize
4339         echo " "
4340         echo "(I can't seem to compile the test program.  Guessing...)"
4341         rp="What is the size of your file offsets (in bytes)?"
4342         . ./myread
4343         lseeksize="$ans"
4344 fi
4345 $rm -f try.c try
4346
4347 : see what type file positions are declared as in the library
4348 rp="What is the type for file position used by fsetpos()?"
4349 set fpos_t fpostype long stdio.h sys/types.h
4350 eval $typedef_ask
4351
4352 echo " "
4353 case "$fpostype" in
4354 *_t) zzz="$fpostype"    ;;
4355 *)   zzz="fpos_t"       ;;
4356 esac
4357 echo "Checking the size of $zzz..." >&4 
4358 cat > try.c <<EOCP
4359 #include <sys/types.h>
4360 #include <stdio.h>
4361 int main() {
4362     printf("%d\n", (int)sizeof($fpostype));
4363     exit(0);
4364 }
4365 EOCP
4366 set try
4367 if eval $compile_ok; then
4368         yyy=`./try`
4369         case "$yyy" in
4370         '')     fpossize=4
4371                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4372                 ;;
4373         *)      fpossize=$yyy
4374                 echo "Your $zzz is $fpossize bytes long."
4375                 ;;
4376         esac
4377 else
4378         dflt="$longsize"
4379         echo " " >&4
4380         echo "(I can't compile the test program.  Guessing...)" >&4
4381         rp="What is the size of your file positions (in bytes)?"
4382         . ./myread
4383         fpossize="$ans"
4384 fi
4385
4386
4387
4388 # Backward compatibility (uselfs is deprecated).
4389 case "$uselfs" in
4390 "$define"|true|[yY]*)
4391         cat <<EOM >&4
4392
4393 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4394 EOM
4395         uselargefiles="$define"
4396         ;;
4397 esac                          
4398
4399 case "$lseeksize:$fpossize" in
4400 8:8) cat <<EOM
4401
4402 You can have files larger than 2 gigabytes.
4403 EOM
4404    val="$define" ;;
4405 *)    case "$uselargefiles" in
4406    "$undef"|false|[nN]*) dflt='n' ;;
4407    *)   dflt='y' ;;
4408    esac
4409    cat <<EOM
4410
4411 Perl can be built to understand large files (files larger than 2 gigabytes)
4412 on some systems.  To do so, Configure can be run with -Duselargefiles.
4413
4414 If this doesn't make any sense to you, just accept the default '$dflt'.
4415 EOM
4416    rp='Try to understand large files, if available?'
4417    . ./myread
4418    case "$ans" in
4419    y|Y)         val="$define" ;;
4420    *)           val="$undef"  ;;
4421    esac
4422    ;;
4423 esac
4424 set uselargefiles
4425 eval $setvar
4426 case "$uselargefiles" in
4427 "$define")
4428 : Look for a hint-file generated 'call-back-unit'.  If the
4429 : user has specified that a large files perl is to be built,
4430 : we may need to set or change some other defaults.
4431         if $test -f uselargefiles.cbu; then
4432                 echo "Your platform has some specific hints for large file builds, using them..."
4433                 . ./uselargefiles.cbu
4434                 echo " "
4435                 echo "Rechecking to see how big your file offsets are..." >&4
4436                 $cat >try.c <<EOCP
4437 #include <sys/types.h>
4438 #include <stdio.h>
4439 int main()
4440 {
4441     printf("%d\n", (int)sizeof($lseektype));
4442     return(0); 
4443 }
4444 EOCP
4445                 set try
4446                 if eval $compile_ok; then
4447                         lseeksize=`./try`
4448                         $echo "Your file offsets are now $lseeksize bytes long."
4449                 else
4450                         dflt="$lseeksize"
4451                         echo " "
4452                         echo "(I can't seem to compile the test program.  Guessing...)"
4453                         rp="What is the size of your file offsets (in bytes)?"
4454                         . ./myread
4455                         lseeksize="$ans"
4456                 fi
4457                 case "$fpostype" in
4458                 *_t) zzz="$fpostype"    ;;
4459                 *)   zzz="fpos_t"       ;;
4460                 esac
4461                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4462                 $cat > try.c <<EOCP
4463 #include <sys/types.h>
4464 #include <stdio.h>
4465 int main() {
4466     printf("%d\n", (int)sizeof($fpostype));
4467     exit(0);
4468 }
4469 EOCP
4470                 set try
4471                 if eval $compile_ok; then
4472                         yyy=`./try`
4473                         dflt="$lseeksize"
4474                         case "$yyy" in
4475                         '')     echo " "
4476                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4477                                 ;;
4478                         *)      fpossize=$yyy
4479                                 echo " $fpossize bytes." >&4
4480                                 ;;
4481                         esac
4482                 else
4483                         dflt="$fpossize"
4484                         echo " "
4485                         echo "(I can't compile the test program.  Guessing...)" >&4
4486                         rp="What is the size of your file positions (in bytes)?"
4487                         . ./myread
4488                         fpossize="$ans"
4489                 fi
4490                 $rm -f try.c try
4491         fi
4492         ;;
4493 esac
4494
4495
4496 case "$usemorebits" in
4497 "$define"|true|[yY]*)
4498         use64bitint="$define"
4499         uselongdouble="$define"
4500         usemorebits="$define"
4501         ;;
4502 *)      usemorebits="$undef"
4503         ;;
4504 esac
4505
4506
4507 case "$uselonglong" in
4508 "$define"|true|[yY]*)
4509         cat <<EOM >&4
4510
4511 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4512 EOM
4513         use64bitint="$define"
4514         ;;
4515 esac                          
4516 case "$use64bits" in
4517 "$define"|true|[yY]*)
4518         cat <<EOM >&4
4519
4520 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4521 EOM
4522         use64bitint="$define"
4523         ;;
4524 esac                          
4525 case "$use64bitints" in
4526 "$define"|true|[yY]*)
4527         cat <<EOM >&4
4528
4529 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4530 EOM
4531         use64bitint="$define"
4532         ;;
4533 esac                          
4534 case "$use64bitsint" in
4535 "$define"|true|[yY]*)
4536         cat <<EOM >&4
4537
4538 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4539 EOM
4540         use64bitint="$define"
4541         ;;
4542 esac                          
4543 case "$uselonglongs" in
4544 "$define"|true|[yY]*)
4545         cat <<EOM >&4
4546
4547 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4548 EOM
4549         use64bitint="$define"
4550         ;;
4551 esac                          
4552 case "$use64bitsall" in
4553 "$define"|true|[yY]*)
4554         cat <<EOM >&4
4555
4556 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4557 EOM
4558         use64bitall="$define"
4559         ;;
4560 esac                          
4561
4562 case "$ccflags" in
4563 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4564 esac
4565 case "$use64bitall" in
4566 "$define"|true|[yY]*) use64bitint="$define" ;;
4567 esac
4568
4569 case "$longsize" in
4570 8) cat <<EOM
4571
4572 You have natively 64-bit long integers.
4573 EOM
4574    val="$define"
4575    ;;
4576 *) case "$use64bitint" in
4577    "$define"|true|[yY]*) dflt='y';;
4578    *) dflt='n';;
4579    esac
4580    cat <<EOM
4581
4582 Perl can be built to take advantage of 64-bit integer types
4583 on some systems.  To do so, Configure can be run with -Duse64bitint.
4584 Choosing this option will most probably introduce binary incompatibilities.
4585
4586 If this doesn't make any sense to you, just accept the default '$dflt'.
4587 EOM
4588    rp='Try to use 64-bit integers, if available?'
4589    . ./myread
4590    case "$ans" in
4591    [yY]*) val="$define" ;;
4592    *)     val="$undef"  ;;
4593    esac
4594    ;;
4595 esac
4596 set use64bitint
4597 eval $setvar
4598
4599 case "$use64bitall" in
4600 "$define"|true|[yY]*) dflt='y' ;;
4601 *) case "$longsize" in
4602    8) dflt='y' ;;
4603    *) dflt='n' ;;
4604    esac
4605    ;;
4606 esac    
4607 cat <<EOM
4608
4609 You may also choose to try maximal 64-bitness.  It means using as much
4610 64-bitness as possible on the platform.  This in turn means even more
4611 binary incompatibilities.  On the other hand, your platform may not
4612 have any more 64-bitness available than what you already have chosen.
4613
4614 If this doesn't make any sense to you, just accept the default '$dflt'.
4615 EOM
4616 rp='Try to use maximal 64-bit support, if available?'
4617 . ./myread
4618 case "$ans" in
4619 [yY]*) val="$define" ;;
4620 *)     val="$undef"  ;;
4621 esac
4622 set use64bitall
4623 eval $setvar
4624 case "$use64bitall" in
4625 "$define")
4626         case "$use64bitint" in
4627         "$undef")
4628                 cat <<EOM
4629
4630 Since you have chosen a maximally 64-bit build, I'm also turning on
4631 the use of 64-bit integers.
4632 EOM
4633                 use64bitint="$define" ;;
4634         esac
4635         ;;
4636 esac
4637
4638 case "$use64bitint" in
4639 "$define"|true|[yY]*)
4640 : Look for a hint-file generated 'call-back-unit'.  If the
4641 : user has specified that a 64-bit perl is to be built,
4642 : we may need to set or change some other defaults.
4643         if $test -f use64bitint.cbu; then
4644                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4645                 . ./use64bitint.cbu
4646         fi
4647         case "$longsize" in
4648         4) case "$archname64" in
4649            '') archname64=64int ;;
4650            esac
4651            ;;
4652         esac
4653         ;;
4654 esac
4655
4656 case "$use64bitall" in
4657 "$define"|true|[yY]*)
4658 : Look for a hint-file generated 'call-back-unit'.  If the
4659 : user has specified that a maximally 64-bit perl is to be built,
4660 : we may need to set or change some other defaults.
4661         if $test -f use64bitall.cbu; then
4662                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4663                 . ./use64bitall.cbu
4664         fi
4665         case "$longsize" in
4666         4) case "$archname64" in
4667            ''|64int) archname64=64all ;;
4668            esac
4669            ;;
4670         esac
4671         ;;
4672 esac
4673
4674 : determine the architecture name
4675 echo " "
4676 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4677         tarch=`arch`"-$osname"
4678 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4679         if uname -m > tmparch 2>&1 ; then
4680                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4681                         -e 's/$/'"-$osname/" tmparch`
4682         else
4683                 tarch="$osname"
4684         fi
4685         $rm -f tmparch
4686 else
4687         tarch="$osname"
4688 fi
4689 case "$myarchname" in
4690 ''|"$tarch") ;;
4691 *)
4692         echo "(Your architecture name used to be $myarchname.)"
4693         archname=''
4694         ;;
4695 esac
4696 myarchname="$tarch"
4697 case "$archname" in
4698 '') dflt="$tarch";;
4699 *) dflt="$archname";;
4700 esac
4701 rp='What is your architecture name'
4702 . ./myread
4703 archname="$ans"
4704 case "$usethreads" in
4705 $define)
4706         echo "Threads selected." >&4
4707         case "$archname" in
4708         *-thread*) echo "...and architecture name already has -thread." >&4
4709                 ;;
4710         *)      archname="$archname-thread"
4711                 echo "...setting architecture name to $archname." >&4
4712                 ;;
4713         esac
4714         ;;
4715 esac
4716 case "$usemultiplicity" in
4717 $define)
4718         echo "Multiplicity selected." >&4
4719         case "$archname" in
4720         *-multi*) echo "...and architecture name already has -multi." >&4
4721                 ;;
4722         *)      archname="$archname-multi"
4723                 echo "...setting architecture name to $archname." >&4
4724                 ;;
4725         esac
4726         ;;
4727 esac
4728 case "$use64bitint" in
4729 $define)
4730         case "$archname64" in
4731         '')
4732                 ;;
4733         *)
4734                 case "$archname" in
4735                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4736                         ;;
4737                 *)      archname="$archname-$archname64"
4738                         echo "...setting architecture name to $archname." >&4
4739                         ;;
4740                 esac
4741                 ;;
4742         esac
4743 esac
4744
4745 : determine root of directory hierarchy where package will be installed.
4746 case "$prefix" in
4747 '')
4748         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4749         ;;
4750 *)
4751         dflt="$prefix"
4752         ;;
4753 esac
4754 $cat <<EOM
4755
4756 By default, $package will be installed in $dflt/bin, manual pages
4757 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4758 installation directories. Typically this is something like /usr/local.
4759 If you wish to have binaries under /usr/bin but other parts of the
4760 installation under /usr/local, that's ok: you will be prompted
4761 separately for each of the installation directories, the prefix being
4762 only used to set the defaults.
4763
4764 EOM
4765 fn=d~
4766 rp='Installation prefix to use?'
4767 . ./getfile
4768 oldprefix=''
4769 case "$prefix" in
4770 '') ;;
4771 *)
4772         case "$ans" in
4773         "$prefix") ;;
4774         *) oldprefix="$prefix";;
4775         esac
4776         ;;
4777 esac
4778 prefix="$ans"
4779 prefixexp="$ansexp"
4780
4781 : is AFS running?
4782 echo " "
4783 case "$afs" in
4784 $define|true)   afs=true ;;
4785 $undef|false)   afs=false ;;
4786 *)      if test -d /afs; then
4787                 afs=true
4788         else
4789                 afs=false
4790         fi
4791         ;;
4792 esac
4793 if $afs; then
4794         echo "AFS may be running... I'll be extra cautious then..." >&4
4795 else
4796         echo "AFS does not seem to be running..." >&4
4797 fi
4798
4799 : determine installation prefix for where package is to be installed.
4800 if $afs; then 
4801 $cat <<EOM
4802
4803 Since you are running AFS, I need to distinguish the directory in which
4804 files will reside from the directory in which they are installed (and from
4805 which they are presumably copied to the former directory by occult means).
4806
4807 EOM
4808         case "$installprefix" in
4809         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4810         *) dflt="$installprefix";;
4811         esac
4812 else
4813 $cat <<EOM
4814
4815 In some special cases, particularly when building $package for distribution,
4816 it is convenient to distinguish between the directory in which files should 
4817 be installed from the directory ($prefix) in which they 
4818 will eventually reside.  For most users, these two directories are the same.
4819
4820 EOM
4821         case "$installprefix" in
4822         '') dflt=$prefix ;;
4823         *) dflt=$installprefix;;
4824         esac
4825 fi
4826 fn=d~
4827 rp='What installation prefix should I use for installing files?'
4828 . ./getfile
4829 installprefix="$ans"
4830 installprefixexp="$ansexp"
4831
4832 : set the prefixit variable, to compute a suitable default value
4833 prefixit='case "$3" in
4834 ""|none)
4835         case "$oldprefix" in
4836         "") eval "$1=\"\$$2\"";;
4837         *)
4838                 case "$3" in
4839                 "") eval "$1=";;
4840                 none)
4841                         eval "tp=\"\$$2\"";
4842                         case "$tp" in
4843                         ""|" ") eval "$1=\"\$$2\"";;
4844                         *) eval "$1=";;
4845                         esac;;
4846                 esac;;
4847         esac;;
4848 *)
4849         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4850         case "$tp" in
4851         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4852         /*-$oldprefix/*|\~*-$oldprefix/*)
4853                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4854         *) eval "$1=\"\$$2\"";;
4855         esac;;
4856 esac'
4857
4858
4859 : get the patchlevel
4860 echo " "
4861 echo "Getting the current patchlevel..." >&4
4862 if $test -r $rsrc/patchlevel.h;then
4863         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4864         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4865         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4866         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4867         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4868         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4869 else
4870         revision=0
4871         patchlevel=0
4872         subversion=0
4873         api_revision=0
4874         api_version=0
4875         api_subversion=0
4876 fi
4877 $echo $n "(You have $package revision $revision" $c
4878 $echo $n " patchlevel $patchlevel" $c
4879 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4880 echo ".)"
4881 case "$osname" in
4882 dos|vms)
4883         : XXX Should be a Configure test for double-dots in filenames.
4884         version=`echo $revision $patchlevel $subversion | \
4885                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4886         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4887                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4888         ;;
4889 *)
4890         version=`echo $revision $patchlevel $subversion | \
4891                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4892         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4893                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4894         ;;
4895 esac
4896 : Special case the 5.005_xx maintenance series, which used 5.005
4897 : without any subversion label as a subdirectory in $sitelib
4898 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4899         api_versionstring='5.005'
4900 fi
4901
4902 : determine installation style
4903 : For now, try to deduce it from prefix unless it is already set.
4904 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4905 case "$installstyle" in
4906 '')     case "$prefix" in
4907                 *perl*) dflt='lib';;
4908                 *) dflt='lib/perl5' ;;
4909         esac
4910         ;;
4911 *)      dflt="$installstyle" ;;
4912 esac
4913 : Probably not worth prompting for this since we prompt for all
4914 : the directories individually, and the prompt would be too long and
4915 : confusing anyway.
4916 installstyle=$dflt
4917
4918 : determine where private library files go
4919 : Usual default is /usr/local/lib/perl5/$version.
4920 : Also allow things like /opt/perl/lib/$version, since 
4921 : /opt/perl/lib/perl5... would be redundant.
4922 : The default "style" setting is made in installstyle.U
4923 case "$installstyle" in
4924 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4925 *)       set dflt privlib lib/$version ;;
4926 esac
4927 eval $prefixit
4928 $cat <<EOM
4929
4930 There are some auxiliary files for $package that need to be put into a
4931 private library directory that is accessible by everyone.
4932
4933 EOM
4934 fn=d~+
4935 rp='Pathname where the private library files will reside?'
4936 . ./getfile
4937 privlib="$ans"
4938 privlibexp="$ansexp"
4939 : Change installation prefix, if necessary.
4940 if $test X"$prefix" != X"$installprefix"; then
4941         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4942 else
4943         installprivlib="$privlibexp"
4944 fi
4945
4946 : set the prefixup variable, to restore leading tilda escape
4947 prefixup='case "$prefixexp" in
4948 "$prefix") ;;
4949 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4950 esac'
4951
4952 : determine where public architecture dependent libraries go
4953 set archlib archlib
4954 eval $prefixit
4955 : privlib default is /usr/local/lib/$package/$version
4956 : archlib default is /usr/local/lib/$package/$version/$archname
4957 : privlib may have an optional trailing /share.
4958 tdflt=`echo $privlib | $sed 's,/share$,,'`
4959 tdflt=$tdflt/$archname
4960 case "$archlib" in
4961 '')     dflt=$tdflt
4962         ;;
4963 *)      dflt="$archlib"
4964     ;;
4965 esac
4966 $cat <<EOM
4967
4968 $spackage contains architecture-dependent library files.  If you are
4969 sharing libraries in a heterogeneous environment, you might store
4970 these files in a separate location.  Otherwise, you can just include
4971 them with the rest of the public library files.
4972
4973 EOM
4974 fn=d+~
4975 rp='Where do you want to put the public architecture-dependent libraries?'
4976 . ./getfile
4977 archlib="$ans"
4978 archlibexp="$ansexp"
4979 if $test X"$archlib" = X"$privlib"; then
4980         d_archlib="$undef"
4981 else
4982         d_archlib="$define"
4983 fi
4984 : Change installation prefix, if necessary.
4985 if $test X"$prefix" != X"$installprefix"; then
4986         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4987 else
4988         installarchlib="$archlibexp"
4989 fi
4990
4991
4992 : Binary compatibility with 5.005 is not possible for builds
4993 : with advanced features
4994 case "$usethreads$usemultiplicity" in
4995 *define*)
4996         bincompat5005="$undef"
4997         d_bincompat5005="$undef"
4998         ;;
4999 *)      $cat <<EOM
5000
5001 This version of Perl can be compiled for binary compatibility with 5.005.
5002 If you decide to do so, you will be able to continue using most of the
5003 extensions that were compiled for Perl 5.005.
5004
5005 EOM
5006         case "$bincompat5005$d_bincompat5005" in
5007         *"$undef"*) dflt=n ;;
5008         *) dflt=y ;;
5009         esac
5010         rp='Binary compatibility with Perl 5.005?'
5011         . ./myread
5012         case "$ans" in
5013         y*) val="$define" ;;
5014         *)  val="$undef" ;;
5015         esac
5016         set d_bincompat5005
5017         eval $setvar
5018         case "$d_bincompat5005" in
5019         "$define")
5020                 bincompat5005="$define"
5021                 ;;
5022         *)      bincompat5005="$undef"
5023                 d_bincompat5005="$undef"
5024                 ;;
5025         esac
5026         ;;
5027 esac
5028
5029
5030 : see if setuid scripts can be secure
5031 $cat <<EOM
5032
5033 Some kernels have a bug that prevents setuid #! scripts from being
5034 secure.  Some sites have disabled setuid #! scripts because of this.
5035
5036 First let's decide if your kernel supports secure setuid #! scripts.
5037 (If setuid #! scripts would be secure but have been disabled anyway,
5038 don't say that they are secure if asked.)
5039
5040 EOM
5041
5042 val="$undef"
5043 if $test -d /dev/fd; then
5044         echo "#!$ls" >reflect
5045         chmod +x,u+s reflect
5046         ./reflect >flect 2>&1
5047         if $contains "/dev/fd" flect >/dev/null; then
5048                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5049                 val="$define"
5050         else
5051                 $cat <<EOM
5052 If you are not sure if they are secure, I can check but I'll need a
5053 username and password different from the one you are using right now.
5054 If you don't have such a username or don't want me to test, simply
5055 enter 'none'.
5056
5057 EOM
5058                 rp='Other username to test security of setuid scripts with?'
5059                 dflt='none'
5060                 . ./myread
5061                 case "$ans" in
5062                 n|none)
5063                         case "$d_suidsafe" in
5064                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
5065                                 dflt=n;;
5066                         "$undef")
5067                                 echo "Well, the $hint value is *not* secure." >&4
5068                                 dflt=n;;
5069                         *)      echo "Well, the $hint value *is* secure." >&4
5070                                 dflt=y;;
5071                         esac
5072                         ;;
5073                 *)
5074                         $rm -f reflect flect
5075                         echo "#!$ls" >reflect
5076                         chmod +x,u+s reflect
5077                         echo >flect
5078                         chmod a+w flect
5079                         echo '"su" will (probably) prompt you for '"$ans's password."
5080                         su $ans -c './reflect >flect'
5081                         if $contains "/dev/fd" flect >/dev/null; then
5082                                 echo "Okay, it looks like setuid scripts are secure." >&4
5083                                 dflt=y
5084                         else
5085                                 echo "I don't think setuid scripts are secure." >&4
5086                                 dflt=n
5087                         fi
5088                         ;;
5089                 esac
5090                 rp='Does your kernel have *secure* setuid scripts?'
5091                 . ./myread
5092                 case "$ans" in
5093                 [yY]*)  val="$define";;
5094                 *)      val="$undef";;
5095                 esac
5096         fi
5097 else
5098         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5099         echo "(That's for file descriptors, not floppy disks.)"
5100         val="$undef"
5101 fi
5102 set d_suidsafe
5103 eval $setvar
5104
5105 $rm -f reflect flect
5106
5107 : now see if they want to do setuid emulation
5108 echo " "
5109 val="$undef"
5110 case "$d_suidsafe" in
5111 "$define")
5112         val="$undef"
5113         echo "No need to emulate SUID scripts since they are secure here." >& 4
5114         ;;
5115 *)
5116         $cat <<EOM
5117 Some systems have disabled setuid scripts, especially systems where
5118 setuid scripts cannot be secure.  On systems where setuid scripts have
5119 been disabled, the setuid/setgid bits on scripts are currently
5120 useless.  It is possible for $package to detect those bits and emulate
5121 setuid/setgid in a secure fashion.  This emulation will only work if
5122 setuid scripts have been disabled in your kernel.
5123
5124 EOM
5125         case "$d_dosuid" in
5126         "$define") dflt=y ;;
5127         *) dflt=n ;;
5128         esac
5129         rp="Do you want to do setuid/setgid emulation?"
5130         . ./myread
5131         case "$ans" in
5132         [yY]*)  val="$define";;
5133         *)      val="$undef";;
5134         esac
5135         ;;
5136 esac
5137 set d_dosuid
5138 eval $setvar
5139
5140 : determine filename position in cpp output
5141 echo " "
5142 echo "Computing filename position in cpp output for #include directives..." >&4
5143 echo '#include <stdio.h>' > foo.c
5144 $cat >fieldn <<EOF
5145 $startsh
5146 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5147 $grep '^[       ]*#.*stdio\.h' | \
5148 while read cline; do
5149         pos=1
5150         set \$cline
5151         while $test \$# -gt 0; do
5152                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5153                         echo "\$pos"
5154                         exit 0
5155                 fi
5156                 shift
5157                 pos=\`expr \$pos + 1\`
5158         done
5159 done
5160 EOF
5161 chmod +x fieldn
5162 fieldn=`./fieldn`
5163 $rm -f foo.c fieldn
5164 case $fieldn in
5165 '') pos='???';;
5166 1) pos=first;;
5167 2) pos=second;;
5168 3) pos=third;;
5169 *) pos="${fieldn}th";;
5170 esac
5171 echo "Your cpp writes the filename in the $pos field of the line."
5172
5173 : locate header file
5174 $cat >findhdr <<EOF
5175 $startsh
5176 wanted=\$1
5177 name=''
5178 for usrincdir in $usrinc
5179 do
5180         if test -f \$usrincdir/\$wanted; then
5181                 echo "\$usrincdir/\$wanted"
5182                 exit 0
5183         fi
5184 done
5185 awkprg='{ print \$$fieldn }'
5186 echo "#include <\$wanted>" > foo\$\$.c
5187 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5188 $grep "^[       ]*#.*\$wanted" | \
5189 while read cline; do
5190         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5191         case "\$name" in
5192         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5193         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5194         *) exit 2;;
5195         esac;
5196 done;
5197 #
5198 # status = 0: grep returned 0 lines, case statement not executed
5199 # status = 1: headerfile found
5200 # status = 2: while loop executed, no headerfile found
5201 #
5202 status=\$?
5203 $rm -f foo\$\$.c;
5204 if test \$status -eq 1; then
5205         exit 0;
5206 fi
5207 exit 1
5208 EOF
5209 chmod +x findhdr
5210
5211 : define an alternate in-header-list? function
5212 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5213 cont=true; xxf="echo \"<\$1> found.\" >&4";
5214 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5215 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5216 esac;
5217 case $# in 4) instead=instead;; *) instead="at last";; esac;
5218 while $test "$cont"; do
5219         xxx=`./findhdr $1`
5220         var=$2; eval "was=\$$2";
5221         if $test "$xxx" && $test -r "$xxx";
5222         then eval $xxf;
5223         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5224                 cont="";
5225         else eval $xxnf;
5226         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5227         set $yyy; shift; shift; yyy=$@;
5228         case $# in 0) cont="";;
5229         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5230                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5231         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5232                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5233         esac;
5234 done;
5235 while $test "$yyy";
5236 do set $yyy; var=$2; eval "was=\$$2";
5237         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5238         set $yyy; shift; shift; yyy=$@;
5239 done'
5240
5241 : see if this is a malloc.h system
5242 set malloc.h i_malloc
5243 eval $inhdr
5244
5245 : see if stdlib is available
5246 set stdlib.h i_stdlib
5247 eval $inhdr
5248
5249 : determine which malloc to compile in
5250 echo " "
5251 case "$usemymalloc" in
5252 ''|[yY]*|true|$define)  dflt='y' ;;
5253 *)      dflt='n' ;;
5254 esac
5255 rp="Do you wish to attempt to use the malloc that comes with $package?"
5256 . ./myread
5257 usemymalloc="$ans"
5258 case "$ans" in
5259 y*|true)
5260         usemymalloc='y'
5261         mallocsrc='malloc.c'
5262         mallocobj="malloc$_o"
5263         d_mymalloc="$define"
5264         case "$libs" in
5265         *-lmalloc*)
5266                 : Remove malloc from list of libraries to use
5267                 echo "Removing unneeded -lmalloc from library list" >&4
5268                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5269                 shift
5270                 libs="$*"
5271                 echo "libs = $libs" >&4
5272                 ;;
5273         esac
5274         ;;
5275 *)
5276         usemymalloc='n'
5277         mallocsrc=''
5278         mallocobj=''
5279         d_mymalloc="$undef"
5280         ;;
5281 esac
5282
5283 : compute the return types of malloc and free
5284 echo " "
5285 $cat >malloc.c <<END
5286 #$i_malloc I_MALLOC
5287 #$i_stdlib I_STDLIB
5288 #include <stdio.h>
5289 #include <sys/types.h>
5290 #ifdef I_MALLOC
5291 #include <malloc.h>
5292 #endif
5293 #ifdef I_STDLIB
5294 #include <stdlib.h>
5295 #endif
5296 #ifdef TRY_MALLOC
5297 void *malloc();
5298 #endif
5299 #ifdef TRY_FREE
5300 void free();
5301 #endif
5302 END
5303 case "$malloctype" in
5304 '')
5305         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5306                 malloctype='void *'
5307         else
5308                 malloctype='char *'
5309         fi
5310         ;;
5311 esac
5312 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5313
5314 case "$freetype" in
5315 '')
5316         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5317                 freetype='void'
5318         else
5319                 freetype='int'
5320         fi
5321         ;;
5322 esac
5323 echo "Your system uses $freetype free(), it would seem." >&4
5324 $rm -f malloc.[co]
5325 $cat <<EOM
5326
5327 After $package is installed, you may wish to install various
5328 add-on modules and utilities.  Typically, these add-ons will
5329 be installed under $prefix with the rest
5330 of this package.  However, you may wish to install such add-ons
5331 elsewhere under a different prefix.
5332
5333 If you do not wish to put everything under a single prefix, that's
5334 ok.  You will be prompted for the individual locations; this siteprefix
5335 is only used to suggest the defaults.
5336
5337 The default should be fine for most people.
5338
5339 EOM
5340 fn=d~+
5341 rp='Installation prefix to use for add-on modules and utilities?'
5342 : XXX Here might be another good place for an installstyle setting.
5343 case "$siteprefix" in
5344 '') dflt=$prefix ;;
5345 *)  dflt=$siteprefix ;;
5346 esac
5347 . ./getfile
5348 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5349 oldsiteprefix=''
5350 case "$siteprefix" in
5351 '') ;;
5352 *)      case "$ans" in
5353         "$prefix") ;;
5354         *) oldsiteprefix="$prefix";;
5355         esac
5356         ;;
5357 esac
5358 siteprefix="$ans"
5359 siteprefixexp="$ansexp"
5360
5361 : determine where site specific libraries go.
5362 : Usual default is /usr/local/lib/perl5/site_perl/$version
5363 : The default "style" setting is made in installstyle.U
5364 : XXX No longer works with Prefixit stuff.
5365 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5366 case "$sitelib" in
5367 '') case "$installstyle" in
5368         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5369         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5370         esac
5371         ;;
5372 *)      dflt="$sitelib"
5373         ;;
5374 esac
5375 $cat <<EOM
5376
5377 The installation process will create a directory for
5378 site-specific extensions and modules.  Most users find it convenient
5379 to place all site-specific files in this directory rather than in the
5380 main distribution directory.
5381
5382 EOM
5383 fn=d~+
5384 rp='Pathname for the site-specific library files?'
5385 . ./getfile
5386 sitelib="$ans"
5387 sitelibexp="$ansexp"
5388 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
5389 : Change installation prefix, if necessary.
5390 if $test X"$prefix" != X"$installprefix"; then
5391         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5392 else
5393         installsitelib="$sitelibexp"
5394 fi
5395
5396 : determine where site specific architecture-dependent libraries go.
5397 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
5398 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
5399 : sitelib may have an optional trailing /share.
5400 case "$sitearch" in
5401 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
5402         dflt="$dflt/$archname"
5403         ;;
5404 *)      dflt="$sitearch"
5405         ;;
5406 esac
5407 set sitearch sitearch none
5408 eval $prefixit
5409 $cat <<EOM
5410
5411 The installation process will also create a directory for
5412 architecture-dependent site-specific extensions and modules.
5413
5414 EOM
5415 fn=d~+
5416 rp='Pathname for the site-specific architecture-dependent library files?'
5417 . ./getfile
5418 sitearch="$ans"
5419 sitearchexp="$ansexp"
5420 : Change installation prefix, if necessary.
5421 if $test X"$prefix" != X"$installprefix"; then
5422         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
5423 else
5424         installsitearch="$sitearchexp"
5425 fi
5426
5427 $cat <<EOM
5428
5429 The installation process will also create a directory for
5430 vendor-supplied add-ons.  Vendors who supply perl with their system
5431 may find it convenient to place all vendor-supplied files in this
5432 directory rather than in the main distribution directory.  This will
5433 ease upgrades between binary-compatible maintenance versions of perl.
5434
5435 Of course you may also use these directories in whatever way you see
5436 fit.  For example, you might use them to access modules shared over a
5437 company-wide network.
5438
5439 The default answer should be fine for most people.
5440 This causes further questions about vendor add-ons to be skipped
5441 and no vendor-specific directories will be configured for perl.
5442
5443 EOM
5444 rp='Do you want to configure vendor-specific add-on directories?'
5445 case "$usevendorprefix" in
5446 define|true|[yY]*) dflt=y ;;
5447 *)      : User may have set vendorprefix directly on Configure command line.
5448         case "$vendorprefix" in
5449         ''|' ') dflt=n ;;
5450         *)      dflt=y ;;
5451         esac
5452         ;;
5453 esac
5454 . ./myread
5455 case "$ans" in
5456 [yY]*)  fn=d~+
5457         rp='Installation prefix to use for vendor-supplied add-ons?'
5458         case "$vendorprefix" in
5459         '') dflt='' ;;
5460         *)  dflt=$vendorprefix ;;
5461         esac
5462         . ./getfile
5463         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5464         oldvendorprefix=''
5465         case "$vendorprefix" in
5466         '') ;;
5467         *)      case "$ans" in
5468                 "$prefix") ;;
5469                 *) oldvendorprefix="$prefix";;
5470                 esac
5471                 ;;
5472         esac
5473         usevendorprefix="$define"
5474         vendorprefix="$ans"
5475         vendorprefixexp="$ansexp"
5476         ;;
5477 *)      usevendorprefix="$undef"
5478         vendorprefix=''
5479         vendorprefixexp=''
5480         ;;
5481 esac
5482
5483 case "$vendorprefix" in
5484 '')     d_vendorlib="$undef"
5485         vendorlib=''
5486         vendorlibexp=''
5487         ;;
5488 *)      d_vendorlib="$define"
5489         : determine where vendor-supplied modules go.
5490         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5491         case "$vendorlib" in
5492         '')
5493                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5494                 case "$installstyle" in
5495                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5496                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5497                 esac
5498                 ;;
5499         *)      dflt="$vendorlib"
5500                 ;;
5501         esac
5502         fn=d~+
5503         rp='Pathname for the vendor-supplied library files?'
5504         . ./getfile
5505         vendorlib="$ans"
5506         vendorlibexp="$ansexp"
5507         ;;
5508 esac
5509 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
5510 : Change installation prefix, if necessary.
5511 if $test X"$prefix" != X"$installprefix"; then
5512         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5513 else
5514         installvendorlib="$vendorlibexp"
5515 fi
5516
5517 case "$vendorprefix" in
5518 '')     d_vendorarch="$undef"
5519         vendorarch=''
5520         vendorarchexp=''
5521         ;;
5522 *)      d_vendorarch="$define"
5523         : determine where vendor-supplied architecture-dependent libraries go.
5524         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
5525         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
5526         : vendorlib may have an optional trailing /share.
5527         case "$vendorarch" in
5528         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
5529                 dflt="$dflt/$archname"
5530                 ;;
5531         *)      dflt="$vendorarch" ;;
5532         esac
5533         fn=d~+
5534         rp='Pathname for vendor-supplied architecture-dependent files?'
5535         . ./getfile
5536         vendorarch="$ans"
5537         vendorarchexp="$ansexp"
5538         ;;
5539 esac
5540 : Change installation prefix, if necessary.
5541 if $test X"$prefix" != X"$installprefix"; then
5542         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
5543 else
5544         installvendorarch="$vendorarchexp"
5545 fi
5546
5547 : Final catch-all directories to search
5548 $cat <<EOM
5549
5550 Lastly, you can have perl look in other directories for extensions and
5551 modules in addition to those already specified.
5552 These directories will be searched after 
5553         $sitearch 
5554         $sitelib 
5555 EOM
5556 test X"$vendorlib" != "X" && echo '     ' $vendorlib
5557 test X"$vendorarch" != "X" && echo '    ' $vendorarch
5558 echo ' '
5559 case "$otherlibdirs" in
5560 ''|' ') dflt='none' ;;
5561 *)      dflt="$otherlibdirs" ;;
5562 esac
5563 $cat <<EOM
5564 Enter a colon-separated set of extra paths to include in perl's @INC
5565 search path, or enter 'none' for no extra paths.
5566
5567 EOM
5568
5569 rp='Colon-separated list of additional directories for perl to search?'
5570 . ./myread
5571 case "$ans" in
5572 ' '|''|none)    otherlibdirs=' ' ;;     
5573 *)      otherlibdirs="$ans" ;;
5574 esac
5575 case "$otherlibdirs" in
5576 ' ') val=$undef ;;
5577 *)      val=$define ;;
5578 esac
5579 set d_perl_otherlibdirs
5580 eval $setvar
5581
5582 : Cruising for prototypes
5583 echo " "
5584 echo "Checking out function prototypes..." >&4
5585 $cat >prototype.c <<'EOCP'
5586 int main(int argc, char *argv[]) {
5587         exit(0);}
5588 EOCP
5589 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5590         echo "Your C compiler appears to support function prototypes."
5591         val="$define"
5592 else
5593         echo "Your C compiler doesn't seem to understand function prototypes."
5594         val="$undef"
5595 fi
5596 set prototype
5597 eval $setvar
5598 $rm -f prototype*
5599
5600 case "$prototype" in
5601 "$define") ;;
5602 *)      ansi2knr='ansi2knr'
5603         echo " "
5604         cat <<EOM >&4
5605
5606 $me:  FATAL ERROR:
5607 This version of $package can only be compiled by a compiler that 
5608 understands function prototypes.  Unfortunately, your C compiler 
5609         $cc $ccflags
5610 doesn't seem to understand them.  Sorry about that.
5611
5612 If GNU cc is available for your system, perhaps you could try that instead.  
5613
5614 Eventually, we hope to support building Perl with pre-ANSI compilers.
5615 If you would like to help in that effort, please contact <perlbug@perl.org>.
5616
5617 Aborting Configure now.
5618 EOM
5619         exit 2
5620         ;;
5621 esac
5622
5623 : determine where public executables go
5624 echo " "
5625 set dflt bin bin
5626 eval $prefixit
5627 fn=d~
5628 rp='Pathname where the public executables will reside?'
5629 . ./getfile
5630 if $test "X$ansexp" != "X$binexp"; then
5631         installbin=''
5632 fi
5633 bin="$ans"
5634 binexp="$ansexp"
5635 : Change installation prefix, if necessary.
5636 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5637 if $test X"$prefix" != X"$installprefix"; then
5638         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5639 else
5640         installbin="$binexp"
5641 fi
5642
5643 : Find perl5.005 or later.
5644 echo "Looking for a previously installed perl5.005 or later... "
5645 case "$perl5" in
5646 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
5647                 : Check if this perl is recent and can load a simple module
5648                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5649                         perl5=$tdir/perl
5650                         break;
5651                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5652                         perl5=$tdir/perl
5653                         break;
5654                 fi
5655         done
5656         ;;
5657 *)      perl5="$perl5"
5658         ;;
5659 esac
5660 case "$perl5" in
5661 '')     echo "None found.  That's ok.";;
5662 *)      echo "Using $perl5." ;;
5663 esac
5664
5665 : Determine list of previous versions to include in @INC
5666 $cat > getverlist <<EOPL
5667 #!$perl5 -w
5668 use File::Basename;
5669 \$api_versionstring = "$api_versionstring";
5670 \$version = "$version";
5671 \$stem = "$sitelib_stem";
5672 \$archname = "$archname";
5673 EOPL
5674         $cat >> getverlist <<'EOPL'
5675 # Can't have leading @ because metaconfig interprets it as a command!
5676 ;@inc_version_list=();
5677 # XXX Redo to do opendir/readdir? 
5678 if (-d $stem) {
5679     chdir($stem);
5680     ;@candidates = glob("5.*");
5681 }
5682 else {
5683     ;@candidates = ();
5684 }
5685
5686 # XXX ToDo:  These comparisons must be reworked when two-digit
5687 # subversions come along, so that 5.7.10 compares as greater than
5688 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
5689 # widespread that we can use the built-in version vectors rather
5690 # than reinventing them here.  For 5.6.0, however, we must
5691 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
5692 foreach $d (@candidates) {
5693     if ($d lt $version) {
5694         if ($d ge $api_versionstring) {
5695             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
5696         }
5697         elsif ($d ge "5.005") {
5698             unshift(@inc_version_list, grep { -d } $d);
5699         }
5700     }
5701     else {
5702         # Skip newer version.  I.e. don't look in
5703         # 5.7.0 if we're installing 5.6.1.
5704     }
5705 }
5706
5707 if (@inc_version_list) {
5708     print join(' ', @inc_version_list);
5709 }
5710 else {
5711     # Blank space to preserve value for next Configure run.
5712     print " ";
5713 }
5714 EOPL
5715 chmod +x getverlist
5716 case "$inc_version_list" in
5717 '')     if test -x "$perl5"; then
5718                 dflt=`$perl5 getverlist`
5719         else
5720                 dflt='none'
5721         fi
5722         ;;
5723 $undef) dflt='none' ;;
5724 *)  dflt="$inc_version_list" ;;
5725 esac
5726 case "$dflt" in
5727 ''|' ') dflt=none ;;
5728 esac
5729 $cat <<'EOM'
5730
5731 In order to ease the process of upgrading, this version of perl 
5732 can be configured to use modules built and installed with earlier 
5733 versions of perl that were installed under $prefix.  Specify here
5734 the list of earlier versions that this version of perl should check.
5735 If Configure detected no earlier versions of perl installed under
5736 $prefix, then the list will be empty.  Answer 'none' to tell perl
5737 to not search earlier versions.
5738
5739 The default should almost always be sensible, so if you're not sure,
5740 just accept the default.
5741 EOM
5742
5743 rp='List of earlier versions to include in @INC?'
5744 . ./myread
5745 case "$ans" in
5746 [Nn]one|''|' ') inc_version_list=' ' ;;
5747 *) inc_version_list="$ans" ;;
5748 esac
5749 case "$inc_version_list" in
5750 ''|' ') 
5751         inc_version_list_init='0';;
5752 *)      inc_version_list_init=`echo $inc_version_list |
5753                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5754         ;;
5755 esac
5756 $rm -f getverlist
5757
5758 : determine whether to install perl also as /usr/bin/perl
5759
5760 echo " "
5761 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5762         $cat <<EOM
5763 Many scripts expect perl to be installed as /usr/bin/perl.
5764 I can install the perl you are about to compile also as /usr/bin/perl
5765 (in addition to $installbin/perl).
5766 EOM
5767         case "$installusrbinperl" in
5768         "$undef"|[nN]*) dflt='n';;
5769         *)              dflt='y';;
5770         esac
5771         rp="Do you want to install perl as /usr/bin/perl?"
5772         . ./myread
5773         case "$ans" in
5774         [yY]*)  val="$define";;
5775         *)      val="$undef" ;;
5776         esac
5777 else
5778         val="$undef"
5779 fi
5780 set installusrbinperl
5781 eval $setvar
5782
5783 echo " "
5784 echo "Checking for GNU C Library..." >&4
5785 cat >gnulibc.c <<EOM
5786 #include <stdio.h>
5787 int main()
5788 {
5789 #ifdef __GLIBC__
5790     exit(0);
5791 #else
5792     exit(1);
5793 #endif
5794 }
5795 EOM
5796 set gnulibc
5797 if eval $compile_ok && ./gnulibc; then
5798         val="$define"
5799         echo "You are using the GNU C Library"
5800 else
5801         val="$undef"
5802         echo "You are not using the GNU C Library"
5803 fi
5804 $rm -f gnulibc*
5805 set d_gnulibc
5806 eval $setvar
5807
5808 : see if nm is to be used to determine whether a symbol is defined or not
5809 case "$usenm" in
5810 '')
5811         dflt=''
5812         case "$d_gnulibc" in
5813         "$define")
5814                 echo " "
5815                 echo "nm probably won't work on the GNU C Library." >&4
5816                 dflt=n
5817                 ;;
5818         esac
5819         case "$dflt" in
5820         '') 
5821                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5822                         echo " "
5823                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5824                         echo "'nm' won't be sufficient on this sytem." >&4
5825                         dflt=n
5826                 fi
5827                 ;;
5828         esac
5829         case "$dflt" in
5830         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5831                 if $test $dflt -gt 20; then
5832                         dflt=y
5833                 else
5834                         dflt=n
5835                 fi
5836                 ;;
5837         esac
5838         ;;
5839 *)
5840         case "$usenm" in
5841         true|$define) dflt=y;;
5842         *) dflt=n;;
5843         esac
5844         ;;
5845 esac
5846 $cat <<EOM
5847
5848 I can use $nm to extract the symbols from your C libraries. This
5849 is a time consuming task which may generate huge output on the disk (up
5850 to 3 megabytes) but that should make the symbols extraction faster. The
5851 alternative is to skip the 'nm' extraction part and to compile a small
5852 test program instead to determine whether each symbol is present. If
5853 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5854 this may be the best solution.
5855
5856 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5857
5858 EOM
5859 rp="Shall I use $nm to extract C symbols from the libraries?"
5860 . ./myread
5861 case "$ans" in
5862 [Nn]*) usenm=false;;
5863 *) usenm=true;;
5864 esac
5865
5866 runnm=$usenm
5867 case "$reuseval" in
5868 true) runnm=false;;
5869 esac
5870
5871 : nm options which may be necessary
5872 case "$nm_opt" in
5873 '') if $test -f /mach_boot; then
5874                 nm_opt=''       # Mach
5875         elif $test -d /usr/ccs/lib; then
5876                 nm_opt='-p'     # Solaris (and SunOS?)
5877         elif $test -f /dgux; then
5878                 nm_opt='-p'     # DG-UX
5879         elif $test -f /lib64/rld; then
5880                 nm_opt='-p'     # 64-bit Irix
5881         else
5882                 nm_opt=''
5883         fi;;
5884 esac
5885
5886 : nm options which may be necessary for shared libraries but illegal
5887 : for archive libraries.  Thank you, Linux.
5888 case "$nm_so_opt" in
5889 '')     case "$myuname" in
5890         *linux*)
5891                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5892                         nm_so_opt='--dynamic'
5893                 fi
5894                 ;;
5895         esac
5896         ;;
5897 esac
5898
5899 case "$runnm" in
5900 true)
5901 : get list of predefined functions in a handy place
5902 echo " "
5903 case "$libc" in
5904 '') libc=unknown
5905         case "$libs" in
5906         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5907         esac
5908         ;;
5909 esac
5910 libnames='';
5911 case "$libs" in
5912 '') ;;
5913 *)  for thislib in $libs; do
5914         case "$thislib" in
5915         -lc|-lc_s)
5916                 : Handle C library specially below.
5917                 ;;
5918         -l*)
5919                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5920                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5921                         :
5922                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5923                         :
5924                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5925                         :
5926                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5927                         :
5928                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5929                         :
5930                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5931                         :
5932                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5933                         :
5934                 else
5935                         try=''
5936                 fi
5937                 libnames="$libnames $try"
5938                 ;;
5939         *) libnames="$libnames $thislib" ;;
5940         esac
5941         done
5942         ;;
5943 esac
5944 xxx=normal
5945 case "$libc" in
5946 unknown)
5947         set /lib/libc.$so
5948         for xxx in $libpth; do
5949                 $test -r $1 || set $xxx/libc.$so
5950                 : The messy sed command sorts on library version numbers.
5951                 $test -r $1 || \
5952                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5953                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5954                                 h
5955                                 s/[0-9][0-9]*/0000&/g
5956                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5957                                 G
5958                                 s/\n/ /' | \
5959                          sort | $sed -e 's/^.* //'`
5960                 eval set \$$#
5961         done
5962         $test -r $1 || set /usr/ccs/lib/libc.$so
5963         $test -r $1 || set /lib/libsys_s$_a
5964         ;;
5965 *)
5966         set blurfl
5967         ;;
5968 esac
5969 if $test -r "$1"; then
5970         echo "Your (shared) C library seems to be in $1."
5971         libc="$1"
5972 elif $test -r /lib/libc && $test -r /lib/clib; then
5973         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5974         xxx=apollo
5975         libc='/lib/clib /lib/libc'
5976         if $test -r /lib/syslib; then
5977                 echo "(Your math library is in /lib/syslib.)"
5978                 libc="$libc /lib/syslib"
5979         fi
5980 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5981         echo "Your C library seems to be in $libc, as you said before."
5982 elif $test -r $incpath/usr/lib/libc$_a; then
5983         libc=$incpath/usr/lib/libc$_a;
5984         echo "Your C library seems to be in $libc.  That's fine."
5985 elif $test -r /lib/libc$_a; then
5986         libc=/lib/libc$_a;
5987         echo "Your C library seems to be in $libc.  You're normal."
5988 else
5989         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5990                 :
5991         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5992                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5993         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5994                 :
5995         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5996                 :
5997         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5998                 :
5999         else
6000                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
6001         fi
6002         if $test -r "$tans"; then
6003                 echo "Your C library seems to be in $tans, of all places."
6004                 libc=$tans
6005         else
6006                 libc='blurfl'
6007         fi
6008 fi
6009 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
6010         dflt="$libc"
6011         cat <<EOM
6012
6013 If the guess above is wrong (which it might be if you're using a strange
6014 compiler, or your machine supports multiple models), you can override it here.
6015
6016 EOM
6017 else
6018         dflt=''
6019         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
6020         cat >&4 <<EOM
6021 I can't seem to find your C library.  I've looked in the following places:
6022
6023 EOM
6024         $sed 's/^/      /' libpath
6025         cat <<EOM
6026
6027 None of these seems to contain your C library. I need to get its name...
6028
6029 EOM
6030 fi
6031 fn=f
6032 rp='Where is your C library?'
6033 . ./getfile
6034 libc="$ans"
6035
6036 echo " "
6037 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
6038 set X `cat libnames`
6039 shift
6040 xxx=files
6041 case $# in 1) xxx=file; esac
6042 echo "Extracting names from the following $xxx for later perusal:" >&4
6043 echo " "
6044 $sed 's/^/      /' libnames >&4
6045 echo " "
6046 $echo $n "This may take a while...$c" >&4
6047
6048 for file in $*; do
6049         case $file in
6050         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
6051         *) $nm $nm_opt $file 2>/dev/null;;
6052         esac
6053 done >libc.tmp
6054
6055 $echo $n ".$c"
6056 $grep fprintf libc.tmp > libc.ptf
6057 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
6058 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
6059 xxx='[ADTSIW]'
6060 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
6061         eval $xscan;\
6062         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6063                 eval $xrun
6064 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
6065         eval $xscan;\
6066         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6067                 eval $xrun
6068 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
6069         eval $xscan;\
6070         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6071                 eval $xrun
6072 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
6073         eval $xscan;\
6074         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6075                 eval $xrun
6076 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
6077         eval $xscan;\
6078         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6079                 eval $xrun
6080 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
6081         eval $xscan;\
6082         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6083                 eval $xrun
6084 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
6085                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
6086         eval $xscan;\
6087         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6088                 eval $xrun
6089 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
6090         eval $xscan;\
6091         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6092                 eval $xrun
6093 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
6094         eval $xscan;\
6095         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6096                 eval $xrun
6097 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
6098         eval $xscan;\
6099         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6100                 eval $xrun
6101 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
6102         eval $xscan;\
6103         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6104                 eval $xrun
6105 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
6106         eval $xscan;\
6107         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6108                 eval $xrun
6109 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
6110         eval $xscan;\
6111         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6112                 eval $xrun
6113 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
6114         eval $xscan;\
6115         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6116                 eval $xrun
6117 else
6118         $nm -p $* 2>/dev/null >libc.tmp
6119         $grep fprintf libc.tmp > libc.ptf
6120         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
6121                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
6122         then
6123                 nm_opt='-p'
6124                 eval $xrun
6125         else
6126                 echo " "
6127                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
6128                 com=''
6129                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
6130                         for thisname in $libnames $libc; do
6131                                 $ar t $thisname >>libc.tmp
6132                         done
6133                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
6134                         echo "Ok." >&4
6135                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
6136                         # Repeat libc to extract forwarders to DLL entries too
6137                         for thisname in $libnames $libc; do
6138                                 $ar tv $thisname >>libc.tmp
6139                                 # Revision 50 of EMX has bug in $ar.
6140                                 # it will not extract forwarders to DLL entries
6141                                 # Use emximp which will extract exactly them.
6142                                 emximp -o tmp.imp $thisname \
6143                                     2>/dev/null && \
6144                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
6145                                     < tmp.imp >>libc.tmp
6146                                 $rm tmp.imp
6147                         done
6148                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
6149                         echo "Ok." >&4
6150                 else
6151                         echo "$ar didn't seem to work right." >&4
6152                         echo "Maybe this is a Cray...trying bld instead..." >&4
6153                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
6154                         then
6155                                 for thisname in $libnames; do
6156                                         bld t $libnames | \
6157                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
6158                                         $ar t $thisname >>libc.tmp
6159                                 done
6160                                 echo "Ok." >&4
6161                         else
6162                                 echo "That didn't work either.  Giving up." >&4
6163                                 exit 1
6164                         fi
6165                 fi
6166         fi
6167 fi
6168 nm_extract="$com"
6169 if $test -f /lib/syscalls.exp; then
6170         echo " "
6171         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
6172         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
6173 fi
6174 ;;
6175 esac
6176 $rm -f libnames libpath
6177
6178 : see if dld is available
6179 set dld.h i_dld
6180 eval $inhdr
6181
6182 : is a C symbol defined?
6183 csym='tlook=$1;
6184 case "$3" in
6185 -v) tf=libc.tmp; tc=""; tdc="";;
6186 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
6187 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
6188 esac;
6189 tx=yes;
6190 case "$reuseval-$4" in
6191 true-) ;;
6192 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
6193 esac;
6194 case "$tx" in
6195 yes)
6196         case "$runnm" in
6197         true)
6198                 if $contains $tlook $tf >/dev/null 2>&1;
6199                 then tval=true;
6200                 else tval=false;
6201                 fi;;
6202         *)
6203                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
6204                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
6205                 then tval=true;
6206                 else tval=false;
6207                 fi;
6208                 $rm -f t t.c;;
6209         esac;;
6210 *)
6211         case "$tval" in
6212         $define) tval=true;;
6213         *) tval=false;;
6214         esac;;
6215 esac;
6216 eval "$2=$tval"'
6217
6218 : define an is-in-libc? function
6219 inlibc='echo " "; td=$define; tu=$undef;
6220 sym=$1; var=$2; eval "was=\$$2";
6221 tx=yes;
6222 case "$reuseval$was" in
6223 true) ;;
6224 true*) tx=no;;
6225 esac;
6226 case "$tx" in
6227 yes)
6228         set $sym tres -f;
6229         eval $csym;
6230         case "$tres" in
6231         true)
6232                 echo "$sym() found." >&4;
6233                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
6234         *)
6235                 echo "$sym() NOT found." >&4;
6236                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
6237         esac;;
6238 *)
6239         case "$was" in
6240         $define) echo "$sym() found." >&4;;
6241         *) echo "$sym() NOT found." >&4;;
6242         esac;;
6243 esac'
6244
6245 : see if dlopen exists
6246 xxx_runnm="$runnm"
6247 runnm=false
6248 set dlopen d_dlopen
6249 eval $inlibc
6250 runnm="$xxx_runnm"
6251
6252 : determine which dynamic loading, if any, to compile in
6253 echo " "
6254 dldir="ext/DynaLoader"
6255 case "$usedl" in
6256 $define|y|true)
6257         dflt='y'
6258         usedl="$define"
6259         ;;
6260 $undef|n|false)
6261         dflt='n'
6262         usedl="$undef"
6263         ;;
6264 *) 
6265         dflt='n'
6266         case "$d_dlopen" in
6267             $define) dflt='y' ;;
6268         esac
6269         case "$i_dld" in
6270             $define) dflt='y' ;;
6271         esac
6272         : Does a dl_xxx.xs file exist for this operating system
6273         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6274         ;;
6275 esac
6276 rp="Do you wish to use dynamic loading?"
6277 . ./myread
6278 usedl="$ans"
6279 case "$ans" in
6280 y*) usedl="$define"
6281         case "$dlsrc" in
6282         '')
6283                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6284                         dflt="$dldir/dl_${osname}.xs"
6285                 elif $test "$d_dlopen" = "$define" ; then
6286                         dflt="$dldir/dl_dlopen.xs"
6287                 elif $test "$i_dld" = "$define" ; then
6288                         dflt="$dldir/dl_dld.xs"
6289                 else
6290                         dflt=''
6291                 fi
6292                 ;;
6293         *)      dflt="$dldir/$dlsrc"
6294                 ;;
6295         esac
6296     echo "The following dynamic loading files are available:"
6297         : Can not go over to $dldir because getfile has path hard-coded in.
6298         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6299         rp="Source file to use for dynamic loading"
6300         fn="fne"
6301         gfpth="$src"
6302         . ./getfile
6303         usedl="$define"
6304         : emulate basename
6305         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6306
6307         $cat << EOM
6308
6309 Some systems may require passing special flags to $cc -c to
6310 compile modules that will be used to create a shared library.
6311 To use no flags, say "none".
6312
6313 EOM
6314     case "$cccdlflags" in
6315     '') case "$gccversion" in
6316                 '') case "$osname" in
6317                         hpux)   dflt='+z' ;;
6318                         next)   dflt='none' ;;
6319                         irix*)  dflt='-KPIC' ;;
6320                         svr4*|esix*|solaris) dflt='-KPIC' ;;
6321                         sunos)  dflt='-pic' ;;
6322                         *)      dflt='none' ;;
6323                     esac
6324                         ;;
6325                 *)  case "$osname" in
6326                         svr4*|esix*|solaris) dflt='-fPIC' ;;
6327                         *)      dflt='-fpic' ;;
6328                     esac ;;
6329             esac ;;
6330         ' ') dflt='none' ;;
6331     *)  dflt="$cccdlflags" ;;
6332     esac
6333     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6334     . ./myread
6335     case "$ans" in
6336     none) cccdlflags=' ' ;;
6337     *) cccdlflags="$ans" ;;
6338     esac
6339
6340     cat << EOM
6341
6342 Some systems use ld to create libraries that can be dynamically loaded,
6343 while other systems (such as those using ELF) use $cc.
6344
6345 EOM
6346         case "$ld" in
6347         '')     $cat >try.c <<'EOM'
6348 /* Test for whether ELF binaries are produced */
6349 #include <fcntl.h>
6350 #include <stdlib.h>
6351 int main() {
6352         char b[4];
6353         int i = open("a.out",O_RDONLY);
6354         if(i == -1) 
6355                 exit(1); /* fail */
6356         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6357                 exit(0); /* succeed (yes, it's ELF) */
6358         else
6359                 exit(1); /* fail */
6360 }
6361 EOM
6362                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6363                         cat <<EOM
6364 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6365 EOM
6366                         dflt="$cc"
6367                 else
6368                         echo "I'll use ld to build dynamic libraries."
6369                         dflt='ld'
6370                 fi
6371                 rm -f try.c a.out
6372                 ;;
6373         *)      dflt="$ld"
6374                 ;;
6375         esac
6376
6377     rp="What command should be used to create dynamic libraries?"
6378     . ./myread
6379         ld="$ans"
6380
6381     cat << EOM
6382
6383 Some systems may require passing special flags to $ld to create a
6384 library that can be dynamically loaded.  If your ld flags include
6385 -L/other/path options to locate libraries outside your loader's normal
6386 search path, you may need to specify those -L options here as well.  To
6387 use no flags, say "none".
6388
6389 EOM
6390     case "$lddlflags" in
6391     '') case "$osname" in
6392                         beos) dflt='-nostart' ;;
6393                         hpux) dflt='-b';
6394                               case "$gccversion" in
6395                               '') dflt="$dflt +vnocompatwarnings" ;;
6396                               esac
6397                               ;;        
6398                         linux|irix*)    dflt='-shared' ;;
6399                         next)  dflt='none' ;;
6400                         solaris) dflt='-G' ;;
6401                         sunos) dflt='-assert nodefinitions' ;;
6402                         svr4*|esix*) dflt="-G $ldflags" ;;
6403                 *)     dflt='none' ;;
6404                         esac
6405                         ;;
6406     *) dflt="$lddlflags" ;;
6407     esac
6408
6409         : Try to guess additional flags to pick up local libraries.
6410         : Be careful not to append to a plain 'none'
6411         case "$dflt" in
6412         none) dflt='' ;;
6413         esac
6414         for thisflag in $ldflags; do
6415                 case "$thisflag" in
6416                 -L*)
6417                         case " $dflt " in
6418                         *" $thisflag "*) ;;
6419                         *) dflt="$dflt $thisflag" ;;
6420                         esac
6421                         ;;
6422                 esac
6423         done
6424
6425         case "$dflt" in
6426         ''|' ') dflt='none' ;;
6427         esac
6428
6429     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6430     . ./myread
6431     case "$ans" in
6432     none) lddlflags=' ' ;;
6433     *) lddlflags="$ans" ;;
6434     esac
6435
6436         cat <<EOM
6437
6438 Some systems may require passing special flags to $cc to indicate that
6439 the resulting executable will use dynamic linking.  To use no flags,
6440 say "none".
6441
6442 EOM
6443     case "$ccdlflags" in
6444     '') case "$osname" in
6445                 hpux)   dflt='-Wl,-E' ;;
6446                 linux)  dflt='-rdynamic' ;;
6447                 next)   dflt='none' ;;
6448                 sunos)  dflt='none' ;;
6449                 *)      dflt='none' ;;
6450             esac ;;
6451     ' ')  dflt='none' ;;
6452     *)  dflt="$ccdlflags" ;;
6453     esac
6454     rp="Any special flags to pass to $cc to use dynamic linking?"
6455     . ./myread
6456     case "$ans" in
6457     none) ccdlflags=' ' ;;
6458     *) ccdlflags="$ans" ;;
6459     esac
6460     ;;
6461 *)  usedl="$undef"
6462         ld='ld'
6463     dlsrc='dl_none.xs'
6464     lddlflags=''
6465     ccdlflags=''
6466     ;;
6467 esac
6468
6469 also=''
6470 case "$usedl" in
6471 $undef)
6472         # No dynamic loading being used, so don't bother even to prompt.
6473         useshrplib='false'
6474         ;;
6475 *)      case "$useshrplib" in
6476         '')     case "$osname" in
6477                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6478                         dflt=y
6479                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6480                         ;;
6481                 next*)
6482                         case "$osvers" in
6483                         4*)     dflt=y
6484                                 also='Building a shared libperl is needed for MAB support.'
6485                                 ;;
6486                         *)      dflt=n
6487                                 ;;
6488                         esac
6489                         ;;
6490                 *)      dflt=n
6491                         ;;
6492                 esac
6493                 ;;
6494         $define|true|[Yy]*)
6495                 dflt=y
6496                 ;;
6497         *)      dflt=n
6498                 ;;
6499         esac
6500         $cat << EOM
6501
6502 The perl executable is normally obtained by linking perlmain.c with
6503 libperl${_a}, any static extensions (usually just DynaLoader), and
6504 any other libraries needed on this system (such as -lm, etc.).  Since
6505 your system supports dynamic loading, it is probably possible to build
6506 a shared libperl.$so.  If you will have more than one executable linked
6507 to libperl.$so, this will significantly reduce the size of each
6508 executable, but it may have a noticeable affect on performance.  The
6509 default is probably sensible for your system.
6510 $also
6511
6512 EOM
6513         rp="Build a shared libperl.$so (y/n)"
6514         . ./myread
6515         case "$ans" in
6516         true|$define|[Yy]*)
6517                 useshrplib='true'  ;;
6518         *)      useshrplib='false' ;;
6519         esac
6520         ;;
6521 esac
6522
6523 case "$useshrplib" in
6524 true)
6525         case "$libperl" in
6526         '')
6527                 # Figure out a good name for libperl.so.  Since it gets stored in
6528                 # a version-specific architecture-dependent library, the version
6529                 # number isn't really that important, except for making cc/ld happy.
6530                 #
6531                 # A name such as libperl.so.3.1
6532                 majmin="libperl.$so.$patchlevel.$subversion"
6533                 # A name such as libperl.so.301
6534                 majonly=`echo $patchlevel $subversion |
6535                         $awk '{printf "%d%02d", $1, $2}'`
6536                 majonly=libperl.$so.$majonly
6537                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6538                 # rely on figuring it out from the naming of libc.
6539                 case "${osname}${osvers}" in
6540                 next4*)
6541                         dflt=libperl.5.$so
6542                         # XXX How handle the --version stuff for MAB?
6543                         ;;
6544                 linux*)  # ld won't link with a bare -lperl otherwise.
6545                         dflt=libperl.$so
6546                         ;;
6547                 cygwin*) # include version
6548                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6549                         ;;
6550                 *)      # Try to guess based on whether libc has major.minor.
6551                         case "$libc" in
6552                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6553                         *libc.$so.[0-9]*) dflt=$majonly ;;
6554                         *)      dflt=libperl.$so ;;
6555                         esac
6556                         ;;
6557                 esac
6558                 ;;
6559         *)      dflt=$libperl
6560                 ;;
6561         esac
6562         cat << EOM
6563
6564 I need to select a good name for the shared libperl.  If your system uses
6565 library names with major and minor numbers, then you might want something
6566 like $majmin.  Alternatively, if your system uses a single version
6567 number for shared libraries, then you might want to use $majonly.
6568 Or, your system might be quite happy with a simple libperl.$so.
6569
6570 Since the shared libperl will get installed into a version-specific
6571 architecture-dependent directory, the version number of the shared perl
6572 library probably isn't important, so the default should be o.k.
6573
6574 EOM
6575         rp='What name do you want to give to the shared libperl?'
6576         . ./myread
6577         libperl=$ans
6578         echo "Ok, I'll use $libperl"
6579         ;;
6580 *)
6581         libperl="libperl${_a}"
6582         ;;
6583 esac
6584
6585 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6586 case "$shrpdir" in
6587 '') ;;
6588 *)      $cat >&4 <<EOM
6589 WARNING:  Use of the shrpdir variable for the installation location of
6590 the shared $libperl is not supported.  It was never documented and
6591 will not work in this version.  Let me (perlbug@perl.com)
6592 know of any problems this may cause.
6593
6594 EOM
6595         case "$shrpdir" in
6596         "$archlibexp/CORE")
6597                 $cat >&4 <<EOM
6598 But your current setting of $shrpdir is
6599 the default anyway, so it's harmless.
6600 EOM
6601                 ;;
6602         *)
6603                 $cat >&4 <<EOM
6604 Further, your current attempted setting of $shrpdir
6605 conflicts with the value of $archlibexp/CORE
6606 that installperl will use.
6607 EOM
6608                 ;;
6609         esac
6610         ;;
6611 esac
6612
6613 # How will the perl executable find the installed shared $libperl?
6614 # Add $xxx to ccdlflags.
6615 # If we can't figure out a command-line option, use $shrpenv to
6616 # set env LD_RUN_PATH.  The main perl makefile uses this.
6617 shrpdir=$archlibexp/CORE
6618 xxx=''
6619 tmp_shrpenv=''
6620 if "$useshrplib"; then
6621     case "$osname" in 
6622         aix)
6623                 # We'll set it in Makefile.SH...
6624                 ;;
6625         solaris|netbsd)
6626                 xxx="-R $shrpdir"
6627                 ;;
6628         freebsd)
6629                 xxx="-Wl,-R$shrpdir"
6630                 ;;
6631         linux|irix*|dec_osf)
6632                 xxx="-Wl,-rpath,$shrpdir"
6633                 ;;
6634         next)
6635                 # next doesn't like the default...
6636                 ;;
6637         beos)
6638                 # beos doesn't like the default, either.
6639                 ;;
6640         hpux*)
6641                 # hpux doesn't like the default, either.
6642                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6643                 ;;
6644         *)
6645                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6646                 ;;
6647         esac
6648         case "$xxx" in
6649         '') ;;
6650         *)      
6651                 # Only add $xxx if it isn't already in ccdlflags.
6652                 case " $ccdlflags " in
6653                 *" $xxx "*)     ;;
6654                 *)      ccdlflags="$ccdlflags $xxx"
6655                         cat <<EOM >&4
6656
6657 Adding $xxx to the flags
6658 passed to $ld so that the perl executable will find the 
6659 installed shared $libperl.
6660
6661 EOM
6662                         ;;
6663                 esac
6664                 ;;
6665         esac
6666 fi
6667 # Fix ccdlflags in AIX for building external extensions.
6668 # (For building Perl itself bare -bE:perl.exp is needed,
6669 #  Makefile.SH takes care of this.)
6670 case "$osname" in
6671 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6672 esac
6673 # Respect a hint or command-line value.
6674 case "$shrpenv" in
6675 '') shrpenv="$tmp_shrpenv" ;;
6676 esac
6677 case "$ldlibpthname" in
6678 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6679 none)   ldlibpthname='' ;;
6680 esac
6681
6682 : determine where manual pages go
6683 set man1dir man1dir none
6684 eval $prefixit
6685 $cat <<EOM
6686
6687 $spackage has manual pages available in source form.
6688 EOM
6689 case "$nroff" in
6690 nroff)
6691         echo "However, you don't have nroff, so they're probably useless to you."
6692         case "$man1dir" in
6693         '') man1dir="none";;
6694         esac;;
6695 esac
6696 echo "If you don't want the manual sources installed, answer 'none'."
6697 case "$man1dir" in
6698 ' ') dflt=none
6699         ;;
6700 '')
6701         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6702         lookpath="$lookpath $prefixexp/man/p_man/man1"
6703         lookpath="$lookpath $prefixexp/man/u_man/man1"
6704         lookpath="$lookpath $prefixexp/man/man.1"
6705         case "$sysman" in
6706         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6707         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6708         esac
6709         set dflt
6710         eval $prefixup
6711         ;;
6712 *)  dflt="$man1dir"
6713         ;;
6714 esac
6715 echo " "
6716 fn=dn+~
6717 rp="Where do the main $spackage manual pages (source) go?"
6718 . ./getfile
6719 if $test "X$man1direxp" != "X$ansexp"; then
6720         installman1dir=''
6721 fi
6722 man1dir="$ans"
6723 man1direxp="$ansexp"
6724 case "$man1dir" in
6725 '')     man1dir=' '
6726         installman1dir='';;
6727 esac
6728
6729 : Change installation prefix, if necessary.
6730 if $test X"$prefix" != X"$installprefix"; then
6731         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6732 else
6733         installman1dir="$man1direxp"
6734 fi
6735
6736 : What suffix to use on installed man pages
6737
6738 case "$man1dir" in
6739 ' ')
6740         man1ext='0'
6741         ;;
6742 *)
6743         rp="What suffix should be used for the main $spackage man pages?"
6744         case "$man1ext" in
6745         '')     case "$man1dir" in
6746                 *1)  dflt=1 ;;
6747                 *1p) dflt=1p ;;
6748                 *1pm) dflt=1pm ;;
6749                 *l) dflt=l;;
6750                 *n) dflt=n;;
6751                 *o) dflt=o;;
6752                 *p) dflt=p;;
6753                 *C) dflt=C;;
6754                 *L) dflt=L;;
6755                 *L1) dflt=L1;;
6756                 *) dflt=1;;
6757                 esac
6758                 ;;
6759         *)      dflt="$man1ext";;
6760         esac
6761         . ./myread
6762         man1ext="$ans"
6763         ;;
6764 esac
6765
6766 : see if we can have long filenames
6767 echo " "
6768 first=123456789abcdef
6769 $rm -f $first
6770 if (echo hi >$first) 2>/dev/null; then
6771         if $test -f 123456789abcde; then
6772                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6773                 val="$undef"
6774         else
6775                 echo 'You can have filenames longer than 14 characters.'>&4
6776                 val="$define"
6777         fi
6778 else
6779         $cat <<'EOM'
6780 You can't have filenames longer than 14 chars.
6781 You can't even think about them!
6782 EOM
6783         val="$undef"
6784 fi 
6785 set d_flexfnam
6786 eval $setvar
6787 $rm -rf 123456789abcde*
6788
6789 : determine where library module manual pages go
6790 set man3dir man3dir none
6791 eval $prefixit
6792 $cat <<EOM
6793
6794 $spackage has manual pages for many of the library modules.
6795 EOM
6796
6797 case "$nroff" in
6798 nroff)
6799         $cat <<'EOM'
6800 However, you don't have nroff, so they're probably useless to you.
6801 EOM
6802         case "$man3dir" in
6803         '') man3dir="none";;
6804         esac;;
6805 esac
6806
6807 case "$d_flexfnam" in
6808 undef)
6809         $cat <<'EOM'
6810 However, your system can't handle the long file names like File::Basename.3. 
6811 EOM
6812         case "$man3dir" in
6813         '') man3dir="none";;
6814         esac;;
6815 esac
6816
6817 echo "If you don't want the manual sources installed, answer 'none'."
6818 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6819 case "$man3dir" in
6820 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6821         if $test -d "$privlib/man/man3"; then
6822                 cat <<EOM >&4
6823
6824 WARNING:  Previous versions of perl installed man3 pages into
6825 $privlib/man/man3.  This version will suggest a 
6826 new default of $dflt.  
6827 EOM
6828                 tdflt=$dflt
6829                 dflt='n'
6830                 rp='Do you wish to preserve the old behavior?(y/n)'
6831                 . ./myread
6832                 case "$ans" in
6833                 y*) dflt="$privlib/man/man3" ;;
6834                 *)  dflt=$tdflt ;;
6835                 esac
6836     fi
6837         ;;
6838 *)      dflt="$man3dir" ;;
6839 esac
6840 case "$dflt" in
6841 ' ') dflt=none ;;
6842 esac
6843 echo " "
6844 fn=dn+~
6845 rp="Where do the $package library man pages (source) go?"
6846 . ./getfile
6847 man3dir="$ans"
6848 man3direxp="$ansexp"
6849 case "$man3dir" in
6850 '')     man3dir=' '
6851         installman3dir='';;
6852 esac
6853
6854 : Change installation prefix, if necessary.
6855 if $test X"$prefix" != X"$installprefix"; then
6856         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6857 else
6858         installman3dir="$man3direxp"
6859 fi
6860
6861 : What suffix to use on installed man pages
6862 case "$man3dir" in
6863 ' ')
6864         man3ext='0'
6865         ;;
6866 *)
6867         rp="What suffix should be used for the $package library man pages?"
6868         case "$man3ext" in
6869         '')     case "$man3dir" in
6870                 *3)  dflt=3 ;;
6871                 *3p) dflt=3p ;;
6872                 *3pm) dflt=3pm ;;
6873                 *l) dflt=l;;
6874                 *n) dflt=n;;
6875                 *o) dflt=o;;
6876                 *p) dflt=p;;
6877                 *C) dflt=C;;
6878                 *L) dflt=L;;
6879                 *L3) dflt=L3;;
6880                 *) dflt=3;;
6881                 esac
6882                 ;;
6883         *)      dflt="$man3ext";;
6884         esac
6885         . ./myread
6886         man3ext="$ans"
6887         ;;
6888 esac
6889
6890 : see if we have to deal with yellow pages, now NIS.
6891 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6892         if $test -f /usr/etc/nibindd; then
6893                 echo " "
6894                 echo "I'm fairly confident you're on a NeXT."
6895                 echo " "
6896                 rp='Do you get the hosts file via NetInfo?'
6897                 dflt=y
6898                 case "$hostcat" in
6899                 nidump*) ;;
6900                 '') ;;
6901                 *) dflt=n;;
6902                 esac
6903                 . ./myread
6904                 case "$ans" in
6905                 y*) hostcat='nidump hosts .';;
6906                 *)      case "$hostcat" in
6907                         nidump*) hostcat='';;
6908                         esac
6909                         ;;
6910                 esac
6911         fi
6912         case "$hostcat" in
6913         nidump*) ;;
6914         *)
6915                 case "$hostcat" in
6916                 *ypcat*) dflt=y;;
6917                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6918                                 dflt=y
6919                         else
6920                                 dflt=n
6921                         fi;;
6922                 *) dflt=n;;
6923                 esac
6924                 echo " "
6925                 rp='Are you getting the hosts file via yellow pages?'
6926                 . ./myread
6927                 case "$ans" in
6928                 y*) hostcat='ypcat hosts';;
6929                 *) hostcat='cat /etc/hosts';;
6930                 esac
6931                 ;;
6932         esac
6933 fi
6934 case "$hostcat" in
6935 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6936 esac
6937 case "$groupcat" in
6938 '') test -f /etc/group && groupcat='cat /etc/group';;
6939 esac
6940 case "$passcat" in
6941 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6942 esac
6943
6944 : now get the host name
6945 echo " "
6946 echo "Figuring out host name..." >&4
6947 case "$myhostname" in
6948 '') cont=true
6949         echo 'Maybe "hostname" will work...'
6950         if tans=`sh -c hostname 2>&1` ; then
6951                 myhostname=$tans
6952                 phostname=hostname
6953                 cont=''
6954         fi
6955         ;;
6956 *) cont='';;
6957 esac
6958 if $test "$cont"; then
6959         if ./xenix; then
6960                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
6961                 if tans=`cat /etc/systemid 2>&1` ; then
6962                         myhostname=$tans
6963                         phostname='cat /etc/systemid'
6964                         echo "Whadyaknow.  Xenix always was a bit strange..."
6965                         cont=''
6966                 fi
6967         elif $test -r /etc/systemid; then
6968                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6969         fi
6970 fi
6971 if $test "$cont"; then
6972         echo 'No, maybe "uuname -l" will work...'
6973         if tans=`sh -c 'uuname -l' 2>&1` ; then
6974                 myhostname=$tans
6975                 phostname='uuname -l'
6976         else
6977                 echo 'Strange.  Maybe "uname -n" will work...'
6978                 if tans=`sh -c 'uname -n' 2>&1` ; then
6979                         myhostname=$tans
6980                         phostname='uname -n'
6981                 else
6982                         echo 'Oh well, maybe I can mine it out of whoami.h...'
6983                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6984                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6985                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6986                         else
6987                                 case "$myhostname" in
6988                                 '') echo "Does this machine have an identity crisis or something?"
6989                                         phostname='';;
6990                                 *)
6991                                         echo "Well, you said $myhostname before..."
6992                                         phostname='echo $myhostname';;
6993                                 esac
6994                         fi
6995                 fi
6996         fi
6997 fi
6998 : you do not want to know about this
6999 set $myhostname
7000 myhostname=$1
7001
7002 : verify guess
7003 if $test "$myhostname" ; then
7004         dflt=y
7005         rp='Your host name appears to be "'$myhostname'".'" Right?"
7006         . ./myread
7007         case "$ans" in
7008         y*) ;;
7009         *) myhostname='';;
7010         esac
7011 fi
7012
7013 : bad guess or no guess
7014 while $test "X$myhostname" = X ; do
7015         dflt=''
7016         rp="Please type the (one word) name of your host:"
7017         . ./myread
7018         myhostname="$ans"
7019 done
7020
7021 : translate upper to lower if necessary
7022 case "$myhostname" in
7023 *[A-Z]*)
7024         echo "(Normalizing case in your host name)"
7025         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7026         ;;
7027 esac
7028
7029 case "$myhostname" in
7030 *.*)
7031         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7032         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7033         echo "(Trimming domain name from host name--host name is now $myhostname)"
7034         ;;
7035 *) case "$mydomain" in
7036         '')
7037                 {
7038                         test "X$hostcat" = "Xypcat hosts" &&
7039                         ypmatch "$myhostname" hosts 2>/dev/null |\
7040                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7041                         $test -s hosts
7042                 } || {
7043                         test "X$hostcat" != "X" &&
7044                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7045                                         /[       ]$myhostname[  . ]/p" > hosts
7046                 }
7047                 tmp_re="[       . ]"
7048                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7049                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7050                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7051                         hosts | $sort | $uniq | \
7052                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7053                 case `$echo X$dflt` in
7054                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
7055                         dflt=.
7056                         ;;
7057                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
7058                         ;;
7059                 esac
7060                 case "$dflt" in
7061                 .)
7062                         tans=`./loc resolv.conf X /etc /usr/etc`
7063                         if $test -f "$tans"; then
7064                                 echo "(Attempting domain name extraction from $tans)"
7065                                 dflt=.`$sed -n -e 's/   / /g' \
7066                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7067                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7068                                 case "$dflt" in
7069                                 .) dflt=.`$sed -n -e 's/        / /g' \
7070                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7071                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7072                                         ;;
7073                                 esac
7074                         fi
7075                         ;;
7076                 esac
7077                 case "$dflt" in
7078                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7079                         dflt=.`sh -c domainname 2>/dev/null`
7080                         case "$dflt" in
7081                         '') dflt='.';;
7082                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7083                         esac
7084                         ;;
7085                 esac
7086                 case "$dflt" in
7087                 .) echo "(Lost all hope -- silly guess then)"
7088                         dflt='.uucp'
7089                         ;;
7090                 esac
7091                 $rm -f hosts
7092                 ;;
7093         *) dflt="$mydomain";;
7094         esac;;
7095 esac
7096 echo " "
7097 rp="What is your domain name?"
7098 . ./myread
7099 tans="$ans"
7100 case "$ans" in
7101 '') ;;
7102 .*) ;;
7103 *) tans=".$tans";;
7104 esac
7105 mydomain="$tans"
7106
7107 : translate upper to lower if necessary
7108 case "$mydomain" in
7109 *[A-Z]*)
7110         echo "(Normalizing case in your domain name)"
7111         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7112         ;;
7113 esac
7114
7115 : a little sanity check here
7116 case "$phostname" in
7117 '') ;;
7118 *)
7119         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7120         $myhostname$mydomain|$myhostname) ;;
7121         *)
7122                 case "$phostname" in
7123                 sed*)
7124                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7125                         ;;
7126                 *)
7127                         echo "(That doesn't agree with your $phostname command, by the way.)"
7128                         ;;
7129                 esac
7130         ;;
7131         esac
7132         ;;
7133 esac
7134
7135 $cat <<EOM
7136
7137 I need to get your e-mail address in Internet format if possible, i.e.
7138 something like user@host.domain. Please answer accurately since I have
7139 no easy means to double check it. The default value provided below
7140 is most probably close to reality but may not be valid from outside
7141 your organization...
7142
7143 EOM
7144 cont=x
7145 while test "$cont"; do
7146         case "$cf_email" in
7147         '') dflt="$cf_by@$myhostname$mydomain";;
7148         *) dflt="$cf_email";;
7149         esac
7150         rp='What is your e-mail address?'
7151         . ./myread
7152         cf_email="$ans"
7153         case "$cf_email" in
7154         *@*.*) cont='' ;;
7155         *)
7156                 rp='Address does not look like an Internet one.  Use it anyway?'
7157                 case "$fastread" in
7158                 yes) dflt=y ;;
7159                 *) dflt=n ;;
7160                 esac
7161                 . ./myread
7162                 case "$ans" in
7163                 y*) cont='' ;;
7164                 *) echo " " ;;
7165                 esac
7166                 ;;
7167         esac
7168 done
7169
7170 $cat <<EOM
7171
7172 If you or somebody else will be maintaining perl at your site, please
7173 fill in the correct e-mail address here so that they may be contacted
7174 if necessary. Currently, the "perlbug" program included with perl
7175 will send mail to this address in addition to perlbug@perl.com. You may
7176 enter "none" for no administrator.
7177
7178 EOM
7179 case "$perladmin" in
7180 '') dflt="$cf_email";;
7181 *) dflt="$perladmin";;
7182 esac
7183 rp='Perl administrator e-mail address'
7184 . ./myread
7185 perladmin="$ans"
7186
7187 : figure out how to guarantee perl startup
7188 case "$startperl" in
7189 '')
7190         case "$sharpbang" in
7191         *!)
7192                 $cat <<EOH
7193
7194 I can use the #! construct to start perl on your system. This will
7195 make startup of perl scripts faster, but may cause problems if you
7196 want to share those scripts and perl is not in a standard place
7197 ($binexp/perl) on all your platforms. The alternative is to force
7198 a shell by starting the script with a single ':' character.
7199
7200 EOH
7201                 dflt="$binexp/perl"
7202                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7203                 . ./myread
7204                 case "$ans" in
7205                 none)   startperl=": # use perl";;
7206                 *)      startperl="#!$ans"
7207                         if $test 30 -lt `echo "$ans" | wc -c`; then
7208                                 $cat >&4 <<EOM
7209
7210 WARNING:  Some systems limit the #! command to 32 characters.
7211 If you experience difficulty running Perl scripts with #!, try
7212 installing Perl in a directory with a shorter pathname.
7213
7214 EOM
7215                         fi ;;
7216                 esac
7217                 ;;
7218         *) startperl=": # use perl"
7219                 ;;
7220         esac
7221         ;;
7222 esac
7223 echo "I'll use $startperl to start perl scripts."
7224
7225 : figure best path for perl in scripts
7226 case "$perlpath" in
7227 '')
7228         perlpath="$binexp/perl"
7229         case "$startperl" in
7230         *!*) ;;
7231         *)
7232                 $cat <<EOH
7233
7234 I will use the "eval 'exec'" idiom to start Perl on your system.
7235 I can use the full path of your Perl binary for this purpose, but
7236 doing so may cause problems if you want to share those scripts and
7237 Perl is not always in a standard place ($binexp/perl).
7238
7239 EOH
7240                 dflt="$binexp/perl"
7241                 rp="What path shall I use in \"eval 'exec'\"?"
7242                 . ./myread
7243                 perlpath="$ans"
7244                 ;;
7245         esac
7246         ;;
7247 esac
7248 case "$startperl" in
7249 *!*)    ;;
7250 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7251 esac
7252
7253 : determine where public executable scripts go
7254 set scriptdir scriptdir
7255 eval $prefixit
7256 case "$scriptdir" in
7257 '')
7258         dflt="$bin"
7259         : guess some guesses
7260         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7261         $test -d /usr/share/bin     && dflt=/usr/share/bin
7262         $test -d /usr/local/script  && dflt=/usr/local/script
7263         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7264         $test -d $prefixexp/script  && dflt=$prefixexp/script
7265         set dflt
7266         eval $prefixup
7267         ;;
7268 *)  dflt="$scriptdir"
7269         ;;
7270 esac
7271 $cat <<EOM
7272  
7273 Some installations have a separate directory just for executable scripts so
7274 that they can mount it across multiple architectures but keep the scripts in
7275 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7276 Or you might just lump your scripts in with all your other executables.
7277  
7278 EOM
7279 fn=d~
7280 rp='Where do you keep publicly executable scripts?'
7281 . ./getfile
7282 if $test "X$ansexp" != "X$scriptdirexp"; then
7283         installscript=''
7284 fi
7285 scriptdir="$ans"
7286 scriptdirexp="$ansexp"
7287 : Change installation prefix, if necessary.
7288 if $test X"$prefix" != X"$installprefix"; then
7289         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7290 else
7291         installscript="$scriptdirexp"
7292 fi
7293
7294 : determine where add-on public executables go
7295 case "$sitebin" in
7296 '')     dflt=$siteprefix/bin ;;
7297 *)      dflt=$sitebin ;;
7298 esac
7299 fn=d~
7300 rp='Pathname where the add-on public executables should be installed?'
7301 . ./getfile
7302 sitebin="$ans"
7303 sitebinexp="$ansexp"
7304 : Change installation prefix, if necessary.
7305 if $test X"$prefix" != X"$installprefix"; then
7306         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7307 else
7308         installsitebin="$sitebinexp"
7309 fi
7310
7311 : see if sqrtl exists
7312 set sqrtl d_sqrtl
7313 eval $inlibc
7314
7315 case "$ccflags" in
7316 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7317 esac
7318
7319 case "$uselongdouble" in
7320 $define|true|[yY]*)     dflt='y';;
7321 *) dflt='n';;
7322 esac
7323 cat <<EOM
7324
7325 Perl can be built to take advantage of long doubles which
7326 (if available) may give more accuracy and range for floating point numbers.
7327
7328 If this doesn't make any sense to you, just accept the default '$dflt'.
7329 EOM
7330 rp='Try to use long doubles if available?'
7331 . ./myread
7332 case "$ans" in
7333 y|Y)    val="$define"   ;;
7334 *)      val="$undef"    ;;
7335 esac
7336 set uselongdouble
7337 eval $setvar
7338
7339 case "$uselongdouble" in
7340 true|[yY]*) uselongdouble="$define" ;;
7341 esac
7342
7343 case "$uselongdouble" in
7344 $define)
7345 : Look for a hint-file generated 'call-back-unit'.  If the
7346 : user has specified that long doubles should be used,
7347 : we may need to set or change some other defaults.
7348         if $test -f uselongdouble.cbu; then
7349                 echo "Your platform has some specific hints for long doubles, using them..."
7350                 . ./uselongdouble.cbu
7351         else
7352                 $cat <<EOM
7353 (Your platform doesn't have any specific hints for long doubles.)
7354 EOM
7355         fi
7356         ;;
7357 esac
7358
7359 case "$uselongdouble:$d_sqrtl" in
7360 $define:$undef)
7361                 $cat <<EOM >&4
7362
7363 *** You requested the use of long doubles but you do not seem to have
7364 *** the mathematic functions for long doubles.  I'm disabling the use
7365 *** of long doubles.
7366
7367 EOM
7368         uselongdouble=$undef
7369         ;;
7370 esac
7371
7372 case "$useperlio" in
7373 $define|true|[yY]*)     dflt='y';;
7374 *) dflt='n';;
7375 esac
7376 cat <<EOM
7377
7378 Previous version of $package used the standard IO mechanisms as defined
7379 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7380 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7381 the default.  This abstraction layer can use AT&T's sfio (if you already
7382 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7383 problems with some extension modules.  Using PerlIO with stdio is safe,
7384 but it is slower than plain stdio and therefore is not the default.
7385
7386 If this doesn't make any sense to you, just accept the default '$dflt'.
7387 EOM
7388 rp='Use the experimental PerlIO abstraction layer?'
7389 . ./myread
7390 case "$ans" in
7391 y|Y) 
7392         val="$define"
7393         ;;     
7394 *)      
7395         echo "Ok, doing things the stdio way"
7396         val="$undef"
7397         ;;
7398 esac
7399 set useperlio
7400 eval $setvar 
7401
7402 case "$vendorprefix" in
7403 '')     d_vendorbin="$undef"
7404         vendorbin=''
7405         vendorbinexp=''
7406         ;;
7407 *)      d_vendorbin="$define"
7408         : determine where vendor-supplied executables go.
7409         case "$vendorbin" in
7410         '') dflt=$vendorprefix/bin ;;
7411         *)      dflt="$vendorbin" ;;
7412         esac
7413         fn=d~+
7414         rp='Pathname for the vendor-supplied executables directory?'
7415         . ./getfile
7416         vendorbin="$ans"
7417         vendorbinexp="$ansexp"
7418         ;;
7419 esac
7420 : Change installation prefix, if necessary.
7421 if $test X"$prefix" != X"$installprefix"; then
7422         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7423 else
7424         installvendorbin="$vendorbinexp"
7425 fi
7426
7427 : see if qgcvt exists
7428 set qgcvt d_qgcvt
7429 eval $inlibc
7430
7431 : check for length of double
7432 echo " "
7433 case "$doublesize" in
7434 '')
7435         echo "Checking to see how big your double precision numbers are..." >&4
7436         $cat >try.c <<'EOCP'
7437 #include <stdio.h>
7438 int main()
7439 {
7440     printf("%d\n", (int)sizeof(double));
7441     exit(0);
7442 }
7443 EOCP
7444         set try
7445         if eval $compile_ok; then
7446                 doublesize=`./try`
7447                 echo "Your double is $doublesize bytes long."
7448         else
7449                 dflt='8'
7450                 echo "(I can't seem to compile the test program.  Guessing...)"
7451                 rp="What is the size of a double precision number (in bytes)?"
7452                 . ./myread
7453                 doublesize="$ans"
7454         fi
7455         ;;
7456 esac
7457 $rm -f try.c try
7458
7459 : check for long doubles
7460 echo " "
7461 echo "Checking to see if you have long double..." >&4
7462 echo 'int main() { long double x = 7.0; }' > try.c
7463 set try
7464 if eval $compile; then
7465         val="$define"
7466         echo "You have long double."
7467 else
7468         val="$undef"
7469         echo "You do not have long double."
7470 fi
7471 $rm try.*
7472 set d_longdbl
7473 eval $setvar
7474
7475 : check for length of long double
7476 case "${d_longdbl}${longdblsize}" in
7477 $define)
7478         echo " "
7479         echo "Checking to see how big your long doubles are..." >&4
7480         $cat >try.c <<'EOCP'
7481 #include <stdio.h>
7482 int main()
7483 {
7484         printf("%d\n", sizeof(long double));
7485 }
7486 EOCP
7487         set try
7488         set try
7489         if eval $compile; then
7490                 longdblsize=`./try$exe_ext`
7491                 echo "Your long doubles are $longdblsize bytes long."
7492         else
7493                 dflt='8'
7494                 echo " "
7495                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7496                 rp="What is the size of a long double (in bytes)?"
7497                 . ./myread
7498                 longdblsize="$ans"
7499         fi
7500         if $test "X$doublesize" = "X$longdblsize"; then
7501                 echo "(That isn't any different from an ordinary double.)"
7502         fi      
7503         ;;
7504 esac
7505 $rm -f try.* try
7506
7507 echo " "
7508
7509 if $test X"$d_longdbl" = X"$define"; then
7510
7511 echo "Checking how to print long doubles..." >&4
7512
7513 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7514         $cat >try.c <<'EOCP'
7515 #include <sys/types.h>
7516 #include <stdio.h>
7517 int main() {
7518   double d = 123.456;
7519   printf("%.3f\n", d);
7520 }
7521 EOCP
7522         set try
7523         if eval $compile; then
7524                 yyy=`./try$exe_ext`
7525                 case "$yyy" in
7526                 123.456)
7527                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7528                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7529                         echo "We will use %f."
7530                         ;;
7531                 esac
7532         fi
7533 fi
7534
7535 if $test X"$sPRIfldbl" = X; then
7536         $cat >try.c <<'EOCP'
7537 #include <sys/types.h>
7538 #include <stdio.h>
7539 int main() {
7540   long double d = 123.456;
7541   printf("%.3llf\n", d);
7542 }
7543 EOCP
7544         set try
7545         if eval $compile; then
7546                 yyy=`./try$exe_ext`
7547                 case "$yyy" in
7548                 123.456)
7549                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7550                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7551                         echo "We will use %llf."
7552                         ;;
7553                 esac
7554         fi
7555 fi
7556
7557 if $test X"$sPRIfldbl" = X; then
7558         $cat >try.c <<'EOCP'
7559 #include <sys/types.h>
7560 #include <stdio.h>
7561 int main() {
7562   long double d = 123.456;
7563   printf("%.3Lf\n", d);
7564 }
7565 EOCP
7566         set try
7567         if eval $compile; then
7568                 yyy=`./try$exe_ext`
7569                 case "$yyy" in
7570                 123.456)
7571                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7572                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7573                         echo "We will use %Lf."
7574                         ;;
7575                 esac
7576         fi
7577 fi
7578
7579 if $test X"$sPRIfldbl" = X; then
7580         $cat >try.c <<'EOCP'
7581 #include <sys/types.h>
7582 #include <stdio.h>
7583 int main() {
7584   long double d = 123.456;
7585   printf("%.3lf\n", d);
7586 }
7587 EOCP
7588         set try
7589         if eval $compile; then
7590                 yyy=`./try$exe_ext`
7591                 case "$yyy" in
7592                 123.456)
7593                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7594                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7595                         echo "We will use %lf."
7596                         ;;
7597                 esac
7598         fi
7599 fi
7600
7601 if $test X"$sPRIfldbl" = X; then
7602         echo "Cannot figure out how to print long doubles." >&4
7603 fi
7604
7605 $rm -f try try.*
7606
7607 fi # d_longdbl
7608
7609 case "$sPRIfldbl" in
7610 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7611         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7612         ;;
7613 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7614         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7615         ;;
7616 esac
7617
7618 : Check how to convert floats to strings.
7619 if test "X$d_Gconvert" = X; then
7620         echo " "
7621         echo "Checking for an efficient way to convert floats to strings."
7622         echo " " > try.c
7623         case "$uselongdouble" in
7624         "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7625         esac
7626         case "$d_longdbl" in
7627         "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7628         esac
7629         case "$d_PRIgldbl" in
7630         "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7631         esac
7632         $cat >>try.c <<EOP
7633 #ifdef TRY_gconvert
7634 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7635 char *myname = "gconvert";
7636 #endif
7637 #ifdef TRY_gcvt
7638 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7639 char *myname = "gcvt";
7640 #endif
7641 #ifdef TRY_qgcvt
7642 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7643 char *myname = "qgcvt";
7644 #define DOUBLETYPE long double
7645 #endif
7646 #ifdef TRY_sprintf
7647 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7648 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7649 #else
7650 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7651 #endif
7652 char *myname = "sprintf";
7653 #endif
7654
7655 #ifndef DOUBLETYPE
7656 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7657 #define DOUBLETYPE long double
7658 #else
7659 #define DOUBLETYPE double
7660 #endif
7661 #endif
7662
7663 #include <stdio.h>
7664
7665 #define I_STDLIB $i_stdlib
7666 #ifdef I_STDLIB
7667 #include <stdlib.h>
7668 #endif
7669
7670 int
7671 checkit(expect, got)
7672 char *expect;
7673 char *got;
7674 {
7675     if (strcmp(expect, got)) {
7676                 printf("%s oddity:  Expected %s, got %s\n",
7677                         myname, expect, got);
7678                 exit(1);
7679         }
7680 }
7681
7682 int main()
7683
7684         char buf[64]; 
7685         buf[63] = '\0';
7686
7687         /* This must be 1st test on (which?) platform */
7688         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7689         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7690         checkit("0.1", buf);
7691
7692         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7693         checkit("1", buf);
7694
7695         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7696         checkit("1.1", buf);
7697
7698         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7699         checkit("1.01", buf);
7700
7701         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7702         checkit("1.001", buf);
7703
7704         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7705         checkit("1.0001", buf);
7706
7707         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7708         checkit("1.00001", buf);
7709
7710         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7711         checkit("1.000001", buf);
7712
7713         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7714         checkit("0", buf);
7715
7716         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7717         checkit("-1", buf);
7718
7719         /* Some Linux gcvt's give 1.e+5 here. */
7720         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7721         checkit("100000", buf);
7722         
7723         /* Some Linux gcvt's give -1.e+5 here. */
7724         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7725         checkit("-100000", buf);
7726
7727         exit(0);
7728 }
7729 EOP
7730         case "$d_Gconvert" in
7731         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7732         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7733         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7734         *) xxx_list='gconvert gcvt sprintf' ;;
7735         esac
7736
7737         case "$d_longdbl$uselongdouble$d_qgcvt" in
7738         "$define$define$define") xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7739         esac
7740
7741         for xxx_convert in $xxx_list; do
7742                 echo "Trying $xxx_convert..."
7743                 $rm -f try try$_o
7744                 set try -DTRY_$xxx_convert
7745                 if eval $compile; then
7746                         echo "$xxx_convert() found." >&4
7747                         if ./try; then
7748                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
7749                                 break;
7750                         else
7751                                 echo "...But $xxx_convert didn't work as I expected."
7752                         fi
7753                 else
7754                         echo "$xxx_convert NOT found." >&4
7755                 fi
7756         done
7757                 
7758         case "$xxx_convert" in
7759         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7760         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7761         qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7762         *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7763            "$define$define$define")
7764               d_Gconvert="sprintf((b),\"%.*$sPRIgldbl\",(n),(x))" ;;
7765            *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7766            esac
7767            ;;  
7768         esac
7769 fi
7770
7771 : Initialize h_fcntl
7772 h_fcntl=false
7773
7774 : Initialize h_sysfile
7775 h_sysfile=false
7776
7777 : access call always available on UNIX
7778 set access d_access
7779 eval $inlibc
7780
7781 : locate the flags for 'access()'
7782 case "$d_access" in
7783 "$define")
7784         echo " "
7785         $cat >access.c <<'EOCP'
7786 #include <sys/types.h>
7787 #ifdef I_FCNTL
7788 #include <fcntl.h>
7789 #endif
7790 #ifdef I_SYS_FILE
7791 #include <sys/file.h>
7792 #endif
7793 #ifdef I_UNISTD
7794 #include <unistd.h>
7795 #endif
7796 int main() {
7797         exit(R_OK);
7798 }
7799 EOCP
7800         : check sys/file.h first, no particular reason here
7801         if $test `./findhdr sys/file.h` && \
7802                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7803                 h_sysfile=true;
7804                 echo "<sys/file.h> defines the *_OK access constants." >&4
7805         elif $test `./findhdr fcntl.h` && \
7806                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7807                 h_fcntl=true;
7808                 echo "<fcntl.h> defines the *_OK access constants." >&4
7809         elif $test `./findhdr unistd.h` && \
7810                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7811                 echo "<unistd.h> defines the *_OK access constants." >&4
7812         else
7813                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7814         fi
7815         ;;
7816 esac
7817 $rm -f access*
7818
7819 : see if accessx exists
7820 set accessx d_accessx
7821 eval $inlibc
7822
7823 : see if alarm exists
7824 set alarm d_alarm
7825 eval $inlibc
7826
7827 : see if atolf exists
7828 set atolf d_atolf
7829 eval $inlibc
7830
7831 : see if atoll exists
7832 set atoll d_atoll
7833 eval $inlibc
7834
7835 : Look for GNU-cc style attribute checking
7836 echo " "
7837 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7838 $cat >attrib.c <<'EOCP'
7839 #include <stdio.h>
7840 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7841 EOCP
7842 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7843         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7844                 echo "Your C compiler doesn't fully support __attribute__."
7845                 val="$undef"
7846         else
7847                 echo "Your C compiler supports __attribute__."
7848                 val="$define"
7849         fi
7850 else
7851         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7852         val="$undef"
7853 fi
7854 set d_attribut
7855 eval $setvar
7856 $rm -f attrib*
7857
7858 : see if bcmp exists
7859 set bcmp d_bcmp
7860 eval $inlibc
7861
7862 : see if bcopy exists
7863 set bcopy d_bcopy
7864 eval $inlibc
7865
7866 : see if this is a unistd.h system
7867 set unistd.h i_unistd
7868 eval $inhdr
7869
7870 : see if getpgrp exists
7871 set getpgrp d_getpgrp
7872 eval $inlibc
7873
7874 case "$d_getpgrp" in
7875 "$define")
7876         echo " "
7877         echo "Checking to see which flavor of getpgrp is in use..."
7878         $cat >set.c <<EOP
7879 #$i_unistd I_UNISTD
7880 #include <sys/types.h>
7881 #ifdef I_UNISTD
7882 #  include <unistd.h>
7883 #endif
7884 int main()
7885 {
7886         if (getuid() == 0) {
7887                 printf("(I see you are running Configure as super-user...)\n");
7888                 setuid(1);
7889         }
7890 #ifdef TRY_BSD_PGRP
7891         if (getpgrp(1) == 0)
7892                 exit(0);
7893 #else
7894         if (getpgrp() > 0)
7895                 exit(0);
7896 #endif
7897         exit(1);
7898 }
7899 EOP
7900         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7901                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7902                 val="$define"
7903         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7904                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7905                 val="$undef"
7906         else
7907                 echo "I can't seem to compile and run the test program."
7908                 if ./usg; then
7909                         xxx="a USG one, i.e. you use getpgrp()."
7910                 else
7911                         # SVR4 systems can appear rather BSD-ish.
7912                         case "$i_unistd" in
7913                         $undef)
7914                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7915                                 val="$define"
7916                                 ;;
7917                         $define)
7918                                 xxx="probably a USG one, i.e. you use getpgrp()."
7919                                 val="$undef"
7920                                 ;;
7921                         esac
7922                 fi
7923                 echo "Assuming your getpgrp is $xxx" >&4
7924         fi
7925         ;;
7926 *) val="$undef";;
7927 esac
7928 set d_bsdgetpgrp
7929 eval $setvar
7930 $rm -f set set.c
7931
7932 : see if setpgrp exists
7933 set setpgrp d_setpgrp
7934 eval $inlibc
7935
7936 case "$d_setpgrp" in
7937 "$define")
7938         echo " "
7939         echo "Checking to see which flavor of setpgrp is in use..."
7940         $cat >set.c <<EOP
7941 #$i_unistd I_UNISTD
7942 #include <sys/types.h>
7943 #ifdef I_UNISTD
7944 #  include <unistd.h>
7945 #endif
7946 int main()
7947 {
7948         if (getuid() == 0) {
7949                 printf("(I see you are running Configure as super-user...)\n");
7950                 setuid(1);
7951         }
7952 #ifdef TRY_BSD_PGRP
7953         if (-1 == setpgrp(1, 1))
7954                 exit(0);
7955 #else
7956         if (setpgrp() != -1)
7957                 exit(0);
7958 #endif
7959         exit(1);
7960 }
7961 EOP
7962         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7963                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7964                 val="$define"
7965         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7966                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7967                 val="$undef"
7968         else
7969                 echo "(I can't seem to compile and run the test program.)"
7970                 if ./usg; then
7971                         xxx="a USG one, i.e. you use setpgrp()."
7972                 else
7973                         # SVR4 systems can appear rather BSD-ish.
7974                         case "$i_unistd" in
7975                         $undef)
7976                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7977                                 val="$define"
7978                                 ;;
7979                         $define)
7980                                 xxx="probably a USG one, i.e. you use setpgrp()."
7981                                 val="$undef"
7982                                 ;;
7983                         esac
7984                 fi
7985                 echo "Assuming your setpgrp is $xxx" >&4
7986         fi
7987         ;;
7988 *) val="$undef";;
7989 esac
7990 set d_bsdsetpgrp
7991 eval $setvar
7992 $rm -f set set.c
7993 : see if bzero exists
7994 set bzero d_bzero
7995 eval $inlibc
7996
7997 : see if signal is declared as pointer to function returning int or void
7998 echo " "
7999 xxx=`./findhdr signal.h`
8000 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8001 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8002         echo "You have int (*signal())() instead of void." >&4
8003         val="$undef"
8004 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8005         echo "You have void (*signal())()." >&4
8006         val="$define"
8007 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8008         echo "You have int (*signal())() instead of void." >&4
8009         val="$undef"
8010 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8011         echo "You have void (*signal())()." >&4
8012         val="$define"
8013 else
8014         case "$d_voidsig" in
8015         '')
8016         echo "I can't determine whether signal handler returns void or int..." >&4
8017                 dflt=void
8018                 rp="What type does your signal handler return?"
8019                 . ./myread
8020                 case "$ans" in
8021                 v*) val="$define";;
8022                 *) val="$undef";;
8023                 esac;;
8024         "$define")
8025                 echo "As you already told me, signal handler returns void." >&4
8026                 val="$define"
8027                 ;;
8028         *)      echo "As you already told me, signal handler returns int." >&4
8029                 val="$undef"
8030                 ;;
8031         esac
8032 fi
8033 set d_voidsig
8034 eval $setvar
8035 case "$d_voidsig" in
8036 "$define") signal_t="void";;
8037 *) signal_t="int";;
8038 esac
8039 $rm -f $$.tmp
8040
8041 : check for ability to cast large floats to 32-bit ints.
8042 echo " "
8043 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8044 if $test "$intsize" -ge 4; then
8045         xxx=int
8046 else
8047         xxx=long
8048 fi
8049 $cat >try.c <<EOCP
8050 #include <stdio.h>
8051 #include <sys/types.h>
8052 #include <signal.h>
8053 $signal_t blech(s) int s; { exit(3); }
8054 int main()
8055 {
8056         $xxx i32;
8057         double f, g;
8058         int result = 0;
8059         char str[16];
8060         signal(SIGFPE, blech);
8061
8062         /* Don't let compiler optimize the test away.  Store the number 
8063            in a writable string for gcc to pass to sscanf under HP/UX.
8064         */
8065         sprintf(str, "2147483647");
8066         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8067         g = 10 * f;
8068         i32  = ($xxx) g;
8069
8070         /* x86 processors will probably give 0x8000 0000, which is a
8071        sign change.  We don't want that.  We want to mimic SPARC
8072            behavior here, which is to preserve the sign and give
8073            back 0x7fff ffff.
8074         */
8075         if (i32 != ($xxx) f)
8076                 result |= 1;
8077         exit(result);
8078 }
8079 EOCP
8080 set try
8081 if eval $compile_ok; then
8082         ./try
8083         yyy=$?
8084 else
8085         echo "(I can't seem to compile the test program--assuming it can't)"
8086         yyy=1
8087 fi
8088 case "$yyy" in
8089 0)      val="$define"
8090         echo "Yup, it can."
8091         ;;
8092 *)      val="$undef"
8093         echo "Nope, it can't."
8094         ;;
8095 esac
8096 set d_casti32
8097 eval $setvar
8098 $rm -f try try.*
8099
8100 : check for ability to cast negative floats to unsigned
8101 echo " "
8102 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8103 $cat >try.c <<EOCP
8104 #include <stdio.h>
8105 #include <sys/types.h>
8106 #include <signal.h>
8107 $signal_t blech(s) int s; { exit(7); }
8108 $signal_t blech_in_list(s) int s; { exit(4); }
8109 unsigned long dummy_long(p) unsigned long p; { return p; }
8110 unsigned int dummy_int(p) unsigned int p; { return p; }
8111 unsigned short dummy_short(p) unsigned short p; { return p; }
8112 int main()
8113 {
8114         double f;
8115         unsigned long along;
8116         unsigned int aint;
8117         unsigned short ashort;
8118         int result = 0;
8119         char str[16];
8120         
8121         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8122            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8123            optimized the whole file away
8124         */
8125         /* Store the number in a writable string for gcc to pass to 
8126            sscanf under HP/UX.
8127         */
8128         sprintf(str, "-123");
8129         sscanf(str, "%lf", &f);  /* f = -123.; */
8130
8131         signal(SIGFPE, blech);
8132         along = (unsigned long)f;
8133         aint = (unsigned int)f;
8134         ashort = (unsigned short)f;
8135         if (along != (unsigned long)-123)
8136                 result |= 1;
8137         if (aint != (unsigned int)-123)
8138                 result |= 1;
8139         if (ashort != (unsigned short)-123)
8140                 result |= 1;
8141         sprintf(str, "1073741824.");
8142         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8143         f = f + f;
8144         along = 0;
8145         along = (unsigned long)f;
8146         if (along != 0x80000000)
8147                 result |= 2;
8148         f -= 1.;
8149         along = 0;
8150         along = (unsigned long)f;
8151         if (along != 0x7fffffff)
8152                 result |= 1;
8153         f += 2.;
8154         along = 0;
8155         along = (unsigned long)f;
8156         if (along != 0x80000001)
8157                 result |= 2;
8158         if (result)
8159                 exit(result);
8160         signal(SIGFPE, blech_in_list);
8161         sprintf(str, "123.");
8162         sscanf(str, "%lf", &f);  /* f = 123.; */
8163         along = dummy_long((unsigned long)f);
8164         aint = dummy_int((unsigned int)f);
8165         ashort = dummy_short((unsigned short)f);
8166         if (along != (unsigned long)123)
8167                 result |= 4;
8168         if (aint != (unsigned int)123)
8169                 result |= 4;
8170         if (ashort != (unsigned short)123)
8171                 result |= 4;
8172         exit(result);
8173
8174 }
8175 EOCP
8176 set try
8177 if eval $compile_ok; then
8178         ./try
8179         castflags=$?
8180 else
8181         echo "(I can't seem to compile the test program--assuming it can't)"
8182         castflags=7
8183 fi
8184 case "$castflags" in
8185 0)      val="$define"
8186         echo "Yup, it can."
8187         ;;
8188 *)      val="$undef"
8189         echo "Nope, it can't."
8190         ;;
8191 esac
8192 set d_castneg
8193 eval $setvar
8194 $rm -f try.*
8195
8196 : see if vprintf exists
8197 echo " "
8198 if set vprintf val -f d_vprintf; eval $csym; $val; then
8199         echo 'vprintf() found.' >&4
8200         val="$define"
8201         $cat >vprintf.c <<'EOF'
8202 #include <varargs.h>
8203
8204 int main() { xxx("foo"); }
8205
8206 xxx(va_alist)
8207 va_dcl
8208 {
8209         va_list args;
8210         char buf[10];
8211
8212         va_start(args);
8213         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8214 }
8215 EOF
8216         set vprintf
8217         if eval $compile && ./vprintf; then
8218                 echo "Your vsprintf() returns (int)." >&4
8219                 val2="$undef"
8220         else
8221                 echo "Your vsprintf() returns (char*)." >&4
8222                 val2="$define"
8223         fi
8224 else
8225         echo 'vprintf() NOT found.' >&4
8226                 val="$undef"
8227                 val2="$undef"
8228 fi
8229 set d_vprintf
8230 eval $setvar
8231 val=$val2
8232 set d_charvspr
8233 eval $setvar
8234
8235 : see if chown exists
8236 set chown d_chown
8237 eval $inlibc
8238
8239 : see if chroot exists
8240 set chroot d_chroot
8241 eval $inlibc
8242
8243 : see if chsize exists
8244 set chsize d_chsize
8245 eval $inlibc
8246
8247 : check for const keyword
8248 echo " "
8249 echo 'Checking to see if your C compiler knows about "const"...' >&4
8250 $cat >const.c <<'EOCP'
8251 typedef struct spug { int drokk; } spug;
8252 int main()
8253 {
8254         const char *foo;
8255         const spug y;
8256 }
8257 EOCP
8258 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8259         val="$define"
8260         echo "Yup, it does."
8261 else
8262         val="$undef"
8263         echo "Nope, it doesn't."
8264 fi
8265 set d_const
8266 eval $setvar
8267
8268 : see if crypt exists
8269 echo " "
8270 if set crypt val -f d_crypt; eval $csym; $val; then
8271         echo 'crypt() found.' >&4
8272         val="$define"
8273         cryptlib=''
8274 else
8275         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8276         if $test -z "$cryptlib"; then
8277                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8278         else
8279                 cryptlib=-lcrypt
8280         fi
8281         if $test -z "$cryptlib"; then
8282                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8283         else
8284                 cryptlib=-lcrypt
8285         fi
8286         if $test -z "$cryptlib"; then
8287                 cryptlib=`./loc libcrypt$_a "" $libpth`
8288         else
8289                 cryptlib=-lcrypt
8290         fi
8291         if $test -z "$cryptlib"; then
8292                 echo 'crypt() NOT found.' >&4
8293                 val="$undef"
8294         else
8295                 val="$define"
8296         fi
8297 fi
8298 set d_crypt
8299 eval $setvar
8300
8301 : get csh whereabouts
8302 case "$csh" in
8303 'csh') val="$undef" ;;
8304 *) val="$define" ;;
8305 esac
8306 set d_csh
8307 eval $setvar
8308 : Respect a hint or command line value for full_csh.
8309 case "$full_csh" in
8310 '') full_csh=$csh ;;
8311 esac
8312
8313 : see if cuserid exists
8314 set cuserid d_cuserid
8315 eval $inlibc
8316
8317 : see if this is a limits.h system
8318 set limits.h i_limits
8319 eval $inhdr
8320
8321 : see if this is a float.h system
8322 set float.h i_float
8323 eval $inhdr
8324
8325 : See if number of significant digits in a double precision number is known
8326 echo " "
8327 $cat >dbl_dig.c <<EOM
8328 #$i_limits I_LIMITS
8329 #$i_float I_FLOAT
8330 #ifdef I_LIMITS
8331 #include <limits.h>
8332 #endif
8333 #ifdef I_FLOAT
8334 #include <float.h>
8335 #endif
8336 #ifdef DBL_DIG
8337 printf("Contains DBL_DIG");
8338 #endif
8339 EOM
8340 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8341 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8342         echo "DBL_DIG found." >&4
8343         val="$define"
8344 else
8345         echo "DBL_DIG NOT found." >&4
8346         val="$undef"
8347 fi
8348 $rm -f dbl_dig.?
8349 set d_dbl_dig
8350 eval $setvar
8351
8352 : see if difftime exists
8353 set difftime d_difftime
8354 eval $inlibc
8355
8356 : see if this is a dirent system
8357 echo " "
8358 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8359         val="$define"
8360         echo "<dirent.h> found." >&4
8361 else
8362         val="$undef"
8363         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8364                 echo "<sys/dir.h> found." >&4
8365                 echo " "
8366         else
8367                 xinc=`./findhdr sys/ndir.h`
8368         fi
8369         echo "<dirent.h> NOT found." >&4
8370 fi
8371 set i_dirent
8372 eval $setvar
8373
8374 : Look for type of directory structure.
8375 echo " "
8376 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8377
8378 case "$direntrytype" in
8379 ''|' ')
8380         case "$i_dirent" in
8381         $define) guess1='struct dirent' ;;
8382         *) guess1='struct direct'  ;;
8383         esac
8384         ;;
8385 *)      guess1="$direntrytype"
8386         ;;
8387 esac
8388
8389 case "$guess1" in
8390 'struct dirent') guess2='struct direct' ;;
8391 *) guess2='struct dirent' ;;
8392 esac
8393                 
8394 if $contains "$guess1" try.c >/dev/null 2>&1; then
8395         direntrytype="$guess1"
8396         echo "Your directory entries are $direntrytype." >&4
8397 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8398         direntrytype="$guess2"
8399         echo "Your directory entries seem to be $direntrytype." >&4
8400 else
8401         echo "I don't recognize your system's directory entries." >&4
8402         rp="What type is used for directory entries on this system?"
8403         dflt="$guess1"
8404         . ./myread
8405         direntrytype="$ans"
8406 fi
8407 $rm -f try.c
8408
8409
8410 : see if the directory entry stores field length
8411 echo " "
8412 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8413 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8414         echo "Good, your directory entry keeps length information in d_namlen." >&4
8415         val="$define"
8416 else
8417         echo "Your directory entry does not know about the d_namlen field." >&4
8418         val="$undef"
8419 fi
8420 set d_dirnamlen
8421 eval $setvar
8422 $rm -f try.c
8423
8424 : see if dlerror exists
8425 xxx_runnm="$runnm"
8426 runnm=false
8427 set dlerror d_dlerror
8428 eval $inlibc
8429 runnm="$xxx_runnm"
8430
8431 : see if dlfcn is available
8432 set dlfcn.h i_dlfcn
8433 eval $inhdr
8434
8435 case "$usedl" in
8436 $define|y|true)
8437         $cat << EOM
8438
8439 On a few systems, the dynamically loaded modules that perl generates and uses
8440 will need a different extension than shared libs. The default will probably
8441 be appropriate.
8442
8443 EOM
8444         case "$dlext" in
8445         '')     dflt="$so" ;;
8446         *)      dflt="$dlext" ;;
8447         esac
8448         rp='What is the extension of dynamically loaded modules'
8449         . ./myread
8450         dlext="$ans"
8451         ;;
8452 *)
8453         dlext="none"
8454         ;;
8455 esac
8456
8457 : Check if dlsym need a leading underscore
8458 echo " "
8459 val="$undef"
8460
8461 case "$dlsrc" in
8462 dl_dlopen.xs)
8463         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8464         $cat >dyna.c <<'EOM'
8465 fred () { }
8466 EOM
8467
8468 $cat >fred.c<<EOM
8469
8470 #include <stdio.h>
8471 #$i_dlfcn I_DLFCN
8472 #ifdef I_DLFCN
8473 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8474 #else
8475 #include <sys/types.h>
8476 #include <nlist.h>
8477 #include <link.h>
8478 #endif
8479
8480 extern int fred() ;
8481
8482 int main()
8483 {
8484     void * handle ;
8485     void * symbol ;
8486 #ifndef RTLD_LAZY
8487     int mode = 1 ;
8488 #else
8489     int mode = RTLD_LAZY ;
8490 #endif
8491     handle = dlopen("./dyna.$dlext", mode) ;
8492     if (handle == NULL) {
8493         printf ("1\n") ;
8494         fflush (stdout) ;
8495         exit(0);
8496     }
8497     symbol = dlsym(handle, "fred") ;
8498     if (symbol == NULL) {
8499         /* try putting a leading underscore */
8500         symbol = dlsym(handle, "_fred") ;
8501         if (symbol == NULL) {
8502             printf ("2\n") ;
8503             fflush (stdout) ;
8504             exit(0);
8505         }
8506         printf ("3\n") ;
8507     }
8508     else
8509         printf ("4\n") ;
8510     fflush (stdout) ;
8511     exit(0);
8512 }
8513 EOM
8514         : Call the object file tmp-dyna.o in case dlext=o.
8515         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8516                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8517                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8518                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8519                 xxx=`./fred`
8520                 case $xxx in
8521                 1)      echo "Test program failed using dlopen." >&4
8522                         echo "Perhaps you should not use dynamic loading." >&4;;
8523                 2)      echo "Test program failed using dlsym." >&4
8524                         echo "Perhaps you should not use dynamic loading." >&4;;
8525                 3)      echo "dlsym needs a leading underscore" >&4
8526                         val="$define" ;;
8527                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8528                 esac
8529         else
8530                 echo "I can't compile and run the test program." >&4
8531                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8532         fi
8533         ;;
8534 esac
8535                 
8536 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8537
8538 set d_dlsymun
8539 eval $setvar
8540
8541 hasproto='varname=$1; func=$2; shift; shift;
8542 while $test $# -ge 2; do
8543         case "$1" in
8544         $define) echo "#include <$2>";;
8545         esac ;
8546     shift 2;
8547 done > try.c;
8548 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8549 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8550         echo "$func() prototype found.";
8551         val="$define";
8552 else
8553         echo "$func() prototype NOT found.";
8554         val="$undef";
8555 fi;
8556 set $varname;
8557 eval $setvar;
8558 $rm -f try.c tryout.c'
8559
8560 : see if prototype for drand48 is available
8561 echo " "
8562 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8563 eval $hasproto
8564
8565 : see if dup2 exists
8566 set dup2 d_dup2
8567 eval $inlibc
8568
8569 : see if eaccess exists
8570 set eaccess d_eaccess
8571 eval $inlibc
8572
8573 : see if endgrent exists
8574 set endgrent d_endgrent
8575 eval $inlibc
8576
8577 : see if endhostent exists
8578 set endhostent d_endhent
8579 eval $inlibc
8580
8581 : see if endnetent exists
8582 set endnetent d_endnent
8583 eval $inlibc
8584
8585 : see if endprotoent exists
8586 set endprotoent d_endpent
8587 eval $inlibc
8588
8589 : see if endpwent exists
8590 set endpwent d_endpwent
8591 eval $inlibc
8592
8593 : see if endservent exists
8594 set endservent d_endsent
8595 eval $inlibc
8596
8597 : Locate the flags for 'open()'
8598 echo " "
8599 $cat >open3.c <<'EOCP'
8600 #include <sys/types.h>
8601 #ifdef I_FCNTL
8602 #include <fcntl.h>
8603 #endif
8604 #ifdef I_SYS_FILE
8605 #include <sys/file.h>
8606 #endif
8607 int main() {
8608         if(O_RDONLY);
8609 #ifdef O_TRUNC
8610         exit(0);
8611 #else
8612         exit(1);
8613 #endif
8614 }
8615 EOCP
8616 : check sys/file.h first to get FREAD on Sun
8617 if $test `./findhdr sys/file.h` && \
8618                 set open3 -DI_SYS_FILE && eval $compile; then
8619         h_sysfile=true;
8620         echo "<sys/file.h> defines the O_* constants..." >&4
8621         if ./open3; then
8622                 echo "and you have the 3 argument form of open()." >&4
8623                 val="$define"
8624         else
8625                 echo "but not the 3 argument form of open().  Oh, well." >&4
8626                 val="$undef"
8627         fi
8628 elif $test `./findhdr fcntl.h` && \
8629                 set open3 -DI_FCNTL && eval $compile; then
8630         h_fcntl=true;
8631         echo "<fcntl.h> defines the O_* constants..." >&4
8632         if ./open3; then
8633                 echo "and you have the 3 argument form of open()." >&4
8634                 val="$define"
8635         else
8636                 echo "but not the 3 argument form of open().  Oh, well." >&4
8637                 val="$undef"
8638         fi
8639 else
8640         val="$undef"
8641         echo "I can't find the O_* constant definitions!  You got problems." >&4
8642 fi
8643 set d_open3
8644 eval $setvar
8645 $rm -f open3*
8646
8647 : see which of string.h or strings.h is needed
8648 echo " "
8649 strings=`./findhdr string.h`
8650 if $test "$strings" && $test -r "$strings"; then
8651         echo "Using <string.h> instead of <strings.h>." >&4
8652         val="$define"
8653 else
8654         val="$undef"
8655         strings=`./findhdr strings.h`
8656         if $test "$strings" && $test -r "$strings"; then
8657                 echo "Using <strings.h> instead of <string.h>." >&4
8658         else
8659                 echo "No string header found -- You'll surely have problems." >&4
8660         fi
8661 fi
8662 set i_string
8663 eval $setvar
8664 case "$i_string" in
8665 "$undef") strings=`./findhdr strings.h`;;
8666 *)        strings=`./findhdr string.h`;;
8667 esac
8668
8669 : check for non-blocking I/O stuff
8670 case "$h_sysfile" in
8671 true) echo "#include <sys/file.h>" > head.c;;
8672 *)
8673         case "$h_fcntl" in
8674         true) echo "#include <fcntl.h>" > head.c;;
8675         *) echo "#include <sys/fcntl.h>" > head.c;;
8676         esac
8677         ;;
8678 esac
8679 echo " "
8680 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8681 case "$o_nonblock" in
8682 '')
8683         $cat head.c > try.c
8684         $cat >>try.c <<'EOCP'
8685 #include <stdio.h>
8686 int main() {
8687 #ifdef O_NONBLOCK
8688         printf("O_NONBLOCK\n");
8689         exit(0);
8690 #endif
8691 #ifdef O_NDELAY
8692         printf("O_NDELAY\n");
8693         exit(0);
8694 #endif
8695 #ifdef FNDELAY
8696         printf("FNDELAY\n");
8697         exit(0);
8698 #endif
8699         exit(0);
8700 }
8701 EOCP
8702         set try
8703         if eval $compile_ok; then
8704                 o_nonblock=`./try`
8705                 case "$o_nonblock" in
8706                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8707                 *) echo "Seems like we can use $o_nonblock.";;
8708                 esac
8709         else
8710                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8711         fi
8712         ;;
8713 *) echo "Using $hint value $o_nonblock.";;
8714 esac
8715 $rm -f try try.* .out core
8716
8717 echo " "
8718 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8719 case "$eagain" in
8720 '')
8721         $cat head.c > try.c
8722         $cat >>try.c <<EOCP
8723 #include <errno.h>
8724 #include <sys/types.h>
8725 #include <signal.h>
8726 #include <stdio.h> 
8727 #define MY_O_NONBLOCK $o_nonblock
8728 #ifndef errno  /* XXX need better Configure test */
8729 extern int errno;
8730 #endif
8731 #$i_unistd I_UNISTD
8732 #ifdef I_UNISTD
8733 #include <unistd.h>
8734 #endif
8735 #$i_string I_STRING
8736 #ifdef I_STRING
8737 #include <string.h>
8738 #else
8739 #include <strings.h>
8740 #endif
8741 $signal_t blech(x) int x; { exit(3); }
8742 EOCP
8743         $cat >> try.c <<'EOCP'
8744 int main()
8745 {
8746         int pd[2];
8747         int pu[2];
8748         char buf[1];
8749         char string[100];
8750
8751         pipe(pd);       /* Down: child -> parent */
8752         pipe(pu);       /* Up: parent -> child */
8753         if (0 != fork()) {
8754                 int ret;
8755                 close(pd[1]);   /* Parent reads from pd[0] */
8756                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8757                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8758                         exit(1);
8759                 signal(SIGALRM, blech);
8760                 alarm(5);
8761                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8762                         exit(2);
8763                 sprintf(string, "%d\n", ret);
8764                 write(2, string, strlen(string));
8765                 alarm(0);
8766 #ifdef EAGAIN
8767                 if (errno == EAGAIN) {
8768                         printf("EAGAIN\n");
8769                         goto ok;
8770                 }
8771 #endif
8772 #ifdef EWOULDBLOCK
8773                 if (errno == EWOULDBLOCK)
8774                         printf("EWOULDBLOCK\n");
8775 #endif
8776         ok:
8777                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8778                 sleep(2);                               /* Give it time to close our pipe */
8779                 alarm(5);
8780                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8781                 alarm(0);
8782                 sprintf(string, "%d\n", ret);
8783                 write(3, string, strlen(string));
8784                 exit(0);
8785         }
8786
8787         close(pd[0]);                   /* We write to pd[1] */
8788         close(pu[1]);                   /* We read from pu[0] */
8789         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8790         close(pd[1]);                   /* Pipe pd is now fully closed! */
8791         exit(0);                                /* Bye bye, thank you for playing! */
8792 }
8793 EOCP
8794         set try
8795         if eval $compile_ok; then
8796                 echo "$startsh" >mtry
8797                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8798                 chmod +x mtry
8799                 ./mtry >/dev/null 2>&1
8800                 case $? in
8801                 0) eagain=`$cat try.out`;;
8802                 1) echo "Could not perform non-blocking setting!";;
8803                 2) echo "I did a successful read() for something that was not there!";;
8804                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8805                 *) echo "Something terribly wrong happened during testing.";;
8806                 esac
8807                 rd_nodata=`$cat try.ret`
8808                 echo "A read() system call with no data present returns $rd_nodata."
8809                 case "$rd_nodata" in
8810                 0|-1) ;;
8811                 *)
8812                         echo "(That's peculiar, fixing that to be -1.)"
8813                         rd_nodata=-1
8814                         ;;
8815                 esac
8816                 case "$eagain" in
8817                 '')
8818                         echo "Forcing errno EAGAIN on read() with no data available."
8819                         eagain=EAGAIN
8820                         ;;
8821                 *)
8822                         echo "Your read() sets errno to $eagain when no data is available."
8823                         ;;
8824                 esac
8825                 status=`$cat try.err`
8826                 case "$status" in
8827                 0) echo "And it correctly returns 0 to signal EOF.";;
8828                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8829                 *) echo "However, your read() returns '$status' on EOF??";;
8830                 esac
8831                 val="$define"
8832                 if test "$status" = "$rd_nodata"; then
8833                         echo "WARNING: you can't distinguish between EOF and no data!"
8834                         val="$undef"
8835                 fi
8836         else
8837                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8838                 eagain=EAGAIN
8839         fi
8840         set d_eofnblk
8841         eval $setvar
8842         ;;
8843 *)
8844         echo "Using $hint value $eagain."
8845         echo "Your read() returns $rd_nodata when no data is present."
8846         case "$d_eofnblk" in
8847         "$define") echo "And you can see EOF because read() returns 0.";;
8848         "$undef") echo "But you can't see EOF status from read() returned value.";;
8849         *)
8850                 echo "(Assuming you can't see EOF status from read anyway.)"
8851                 d_eofnblk=$undef
8852                 ;;
8853         esac
8854         ;;
8855 esac
8856 $rm -f try try.* .out core head.c mtry
8857
8858 : see if fchmod exists
8859 set fchmod d_fchmod
8860 eval $inlibc
8861
8862 : see if fchown exists
8863 set fchown d_fchown
8864 eval $inlibc
8865
8866 : see if this is an fcntl system
8867 set fcntl d_fcntl
8868 eval $inlibc
8869
8870 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8871 while $test $# -ge 2; do
8872         case "$1" in
8873         $define) echo "#include <$2>";;
8874         esac ;
8875     shift 2;
8876 done > try.c;
8877 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8878 set try;
8879 if eval $compile; then
8880         val="$define";
8881 else
8882         val="$undef";
8883 fi;
8884 set $varname;
8885 eval $setvar;
8886 $rm -f try.c try.o'
8887
8888 socketlib=''
8889 sockethdr=''
8890 : see whether socket exists
8891 echo " "
8892 $echo $n "Hmm... $c" >&4
8893 if set socket val -f d_socket; eval $csym; $val; then
8894         echo "Looks like you have Berkeley networking support." >&4
8895         d_socket="$define"
8896         if set setsockopt val -f; eval $csym; $val; then
8897                 d_oldsock="$undef"
8898         else
8899                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8900                 d_oldsock="$define"
8901         fi
8902 else
8903         if $contains socklib libc.list >/dev/null 2>&1; then
8904                 echo "Looks like you have Berkeley networking support." >&4
8905                 d_socket="$define"
8906                 : we will have to assume that it supports the 4.2 BSD interface
8907                 d_oldsock="$undef"
8908         else
8909                 echo "You don't have Berkeley networking in libc$_a..." >&4
8910                 if test "X$d_socket" = "X$define"; then
8911                    echo "...but you seem to believe that you have sockets." >&4
8912                 else
8913                         for net in net socket
8914                         do
8915                                 if test -f /usr/lib/lib$net$_a; then
8916                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8917                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8918                                         if $contains socket libc.list >/dev/null 2>&1; then
8919                                                 d_socket="$define"
8920                                                 socketlib="-l$net"
8921                                                 case "$net" in
8922                                                 net)
8923                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8924                                                         sockethdr="-I/usr/netinclude"
8925                                                         ;;
8926                                                 esac
8927                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8928                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8929                                                         d_oldsock="$undef"
8930                                                 else
8931                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8932                                                         d_oldsock="$define"
8933                                                 fi
8934                                                 break
8935                                         fi
8936                                 fi
8937                         done
8938                         if test "X$d_socket" != "X$define"; then
8939                            echo "or anywhere else I see." >&4
8940                            d_socket="$undef"
8941                            d_oldsock="$undef"
8942                         fi
8943                 fi
8944         fi
8945 fi
8946
8947 : see if socketpair exists
8948 set socketpair d_sockpair
8949 eval $inlibc
8950
8951
8952 echo " "
8953 echo "Checking the availability of certain socket constants..." >& 4
8954 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8955         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8956         $cat >try.c <<EOF
8957 #include <sys/types.h>
8958 #include <sys/socket.h>
8959 int main() {
8960     int i = $ENUM;
8961 }
8962 EOF
8963         val="$undef"
8964         set try; if eval $compile; then
8965                 val="$define"
8966         fi
8967         set d_${enum}; eval $setvar
8968         $rm -f try.c try
8969 done
8970
8971 : see if sys/select.h has to be included
8972 set sys/select.h i_sysselct
8973 eval $inhdr
8974
8975 : see if we should include time.h, sys/time.h, or both
8976 echo " "
8977 if test "X$timeincl" = X; then
8978         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8979         $echo $n "I'm now running the test program...$c"
8980         $cat >try.c <<'EOCP'
8981 #include <sys/types.h>
8982 #ifdef I_TIME
8983 #include <time.h>
8984 #endif
8985 #ifdef I_SYSTIME
8986 #ifdef SYSTIMEKERNEL
8987 #define KERNEL
8988 #endif
8989 #include <sys/time.h>
8990 #endif
8991 #ifdef I_SYSSELECT
8992 #include <sys/select.h>
8993 #endif
8994 int main()
8995 {
8996         struct tm foo;
8997 #ifdef S_TIMEVAL
8998         struct timeval bar;
8999 #endif
9000 #ifdef S_TIMEZONE
9001         struct timezone tzp;
9002 #endif
9003         if (foo.tm_sec == foo.tm_sec)
9004                 exit(0);
9005 #ifdef S_TIMEVAL
9006         if (bar.tv_sec == bar.tv_sec)
9007                 exit(0);
9008 #endif
9009         exit(1);
9010 }
9011 EOCP
9012         flags=''
9013         for s_timezone in '-DS_TIMEZONE' ''; do
9014         sysselect=''
9015         for s_timeval in '-DS_TIMEVAL' ''; do
9016         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9017         for i_time in '' '-DI_TIME'; do
9018         for i_systime in '-DI_SYSTIME' ''; do
9019                 case "$flags" in
9020                 '') $echo $n ".$c"
9021                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9022                         if eval $compile; then
9023                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9024                                 shift
9025                                 flags="$*"
9026                                 echo " "
9027                                 $echo $n "Succeeded with $flags$c"
9028                         fi
9029                         ;;
9030                 esac
9031         done
9032         done
9033         done
9034         done
9035         done
9036         timeincl=''
9037         echo " "
9038         case "$flags" in
9039         *SYSTIMEKERNEL*) i_systimek="$define"
9040                 timeincl=`./findhdr sys/time.h`
9041                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9042         *) i_systimek="$undef";;
9043         esac
9044         case "$flags" in
9045         *I_TIME*) i_time="$define"
9046                 timeincl=`./findhdr time.h`" $timeincl"
9047                 echo "We'll include <time.h>." >&4;;
9048         *) i_time="$undef";;
9049         esac
9050         case "$flags" in
9051         *I_SYSTIME*) i_systime="$define"
9052                 timeincl=`./findhdr sys/time.h`" $timeincl"
9053                 echo "We'll include <sys/time.h>." >&4;;
9054         *) i_systime="$undef";;
9055         esac
9056         $rm -f try.c try
9057 fi
9058
9059 : check for fd_set items
9060 $cat <<EOM
9061
9062 Checking to see how well your C compiler handles fd_set and friends ...
9063 EOM
9064 $cat >fd_set.c <<EOCP
9065 #$i_systime I_SYS_TIME
9066 #$i_sysselct I_SYS_SELECT
9067 #$d_socket HAS_SOCKET
9068 #include <sys/types.h>
9069 #ifdef HAS_SOCKET
9070 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9071 #endif
9072 #ifdef I_SYS_TIME
9073 #include <sys/time.h>
9074 #endif
9075 #ifdef I_SYS_SELECT
9076 #include <sys/select.h>
9077 #endif
9078 int main() {
9079         fd_set fds;
9080
9081 #ifdef TRYBITS
9082         if(fds.fds_bits);
9083 #endif
9084
9085 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9086         exit(0);
9087 #else
9088         exit(1);
9089 #endif
9090 }
9091 EOCP
9092 set fd_set -DTRYBITS
9093 if eval $compile; then
9094         d_fds_bits="$define"
9095         d_fd_set="$define"
9096         echo "Well, your system knows about the normal fd_set typedef..." >&4
9097         if ./fd_set; then
9098                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9099                 d_fd_macros="$define"
9100         else
9101                 $cat >&4 <<'EOM'
9102 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9103 EOM
9104                 d_fd_macros="$undef"
9105         fi
9106 else
9107         $cat <<'EOM'
9108 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9109 EOM
9110         set fd_set
9111         if eval $compile; then
9112                 d_fds_bits="$undef"
9113                 d_fd_set="$define"
9114                 echo "Well, your system has some sort of fd_set available..." >&4
9115                 if ./fd_set; then
9116                         echo "and you have the normal fd_set macros." >&4
9117                         d_fd_macros="$define"
9118                 else
9119                         $cat <<'EOM'
9120 but not the normal fd_set macros!  Gross!  More work for me...
9121 EOM
9122                         d_fd_macros="$undef"
9123                 fi
9124         else
9125         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9126                 d_fd_set="$undef"
9127                 d_fds_bits="$undef"
9128                 d_fd_macros="$undef"
9129         fi
9130 fi
9131 $rm -f fd_set*
9132
9133 : see if fgetpos exists
9134 set fgetpos d_fgetpos
9135 eval $inlibc
9136
9137 : see if flock exists
9138 set flock d_flock
9139 eval $inlibc
9140
9141 : see if fork exists
9142 set fork d_fork
9143 eval $inlibc
9144
9145 : see if pathconf exists
9146 set pathconf d_pathconf
9147 eval $inlibc
9148
9149 : see if fpathconf exists
9150 set fpathconf d_fpathconf
9151 eval $inlibc
9152
9153
9154 : check for fpos64_t
9155 echo " "
9156 echo "Checking to see if you have fpos64_t..." >&4
9157 $cat >try.c <<EOCP
9158 #include <stdio.h>
9159 int main() { fpos64_t x = 7; }
9160 EOCP
9161 set try
9162 if eval $compile; then
9163         val="$define"
9164         echo "You have fpos64_t."
9165 else
9166         val="$undef"
9167         echo "You do not have fpos64_t."
9168         case "$fpossize" in
9169         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9170         esac
9171 fi
9172 $rm -f try.* try
9173 set d_fpos64_t
9174 eval $setvar
9175
9176 : see if frexpl exists
9177 set frexpl d_frexpl
9178 eval $inlibc
9179
9180 hasstruct='varname=$1; struct=$2; shift; shift;
9181 while $test $# -ge 2; do
9182         case "$1" in
9183         $define) echo "#include <$2>";;
9184         esac ;
9185     shift 2;
9186 done > try.c;
9187 echo "int main () { struct $struct foo; }" >> try.c;
9188 set try;
9189 if eval $compile; then
9190         val="$define";
9191 else
9192         val="$undef";
9193 fi;
9194 set $varname;
9195 eval $setvar;
9196 $rm -f try.c try.o'
9197
9198 : see if this is a sys/param system
9199 set sys/param.h i_sysparam
9200 eval $inhdr
9201
9202 : see if this is a sys/mount.h system
9203 set sys/mount.h i_sysmount
9204 eval $inhdr
9205
9206 : see if sys/types.h has to be included
9207 set sys/types.h i_systypes
9208 eval $inhdr
9209
9210
9211 echo " "
9212 echo "Checking to see if your system supports struct fs_data..." >&4
9213 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9214 eval $hasstruct
9215 case "$d_fs_data_s" in
9216 "$define")      echo "Yes, it does."   ;;
9217 *)              echo "No, it doesn't." ;;
9218 esac
9219
9220 : see if fseeko exists
9221 set fseeko d_fseeko
9222 eval $inlibc
9223 case "$longsize" in
9224 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9225 esac
9226
9227 : see if fsetpos exists
9228 set fsetpos d_fsetpos
9229 eval $inlibc
9230
9231
9232 : see if fstatfs exists
9233 set fstatfs d_fstatfs
9234 eval $inlibc
9235
9236
9237 : see if statvfs exists
9238 set statvfs d_statvfs
9239 eval $inlibc
9240
9241 : see if fstatvfs exists
9242 set fstatvfs d_fstatvfs
9243 eval $inlibc
9244
9245
9246 : see if ftello exists
9247 set ftello d_ftello
9248 eval $inlibc
9249 case "$longsize" in
9250 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9251 esac
9252
9253 : see if getcwd exists
9254 set getcwd d_getcwd
9255 eval $inlibc
9256
9257 : see if getespwnam exists
9258 set getespwnam d_getespwnam
9259 eval $inlibc
9260
9261
9262 : see if getfsstat exists
9263 set getfsstat d_getfsstat
9264 eval $inlibc
9265
9266 : see if getgrent exists
9267 set getgrent d_getgrent
9268 eval $inlibc
9269
9270 : see if gethostbyaddr exists
9271 set gethostbyaddr d_gethbyaddr
9272 eval $inlibc
9273
9274 : see if gethostbyname exists
9275 set gethostbyname d_gethbyname
9276 eval $inlibc
9277
9278 : see if gethostent exists
9279 set gethostent d_gethent
9280 eval $inlibc
9281
9282 : see how we will look up host name
9283 echo " "
9284 call=''
9285 if set gethostname val -f d_gethname; eval $csym; $val; then
9286         echo 'gethostname() found.' >&4
9287         d_gethname="$define"
9288         call=gethostname
9289 fi
9290 if set uname val -f d_uname; eval $csym; $val; then
9291         if ./xenix; then
9292                 $cat <<'EOM'
9293 uname() was found, but you're running xenix, and older versions of xenix
9294 have a broken uname(). If you don't really know whether your xenix is old
9295 enough to have a broken system call, use the default answer.
9296
9297 EOM
9298                 dflt=y
9299                 case "$d_uname" in
9300                 "$define") dflt=n;;
9301                 esac
9302                 rp='Is your uname() broken?'
9303                 . ./myread
9304                 case "$ans" in
9305                 n*) d_uname="$define"; call=uname;;
9306                 esac
9307         else
9308                 echo 'uname() found.' >&4
9309                 d_uname="$define"
9310                 case "$call" in
9311                 '') call=uname ;;
9312                 esac
9313         fi
9314 fi
9315 case "$d_gethname" in
9316 '') d_gethname="$undef";;
9317 esac
9318 case "$d_uname" in
9319 '') d_uname="$undef";;
9320 esac
9321 case "$d_uname$d_gethname" in
9322 *define*)
9323         dflt=n
9324         cat <<EOM
9325  
9326 Every now and then someone has a $call() that lies about the hostname
9327 but can't be fixed for political or economic reasons.  If you wish, I can
9328 pretend $call() isn't there and maybe compute hostname at run-time
9329 thanks to the '$phostname' command.
9330
9331 EOM
9332         rp="Shall I ignore $call() from now on?"
9333         . ./myread
9334         case "$ans" in
9335         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9336         esac;;
9337 esac
9338 case "$phostname" in
9339 '') aphostname='';;
9340 *) case "$aphostname" in
9341         /*) ;;
9342         *) set X $phostname
9343                 shift
9344                 file=$1
9345                 shift
9346                 file=`./loc $file $file $pth`
9347                 aphostname=`echo $file $*`
9348                 ;;
9349         esac
9350         ;;
9351 esac
9352 case "$d_uname$d_gethname" in
9353 *define*) ;;
9354 *)
9355         case "$phostname" in
9356         '')
9357                 echo "There will be no way for $package to get your hostname." >&4;;
9358         *)
9359         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9360                 ;;
9361         esac;;
9362 esac
9363 case "$d_phostname" in
9364 '') d_phostname="$undef";;
9365 esac
9366
9367 : see if this is a netdb.h system
9368 set netdb.h i_netdb
9369 eval $inhdr
9370
9371 : see if prototypes for various gethostxxx netdb.h functions are available
9372 echo " "
9373 set d_gethostprotos gethostent $i_netdb netdb.h
9374 eval $hasproto
9375
9376 : see if getlogin exists
9377 set getlogin d_getlogin
9378 eval $inlibc
9379
9380 : see if getmnt exists
9381 set getmnt d_getmnt
9382 eval $inlibc
9383
9384 : see if getmntent exists
9385 set getmntent d_getmntent
9386 eval $inlibc
9387
9388 : see if getnetbyaddr exists
9389 set getnetbyaddr d_getnbyaddr
9390 eval $inlibc
9391
9392 : see if getnetbyname exists
9393 set getnetbyname d_getnbyname
9394 eval $inlibc
9395
9396 : see if getnetent exists
9397 set getnetent d_getnent
9398 eval $inlibc
9399
9400 : see if prototypes for various getnetxxx netdb.h functions are available
9401 echo " "
9402 set d_getnetprotos getnetent $i_netdb netdb.h
9403 eval $hasproto
9404
9405
9406 : see if getprotobyname exists
9407 set getprotobyname d_getpbyname
9408 eval $inlibc
9409
9410 : see if getprotobynumber exists
9411 set getprotobynumber d_getpbynumber
9412 eval $inlibc
9413
9414 : see if getprotoent exists
9415 set getprotoent d_getpent
9416 eval $inlibc
9417
9418 : see if getpgid exists
9419 set getpgid d_getpgid
9420 eval $inlibc
9421
9422 : see if getpgrp2 exists
9423 set getpgrp2 d_getpgrp2
9424 eval $inlibc
9425
9426 : see if getppid exists
9427 set getppid d_getppid
9428 eval $inlibc
9429
9430 : see if getpriority exists
9431 set getpriority d_getprior
9432 eval $inlibc
9433
9434 : see if prototypes for various getprotoxxx netdb.h functions are available
9435 echo " "
9436 set d_getprotoprotos getprotoent $i_netdb netdb.h
9437 eval $hasproto
9438
9439 : see if getprpwnam exists
9440 set getprpwnam d_getprpwnam
9441 eval $inlibc
9442
9443 : see if getpwent exists
9444 set getpwent d_getpwent
9445 eval $inlibc
9446
9447
9448 : see if getservbyname exists
9449 set getservbyname d_getsbyname
9450 eval $inlibc
9451
9452 : see if getservbyport exists
9453 set getservbyport d_getsbyport
9454 eval $inlibc
9455
9456 : see if getservent exists
9457 set getservent d_getsent
9458 eval $inlibc
9459
9460 : see if prototypes for various getservxxx netdb.h functions are available
9461 echo " "
9462 set d_getservprotos getservent $i_netdb netdb.h
9463 eval $hasproto
9464
9465 : see if getspnam exists
9466 set getspnam d_getspnam
9467 eval $inlibc
9468
9469 : see if gettimeofday or ftime exists
9470 set gettimeofday d_gettimeod
9471 eval $inlibc
9472 case "$d_gettimeod" in
9473 "$undef")
9474         set ftime d_ftime 
9475         eval $inlibc
9476         ;;
9477 *)
9478         val="$undef"; set d_ftime; eval $setvar
9479         ;;
9480 esac
9481 case "$d_gettimeod$d_ftime" in
9482 "$undef$undef")
9483         echo " "
9484         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9485         ;;
9486 esac
9487
9488 : see if this is an grp system
9489 set grp.h i_grp
9490 eval $inhdr
9491
9492 case "$i_grp" in
9493 $define)
9494         xxx=`./findhdr grp.h`
9495         $cppstdin $cppflags $cppminus < $xxx >$$.h
9496
9497         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9498                 val="$define"
9499         else
9500                 val="$undef"
9501         fi
9502         set d_grpasswd
9503         eval $setvar
9504
9505         $rm -f $$.h
9506         ;;
9507 *)
9508         val="$undef";
9509         set d_grpasswd; eval $setvar
9510         ;;
9511 esac
9512
9513 : see if hasmntopt exists
9514 set hasmntopt d_hasmntopt
9515 eval $inlibc
9516
9517 : see if this is a netinet/in.h or sys/in.h system
9518 set netinet/in.h i_niin sys/in.h i_sysin
9519 eval $inhdr
9520
9521 : see if arpa/inet.h has to be included
9522 set arpa/inet.h i_arpainet
9523 eval $inhdr
9524
9525 : see if htonl --and friends-- exists
9526 val=''
9527 set htonl val
9528 eval $inlibc
9529
9530 : Maybe they are macros.
9531 case "$val" in
9532 $undef)
9533         $cat >htonl.c <<EOM
9534 #include <stdio.h>
9535 #include <sys/types.h>
9536 #$i_niin I_NETINET_IN
9537 #$i_sysin I_SYS_IN
9538 #$i_arpainet I_ARPA_INET
9539 #ifdef I_NETINET_IN
9540 #include <netinet/in.h>
9541 #endif
9542 #ifdef I_SYS_IN
9543 #include <sys/in.h>
9544 #endif
9545 #ifdef I_ARPA_INET
9546 #include <arpa/inet.h>
9547 #endif
9548 #ifdef htonl
9549 printf("Defined as a macro.");
9550 #endif
9551 EOM
9552         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9553         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9554                 val="$define"
9555                 echo "But it seems to be defined as a macro." >&4
9556         fi
9557         $rm -f htonl.?
9558         ;;
9559 esac
9560 set d_htonl
9561 eval $setvar
9562
9563 : see if iconv exists
9564 set iconv d_iconv
9565 eval $inlibc
9566
9567 : index or strchr
9568 echo " "
9569 if set index val -f; eval $csym; $val; then
9570         if set strchr val -f d_strchr; eval $csym; $val; then
9571                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9572                         val="$define"
9573                         vali="$undef"
9574                         echo "strchr() found." >&4
9575                 else
9576                         val="$undef"
9577                         vali="$define"
9578                         echo "index() found." >&4
9579                 fi
9580         else
9581                 val="$undef"
9582                 vali="$define"
9583                 echo "index() found." >&4
9584         fi
9585 else
9586         if set strchr val -f d_strchr; eval $csym; $val; then
9587                 val="$define"
9588                 vali="$undef"
9589                 echo "strchr() found." >&4
9590         else
9591                 echo "No index() or strchr() found!" >&4
9592                 val="$undef"
9593                 vali="$undef"
9594         fi
9595 fi
9596 set d_strchr; eval $setvar
9597 val="$vali"
9598 set d_index; eval $setvar
9599
9600 : check whether inet_aton exists
9601 set inet_aton d_inetaton
9602 eval $inlibc
9603
9604 : see if inttypes.h is available
9605 : we want a real compile instead of Inhdr because some systems
9606 : have an inttypes.h which includes non-existent headers
9607 echo " "
9608 $cat >try.c <<EOCP
9609 #include <inttypes.h>
9610 int main() {
9611         static int32_t foo32 = 0x12345678;
9612 }
9613 EOCP
9614 set try
9615 if eval $compile; then
9616         echo "<inttypes.h> found." >&4
9617         val="$define"
9618 else
9619         echo "<inttypes.h> NOT found." >&4
9620         val="$undef"
9621 fi
9622 $rm -f try.c try
9623 set i_inttypes
9624 eval $setvar
9625
9626 : check for int64_t
9627 echo " "
9628 echo "Checking to see if you have int64_t..." >&4
9629 $cat >try.c <<EOCP
9630 #include <sys/types.h>
9631 #$i_inttypes I_INTTYPES
9632 #ifdef I_INTTYPES
9633 #include <inttypes.h>
9634 #endif
9635 int main() { int64_t x = 7; }
9636 EOCP
9637 set try
9638 if eval $compile; then
9639         val="$define"
9640         echo "You have int64_t."
9641 else
9642         val="$undef"
9643         echo "You do not have int64_t."
9644 fi
9645 $rm -f try try.*
9646 set d_int64_t
9647 eval $setvar
9648
9649 : Look for isascii
9650 echo " "
9651 $cat >isascii.c <<'EOCP'
9652 #include <stdio.h>
9653 #include <ctype.h>
9654 int main() {
9655         int c = 'A';
9656         if (isascii(c))
9657                 exit(0);
9658         else
9659                 exit(1);
9660 }
9661 EOCP
9662 set isascii
9663 if eval $compile; then
9664         echo "isascii() found." >&4
9665         val="$define"
9666 else
9667         echo "isascii() NOT found." >&4
9668         val="$undef"
9669 fi
9670 set d_isascii
9671 eval $setvar
9672 $rm -f isascii*
9673
9674 : see if isnan exists
9675 set isnan d_isnan
9676 eval $inlibc
9677
9678 : see if isnanl exists
9679 set isnanl d_isnanl
9680 eval $inlibc
9681
9682 : see if killpg exists
9683 set killpg d_killpg
9684 eval $inlibc
9685
9686 : see if lchown exists
9687 echo " "
9688 $cat > try.c <<'EOCP'
9689 /* System header to define __stub macros and hopefully few prototypes,
9690     which can conflict with char lchown(); below.  */
9691 #include <assert.h>
9692 /* Override any gcc2 internal prototype to avoid an error.  */
9693 /* We use char because int might match the return type of a gcc2
9694    builtin and then its argument prototype would still apply.  */
9695 char lchown();
9696 int main() {
9697     /*  The GNU C library defines this for functions which it implements
9698         to always fail with ENOSYS.  Some functions are actually named
9699         something starting with __ and the normal name is an alias.  */
9700 #if defined (__stub_lchown) || defined (__stub___lchown)
9701 choke me
9702 #else
9703 lchown();
9704 #endif
9705 ; return 0; }
9706 EOCP
9707 set try
9708 if eval $compile; then
9709     $echo "lchown() found." >&4
9710     val="$define"
9711 else
9712     $echo "lchown() NOT found." >&4
9713     val="$undef"
9714 fi
9715 set d_lchown
9716 eval $setvar
9717
9718 : See if number of significant digits in a double precision number is known
9719 echo " "
9720 $cat >ldbl_dig.c <<EOM
9721 #$i_limits I_LIMITS
9722 #$i_float I_FLOAT
9723 #ifdef I_LIMITS
9724 #include <limits.h>
9725 #endif
9726 #ifdef I_FLOAT
9727 #include <float.h>
9728 #endif
9729 #ifdef LDBL_DIG
9730 printf("Contains LDBL_DIG");
9731 #endif
9732 EOM
9733 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9734 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9735         echo "LDBL_DIG found." >&4
9736         val="$define"
9737 else
9738         echo "LDBL_DIG NOT found." >&4
9739         val="$undef"
9740 fi
9741 $rm -f ldbl_dig.?
9742 set d_ldbl_dig
9743 eval $setvar
9744
9745 : see if link exists
9746 set link d_link
9747 eval $inlibc
9748
9749 : see if localeconv exists
9750 set localeconv d_locconv
9751 eval $inlibc
9752
9753 : see if lockf exists
9754 set lockf d_lockf
9755 eval $inlibc
9756
9757 : check for long long
9758 echo " "
9759 echo "Checking to see if you have long long..." >&4
9760 echo 'int main() { long long x = 7; return 0; }' > try.c
9761 set try
9762 if eval $compile; then
9763         val="$define"
9764         echo "You have long long."
9765 else
9766         val="$undef"
9767         echo "You do not have long long."
9768 fi
9769 $rm try.*
9770 set d_longlong
9771 eval $setvar
9772
9773 : check for length of long long
9774 case "${d_longlong}${longlongsize}" in
9775 $define)
9776         echo " "
9777         echo "Checking to see how big your long longs are..." >&4
9778         $cat >try.c <<'EOCP'
9779 #include <stdio.h>
9780 int main()
9781 {
9782     printf("%d\n", (int)sizeof(long long));
9783     return(0);
9784 }
9785 EOCP
9786         set try
9787         if eval $compile_ok; then
9788                 longlongsize=`./try$exe_ext`
9789                 echo "Your long longs are $longlongsize bytes long."
9790         else
9791                 dflt='8'
9792                 echo " "
9793                 echo "(I can't seem to compile the test program.  Guessing...)"
9794                 rp="What is the size of a long long (in bytes)?"
9795                 . ./myread
9796                 longlongsize="$ans"
9797         fi
9798         if $test "X$longsize" = "X$longlongsize"; then
9799                 echo "(That isn't any different from an ordinary long.)"
9800         fi      
9801         ;;
9802 esac
9803 $rm -f try.* try
9804
9805 : see if prototype for lseek is available
9806 echo " "
9807 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9808 eval $hasproto
9809
9810 : see if lstat exists
9811 set lstat d_lstat
9812 eval $inlibc
9813
9814 : see if madvise exists
9815 set madvise d_madvise
9816 eval $inlibc
9817
9818 : see if mblen exists
9819 set mblen d_mblen
9820 eval $inlibc
9821
9822 : see if mbstowcs exists
9823 set mbstowcs d_mbstowcs
9824 eval $inlibc
9825
9826 : see if mbtowc exists
9827 set mbtowc d_mbtowc
9828 eval $inlibc
9829
9830 : see if memchr exists
9831 set memchr d_memchr
9832 eval $inlibc
9833
9834 : see if memcmp exists
9835 set memcmp d_memcmp
9836 eval $inlibc
9837
9838 : see if memcpy exists
9839 set memcpy d_memcpy
9840 eval $inlibc
9841
9842 : see if memmove exists
9843 set memmove d_memmove
9844 eval $inlibc
9845
9846 : see if memset exists
9847 set memset d_memset
9848 eval $inlibc
9849
9850 : see if mkdir exists
9851 set mkdir d_mkdir
9852 eval $inlibc
9853
9854 : see if mkdtemp exists
9855 set mkdtemp d_mkdtemp
9856 eval $inlibc
9857
9858 : see if mkfifo exists
9859 set mkfifo d_mkfifo
9860 eval $inlibc
9861
9862 : see if mkstemp exists
9863 set mkstemp d_mkstemp
9864 eval $inlibc
9865
9866 : see if mkstemps exists
9867 set mkstemps d_mkstemps
9868 eval $inlibc
9869
9870 : see if mktime exists
9871 set mktime d_mktime
9872 eval $inlibc
9873
9874 : see if this is a sys/mman.h system
9875 set sys/mman.h i_sysmman
9876 eval $inhdr
9877
9878 : see if mmap exists
9879 set mmap d_mmap
9880 eval $inlibc
9881 : see what shmat returns
9882 : default to something harmless
9883 mmaptype='void *'
9884 case "$i_sysmman$d_mmap" in
9885 "$define$define")
9886         $cat >mmap.c <<'END'
9887 #include <sys/mman.h>
9888 void *mmap();
9889 END
9890         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9891                 mmaptype='void *'
9892         else
9893                 mmaptype='caddr_t'
9894         fi
9895         echo "and it returns ($mmaptype)." >&4
9896         ;;
9897 esac
9898
9899
9900
9901 : see if modfl exists
9902 set modfl d_modfl
9903 eval $inlibc
9904
9905 : see if mprotect exists
9906 set mprotect d_mprotect
9907 eval $inlibc
9908
9909 : see if msgctl exists
9910 set msgctl d_msgctl
9911 eval $inlibc
9912
9913 : see if msgget exists
9914 set msgget d_msgget
9915 eval $inlibc
9916
9917 : see if msgsnd exists
9918 set msgsnd d_msgsnd
9919 eval $inlibc
9920
9921 : see if msgrcv exists
9922 set msgrcv d_msgrcv
9923 eval $inlibc
9924
9925 : see how much of the 'msg*(2)' library is present.
9926 h_msg=true
9927 echo " "
9928 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9929 *"$undef"*) h_msg=false;;
9930 esac
9931 case "$osname" in
9932 freebsd)
9933     case "`ipcs 2>&1`" in
9934     "SVID messages"*"not configured"*)
9935         echo "Your $osname does not have the msg*(2) configured." >&4
9936         h_msg=false
9937         val="$undef"
9938         set msgctl d_msgctl
9939         eval $setvar
9940         set msgget d_msgget
9941         eval $setvar
9942         set msgsnd d_msgsnd
9943         eval $setvar
9944         set msgrcv d_msgrcv
9945         eval $setvar
9946         ;;
9947     esac
9948     ;;
9949 esac
9950 : we could also check for sys/ipc.h ...
9951 if $h_msg && $test `./findhdr sys/msg.h`; then
9952         echo "You have the full msg*(2) library." >&4
9953         val="$define"
9954 else
9955         echo "You don't have the full msg*(2) library." >&4
9956         val="$undef"
9957 fi
9958 set d_msg
9959 eval $setvar
9960
9961 : see if msync exists
9962 set msync d_msync
9963 eval $inlibc
9964
9965 : see if munmap exists
9966 set munmap d_munmap
9967 eval $inlibc
9968
9969 : see if nice exists
9970 set nice d_nice
9971 eval $inlibc
9972
9973
9974 echo " "
9975 echo "Checking which 64-bit integer type we could use..." >&4
9976
9977 case "$intsize" in
9978 8) val=int
9979    set quadtype
9980    eval $setvar
9981    val='"unsigned int"'
9982    set uquadtype
9983    eval $setvar
9984    quadkind=1
9985    ;;
9986 *) case "$longsize" in
9987    8) val=long
9988       set quadtype
9989       eval $setvar
9990       val='"unsigned long"'
9991       set uquadtype
9992       eval $setvar
9993       quadkind=2
9994       ;;
9995    *) case "$d_longlong:$longlongsize" in
9996       define:8)
9997         val='"long long"'
9998         set quadtype
9999         eval $setvar
10000         val='"unsigned long long"'
10001         set uquadtype
10002         eval $setvar
10003         quadkind=3
10004         ;;
10005       *) case "$d_int64_t" in
10006          define)
10007            val=int64_t
10008            set quadtype
10009            eval $setvar
10010            val=uint64_t
10011            set uquadtype
10012            eval $setvar
10013            quadkind=4
10014            ;;
10015          esac
10016          ;;
10017       esac
10018       ;;
10019    esac
10020    ;;
10021 esac
10022
10023 case "$quadtype" in
10024 '')     echo "Alas, no 64-bit integer types in sight." >&4
10025         d_quad="$undef"
10026         ;;
10027 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10028             verb="will"
10029         else
10030             verb="could"
10031         fi
10032         echo "We $verb use '$quadtype' for 64-bit integers." >&4
10033         d_quad="$define"
10034         ;;
10035 esac
10036
10037 : check for length of character
10038 echo " "
10039 case "$charsize" in
10040 '')
10041         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10042         $cat >try.c <<'EOCP'
10043 #include <stdio.h>
10044 int main()
10045 {
10046     printf("%d\n", (int)sizeof(char));
10047     exit(0);
10048 }
10049 EOCP
10050         set try
10051         if eval $compile_ok; then
10052                 dflt=`./try`
10053         else
10054                 dflt='1'
10055                 echo "(I can't seem to compile the test program.  Guessing...)"
10056         fi
10057         ;;
10058 *)
10059         dflt="$charsize"
10060         ;;
10061 esac
10062 rp="What is the size of a character (in bytes)?"
10063 . ./myread
10064 charsize="$ans"
10065 $rm -f try.c try
10066
10067
10068 echo " "
10069 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10070
10071 case "$use64bitint:$d_quad:$quadtype" in
10072 define:define:?*)
10073         ivtype="$quadtype"
10074         uvtype="$uquadtype"
10075         ivsize=8
10076         uvsize=8
10077         ;;
10078 *)      ivtype="long"
10079         uvtype="unsigned long"
10080         ivsize=$longsize
10081         uvsize=$longsize
10082         ;;
10083 esac
10084
10085 case "$uselongdouble:$d_longdbl" in
10086 define:define)
10087         nvtype="long double"
10088         nvsize=$longdblsize
10089         ;;
10090 *)      nvtype=double
10091         nvsize=$doublesize
10092         ;;
10093 esac
10094
10095 $echo "(IV will be "$ivtype", $ivsize bytes)"
10096 $echo "(UV will be "$uvtype", $uvsize bytes)"
10097 $echo "(NV will be "$nvtype", $nvsize bytes)"
10098
10099 $cat >try.c <<EOCP
10100 #$i_inttypes I_INTTYPES
10101 #ifdef I_INTTYPES
10102 #include <inttypes.h>
10103 #endif
10104 #include <stdio.h>
10105 int main() {
10106 #ifdef INT8
10107    int8_t i =  INT8_MAX;
10108   uint8_t u = UINT8_MAX;
10109   printf("int8_t\n");
10110 #endif
10111 #ifdef INT16
10112    int16_t i =  INT16_MAX;
10113   uint16_t i = UINT16_MAX;
10114   printf("int16_t\n");
10115 #endif
10116 #ifdef INT32
10117    int32_t i =  INT32_MAX;
10118   uint32_t u = UINT32_MAX;
10119   printf("int32_t\n");
10120 #endif
10121 }
10122 EOCP
10123
10124 case "$i8type" in
10125 '')     case "$charsize" in
10126         1)      i8type=char
10127                 u8type="unsigned char"
10128                 i8size=$charsize
10129                 u8size=$charsize
10130                 ;;
10131         esac
10132         ;;
10133 esac
10134 case "$i8type" in
10135 '')     set try -DINT8
10136         if eval $compile; then
10137                 case "`./try$exe_ext`" in
10138                 int8_t) i8type=int8_t
10139                         u8type=uint8_t
10140                         i8size=1
10141                         u8size=1
10142                         ;;
10143                 esac
10144         fi
10145         ;;
10146 esac
10147 case "$i8type" in
10148 '')     if $test $charsize -ge 1; then
10149                 i8type=char
10150                 u8type="unsigned char"
10151                 i8size=$charsize
10152                 u8size=$charsize
10153         fi
10154         ;;
10155 esac
10156
10157 case "$i16type" in
10158 '')     case "$shortsize" in
10159         2)      i16type=short
10160                 u16type="unsigned short"
10161                 i16size=$shortsize
10162                 u16size=$shortsize
10163                 ;;
10164         esac
10165         ;;
10166 esac
10167 case "$i16type" in
10168 '')     set try -DINT16
10169         if eval $compile; then
10170                 case "`./try$exe_ext`" in
10171                 int16_t)
10172                         i16type=int16_t
10173                         u16type=uint16_t
10174                         i16size=2
10175                         u16size=2
10176                         ;;
10177                 esac
10178         fi
10179         ;;
10180 esac
10181 case "$i16type" in
10182 '')     if $test $shortsize -ge 2; then
10183                 i16type=short
10184                 u16type="unsigned short"
10185                 i16size=$shortsize
10186                 u16size=$shortsize
10187         fi
10188         ;;
10189 esac
10190
10191 case "$i32type" in
10192 '')     case "$longsize" in
10193         4)      i32type=long
10194                 u32type="unsigned long"
10195                 i32size=$longsize
10196                 u32size=$longsize
10197                 ;;
10198         *)      case "$intsize" in
10199                 4)      i32type=int
10200                         u32type="unsigned int"
10201                         i32size=$intsize
10202                         u32size=$intsize
10203                         ;;
10204                 esac
10205                 ;;
10206         esac
10207         ;;
10208 esac
10209 case "$i32type" in
10210 '')     set try -DINT32
10211         if eval $compile; then
10212                 case "`./try$exe_ext`" in
10213                 int32_t)
10214                         i32type=int32_t
10215                         u32type=uint32_t
10216                         i32size=4
10217                         u32size=4
10218                         ;;
10219                 esac
10220         fi
10221         ;;
10222 esac
10223 case "$i32type" in
10224 '')     if $test $intsize -ge 4; then
10225                 i32type=int
10226                 u32type="unsigned int"
10227                 i32size=$intsize
10228                 u32size=$intsize
10229         fi
10230         ;;
10231 esac
10232
10233 case "$i64type" in
10234 '')     case "$d_quad:$quadtype" in
10235         define:?*)
10236                 i64type="$quadtype"
10237                 u64type="$uquadtype"
10238                 i64size=8
10239                 u64size=8
10240                 ;;
10241         esac
10242         ;;
10243 esac
10244
10245 $echo "Checking whether your NVs can preserve your UVs..." >&4
10246 $cat <<EOP >try.c
10247 #include <stdio.h>
10248 int main() {
10249     $uvtype k = ($uvtype)~0, l;
10250     $nvtype d;
10251     l = k;
10252     d = ($nvtype)l;
10253     l = ($uvtype)d;
10254     if (l == k)
10255        printf("preserve\n");
10256     exit(0);
10257 }
10258 EOP
10259 set try
10260 if eval $compile; then
10261         case "`./try$exe_ext`" in
10262         preserve) d_nv_preserves_uv="$define" ;;
10263         esac
10264 fi      
10265 case "$d_nv_preserves_uv" in
10266 $define) $echo "Yes, they can."  2>&1 ;;
10267 *)       $echo "No, they can't." 2>&1
10268          d_nv_preserves_uv="$undef"
10269          ;;
10270 esac
10271
10272 $rm -f try.* try
10273
10274 case "$d_nv_preserves_uv" in
10275 "$define") d_nv_preserves_uv_bits=`expr $uvsize \* 8` ;;
10276 *)      $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10277         $cat <<EOP >try.c
10278 #include <stdio.h>
10279 int main() {
10280     $uvtype u = 0;
10281     int     n = 8 * $uvsize;
10282     int     i;
10283     for (i = 0; i < n; i++) {
10284       u = u << 1 | ($uvtype)1;
10285       if (($uvtype)($nvtype)u != u)
10286         break;
10287     }
10288     printf("%d\n", i);
10289     exit(0);
10290 }
10291 EOP
10292         set try
10293         if eval $compile; then
10294                 d_nv_preserves_uv_bits="`./try$exe_ext`"
10295         fi
10296         case "$d_nv_preserves_uv_bits" in
10297         [1-9]*) $echo "Your NVs can preserve $d_nv_preserves_uv_bits bits of your UVs."  2>&1 ;;
10298         *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
10299                 d_nv_preserves_uv_bits="$undef"
10300                 ;;
10301         esac
10302         $rm -f try.* try
10303         ;;
10304 esac
10305
10306
10307
10308 : check for off64_t
10309 echo " "
10310 echo "Checking to see if you have off64_t..." >&4
10311 $cat >try.c <<EOCP
10312 #include <sys/types.h>
10313 #include <unistd.h>
10314 int main() { off64_t x = 7; }
10315 EOCP
10316 set try
10317 if eval $compile; then
10318         val="$define"
10319         echo "You have off64_t."
10320 else
10321         val="$undef"
10322         echo "You do not have off64_t."
10323         case "$lseeksize" in
10324         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10325         esac
10326 fi
10327 $rm -f try.* try
10328 set d_off64_t
10329 eval $setvar
10330
10331 : see if POSIX threads are available
10332 set pthread.h i_pthread
10333 eval $inhdr
10334
10335
10336
10337
10338 : how to create joinable pthreads
10339 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10340         echo " "
10341         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10342         $cat >try.c <<'EOCP'
10343 #include <pthread.h>
10344 int main() {
10345     int detachstate = JOINABLE;
10346 }
10347 EOCP
10348         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10349         if eval $compile; then
10350                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10351                 val="$undef" # Yes, undef.
10352                 set d_old_pthread_create_joinable
10353                 eval $setvar
10354                 val=""
10355                 set old_pthread_create_joinable
10356                 eval $setvar
10357         else
10358                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10359                 if eval $compile; then
10360                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10361                         val="$define"
10362                         set d_old_pthread_create_joinable
10363                         eval $setvar
10364                         val=PTHREAD_CREATE_UNDETACHED
10365                         set old_pthread_create_joinable
10366                         eval $setvar
10367                 else            
10368                         set try -DJOINABLE=__UNDETACHED
10369                         if eval $compile; then
10370                                 echo "You seem to use __UNDETACHED." >&4
10371                                 val="$define"
10372                                 set d_old_pthread_create_joinable
10373                                 eval $setvar
10374                                 val=__UNDETACHED
10375                                 set old_pthread_create_joinable
10376                                 eval $setvar
10377                         else
10378                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10379                                 val="$define"
10380                                 set d_old_pthread_create_joinable
10381                                 eval $setvar
10382                                 val=0
10383                                 set old_pthread_create_joinable
10384                                 eval $setvar
10385                         fi
10386                 fi
10387         fi
10388         $rm -f try try.*
10389 else
10390     d_old_pthread_create_joinable="$undef"
10391     old_pthread_create_joinable=""
10392 fi
10393
10394 : see if pause exists
10395 set pause d_pause
10396 eval $inlibc
10397
10398 : see if pipe exists
10399 set pipe d_pipe
10400 eval $inlibc
10401
10402 : see if poll exists
10403 set poll d_poll
10404 eval $inlibc
10405
10406
10407 : see whether the various POSIXish _yields exist
10408 $cat >try.c <<EOP
10409 #include <pthread.h>
10410 #include <stdio.h>
10411 int main() {
10412 #ifdef SCHED_YIELD
10413         sched_yield();
10414 #else
10415 #ifdef PTHREAD_YIELD
10416         pthread_yield();
10417 #else
10418 #ifdef PTHREAD_YIELD_NULL
10419         pthread_yield(NULL);
10420 #endif
10421 #endif
10422 #endif
10423 }
10424 EOP
10425 : see if sched_yield exists
10426 set try -DSCHED_YIELD
10427 if eval $compile; then
10428     val="$define"
10429     sched_yield='sched_yield()'
10430 else
10431     val="$undef"
10432 fi
10433 case "$usethreads" in
10434 $define)
10435         case "$val" in
10436         $define) echo 'sched_yield() found.' >&4        ;;
10437         *)       echo 'sched_yield() NOT found.' >&4    ;;
10438         esac
10439 esac
10440 set d_sched_yield
10441 eval $setvar
10442
10443 : see if pthread_yield exists
10444 set try -DPTHREAD_YIELD
10445 if eval $compile; then
10446     val="$define"
10447     case "$sched_yield" in
10448     '') sched_yield='pthread_yield()' ;;
10449     esac
10450 else
10451     set try -DPTHREAD_YIELD_NULL
10452     if eval $compile; then
10453         val="$define"
10454         case "$sched_yield" in
10455         '') sched_yield='pthread_yield(NULL)' ;;
10456         esac
10457     else
10458         val="$undef"
10459     fi
10460 fi
10461 case "$usethreads" in
10462 $define)
10463         case "$val" in
10464         $define) echo 'pthread_yield() found.' >&4      ;;
10465         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10466         esac
10467         ;;
10468 esac
10469 set d_pthread_yield
10470 eval $setvar
10471
10472 case "$sched_yield" in
10473 '') sched_yield=undef ;;
10474 esac
10475
10476 $rm -f try try.*
10477
10478 : see if this is a pwd.h system
10479 set pwd.h i_pwd
10480 eval $inhdr
10481
10482 case "$i_pwd" in
10483 $define)
10484         xxx=`./findhdr pwd.h`
10485         $cppstdin $cppflags $cppminus < $xxx >$$.h
10486
10487         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10488                 val="$define"
10489         else
10490                 val="$undef"
10491         fi
10492         set d_pwquota
10493         eval $setvar
10494
10495         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10496                 val="$define"
10497         else
10498                 val="$undef"
10499         fi
10500         set d_pwage
10501         eval $setvar
10502
10503         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10504                 val="$define"
10505         else
10506                 val="$undef"
10507         fi
10508         set d_pwchange
10509         eval $setvar
10510
10511         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10512                 val="$define"
10513         else
10514                 val="$undef"
10515         fi
10516         set d_pwclass
10517         eval $setvar
10518
10519         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10520                 val="$define"
10521         else
10522                 val="$undef"
10523         fi
10524         set d_pwexpire
10525         eval $setvar
10526
10527         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10528                 val="$define"
10529         else
10530                 val="$undef"
10531         fi
10532         set d_pwcomment
10533         eval $setvar
10534
10535         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10536                 val="$define"
10537         else
10538                 val="$undef"
10539         fi
10540         set d_pwgecos
10541         eval $setvar
10542
10543         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10544                 val="$define"
10545         else
10546                 val="$undef"
10547         fi
10548         set d_pwpasswd
10549         eval $setvar
10550
10551         $rm -f $$.h
10552         ;;
10553 *)
10554         val="$undef"; 
10555         set d_pwquota; eval $setvar
10556         set d_pwage; eval $setvar
10557         set d_pwchange; eval $setvar
10558         set d_pwclass; eval $setvar
10559         set d_pwexpire; eval $setvar
10560         set d_pwcomment; eval $setvar
10561         set d_pwgecos; eval $setvar
10562         set d_pwpasswd; eval $setvar
10563         ;;
10564 esac
10565
10566 : see if readdir and friends exist
10567 set readdir d_readdir
10568 eval $inlibc
10569 set seekdir d_seekdir
10570 eval $inlibc
10571 set telldir d_telldir
10572 eval $inlibc
10573 set rewinddir d_rewinddir
10574 eval $inlibc
10575
10576 : see if readlink exists
10577 set readlink d_readlink
10578 eval $inlibc
10579
10580 : see if rename exists
10581 set rename d_rename
10582 eval $inlibc
10583
10584 : see if rmdir exists
10585 set rmdir d_rmdir
10586 eval $inlibc
10587
10588 : see if memory.h is available.
10589 val=''
10590 set memory.h val
10591 eval $inhdr
10592
10593 : See if it conflicts with string.h
10594 case "$val" in
10595 $define)
10596         case "$strings" in
10597         '') ;;
10598         *)
10599                 $cppstdin $cppflags $cppminus < $strings > mem.h
10600                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10601                         echo " "
10602                         echo "We won't be including <memory.h>."
10603                         val="$undef"
10604                 fi
10605                 $rm -f mem.h
10606                 ;;
10607         esac
10608 esac
10609 set i_memory
10610 eval $setvar
10611
10612 : can bcopy handle overlapping blocks?
10613 val="$undef"
10614 case "$d_bcopy" in
10615 "$define")
10616         echo " "
10617         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10618         $cat >try.c <<EOCP
10619 #$i_memory I_MEMORY
10620 #$i_stdlib I_STDLIB
10621 #$i_string I_STRING
10622 #$i_unistd I_UNISTD
10623 EOCP
10624         $cat >>try.c <<'EOCP'
10625 #include <stdio.h>
10626 #ifdef I_MEMORY
10627 #  include <memory.h>
10628 #endif
10629 #ifdef I_STDLIB
10630 #  include <stdlib.h>
10631 #endif
10632 #ifdef I_STRING
10633 #  include <string.h>
10634 #else
10635 #  include <strings.h>
10636 #endif
10637 #ifdef I_UNISTD
10638 #  include <unistd.h>  /* Needed for NetBSD */
10639 #endif
10640 int main()
10641 {
10642 char buf[128], abc[128];
10643 char *b;
10644 int len;
10645 int off;
10646 int align;
10647
10648 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10649
10650 for (align = 7; align >= 0; align--) {
10651         for (len = 36; len; len--) {
10652                 b = buf+align;
10653                 bcopy(abc, b, len);
10654                 for (off = 1; off <= len; off++) {
10655                         bcopy(b, b+off, len);
10656                         bcopy(b+off, b, len);
10657                         if (bcmp(b, abc, len))
10658                                 exit(1);
10659                 }
10660         }
10661 }
10662 exit(0);
10663 }
10664 EOCP
10665         set try
10666         if eval $compile_ok; then
10667                 if ./try 2>/dev/null; then
10668                         echo "Yes, it can."
10669                         val="$define"
10670                 else
10671                         echo "It can't, sorry."
10672                         case "$d_memmove" in
10673                         "$define") echo "But that's Ok since you have memmove()." ;;
10674                         esac
10675                 fi
10676         else
10677                 echo "(I can't compile the test program, so we'll assume not...)"
10678                 case "$d_memmove" in
10679                 "$define") echo "But that's Ok since you have memmove()." ;;
10680                 esac
10681         fi
10682         ;;
10683 esac
10684 $rm -f try.* try core
10685 set d_safebcpy
10686 eval $setvar
10687
10688 : can memcpy handle overlapping blocks?
10689 val="$undef"
10690 case "$d_memcpy" in
10691 "$define")
10692         echo " "
10693         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10694         $cat >try.c <<EOCP
10695 #$i_memory I_MEMORY
10696 #$i_stdlib I_STDLIB
10697 #$i_string I_STRING
10698 #$i_unistd I_UNISTD
10699 EOCP
10700         $cat >>try.c <<'EOCP'
10701 #include <stdio.h>
10702 #ifdef I_MEMORY
10703 #  include <memory.h>
10704 #endif
10705 #ifdef I_STDLIB
10706 #  include <stdlib.h>
10707 #endif
10708 #ifdef I_STRING
10709 #  include <string.h>
10710 #else
10711 #  include <strings.h>
10712 #endif
10713 #ifdef I_UNISTD
10714 #  include <unistd.h>  /* Needed for NetBSD */
10715 #endif
10716 int main()
10717 {
10718 char buf[128], abc[128];
10719 char *b;
10720 int len;
10721 int off;
10722 int align;
10723
10724 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10725    try to store the string in read-only memory. */
10726 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10727
10728 for (align = 7; align >= 0; align--) {
10729         for (len = 36; len; len--) {
10730                 b = buf+align;
10731                 memcpy(b, abc, len);
10732                 for (off = 1; off <= len; off++) {
10733                         memcpy(b+off, b, len);
10734                         memcpy(b, b+off, len);
10735                         if (memcmp(b, abc, len))
10736                                 exit(1);
10737                 }
10738         }
10739 }
10740 exit(0);
10741 }
10742 EOCP
10743         set try
10744         if eval $compile_ok; then
10745                 if ./try 2>/dev/null; then
10746                         echo "Yes, it can."
10747                         val="$define"
10748                 else
10749                         echo "It can't, sorry."
10750                         case "$d_memmove" in
10751                         "$define") echo "But that's Ok since you have memmove()." ;;
10752                         esac
10753                 fi
10754         else
10755                 echo "(I can't compile the test program, so we'll assume not...)"
10756                 case "$d_memmove" in
10757                 "$define") echo "But that's Ok since you have memmove()." ;;
10758                 esac
10759         fi
10760         ;;
10761 esac
10762 $rm -f try.* try core
10763 set d_safemcpy
10764 eval $setvar
10765
10766 : can memcmp be trusted to compare relative magnitude?
10767 val="$undef"
10768 case "$d_memcmp" in
10769 "$define")
10770         echo " "
10771         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10772         $cat >try.c <<EOCP
10773 #$i_memory I_MEMORY
10774 #$i_stdlib I_STDLIB
10775 #$i_string I_STRING
10776 #$i_unistd I_UNISTD
10777 EOCP
10778         $cat >>try.c <<'EOCP'
10779 #include <stdio.h>
10780 #ifdef I_MEMORY
10781 #  include <memory.h>
10782 #endif
10783 #ifdef I_STDLIB
10784 #  include <stdlib.h>
10785 #endif
10786 #ifdef I_STRING
10787 #  include <string.h>
10788 #else
10789 #  include <strings.h>
10790 #endif
10791 #ifdef I_UNISTD
10792 #  include <unistd.h>  /* Needed for NetBSD */
10793 #endif
10794 int main()
10795 {
10796 char a = -1;
10797 char b = 0;
10798 if ((a < b) && memcmp(&a, &b, 1) < 0)
10799         exit(1);
10800 exit(0);
10801 }
10802 EOCP
10803         set try
10804         if eval $compile_ok; then
10805                 if ./try 2>/dev/null; then
10806                         echo "Yes, it can."
10807                         val="$define"
10808                 else
10809                         echo "No, it can't (it uses signed chars)."
10810                 fi
10811         else
10812                 echo "(I can't compile the test program, so we'll assume not...)"
10813         fi
10814         ;;
10815 esac
10816 $rm -f try.* try core
10817 set d_sanemcmp
10818 eval $setvar
10819
10820 : see if select exists
10821 set select d_select
10822 eval $inlibc
10823
10824 : see if semctl exists
10825 set semctl d_semctl
10826 eval $inlibc
10827
10828 : see if semget exists
10829 set semget d_semget
10830 eval $inlibc
10831
10832 : see if semop exists
10833 set semop d_semop
10834 eval $inlibc
10835
10836 : see how much of the 'sem*(2)' library is present.
10837 h_sem=true
10838 echo " "
10839 case "$d_semctl$d_semget$d_semop" in
10840 *"$undef"*) h_sem=false;;
10841 esac
10842 case "$osname" in
10843 freebsd)
10844     case "`ipcs 2>&1`" in
10845     "SVID messages"*"not configured"*)
10846         echo "Your $osname does not have the sem*(2) configured." >&4
10847         h_sem=false
10848         val="$undef"
10849         set semctl d_semctl
10850         eval $setvar
10851         set semget d_semget
10852         eval $setvar
10853         set semop d_semop
10854         eval $setvar
10855         ;;
10856     esac
10857     ;;
10858 esac
10859 : we could also check for sys/ipc.h ...
10860 if $h_sem && $test `./findhdr sys/sem.h`; then
10861         echo "You have the full sem*(2) library." >&4
10862         val="$define"
10863 else
10864         echo "You don't have the full sem*(2) library." >&4
10865         val="$undef"
10866 fi
10867 set d_sem
10868 eval $setvar
10869
10870 : see whether sys/sem.h defines union semun
10871 echo " "
10872 $cat > try.c <<'END'
10873 #include <sys/types.h>
10874 #include <sys/ipc.h>
10875 #include <sys/sem.h>
10876 int main () { union semun semun; semun.buf = 0; }
10877 END
10878 set try
10879 if eval $compile; then
10880     echo "You have union semun in <sys/sem.h>." >&4
10881     val="$define"
10882 else
10883     echo "You do not have union semun in <sys/sem.h>." >&4
10884     val="$undef"
10885 fi
10886 $rm -f try try.c try.h
10887 set d_union_semun
10888 eval $setvar
10889
10890 : see how to do semctl IPC_STAT
10891 case "$d_sem" in
10892 $define)
10893     : see whether semctl IPC_STAT can use union semun
10894     echo " "
10895     $cat > try.h <<END
10896 #ifndef S_IRUSR
10897 #   ifdef S_IREAD
10898 #       define S_IRUSR S_IREAD
10899 #       define S_IWUSR S_IWRITE
10900 #       define S_IXUSR S_IEXEC
10901 #   else
10902 #       define S_IRUSR 0400
10903 #       define S_IWUSR 0200
10904 #       define S_IXUSR 0100
10905 #   endif
10906 #   define S_IRGRP (S_IRUSR>>3)
10907 #   define S_IWGRP (S_IWUSR>>3)
10908 #   define S_IXGRP (S_IXUSR>>3)
10909 #   define S_IROTH (S_IRUSR>>6)
10910 #   define S_IWOTH (S_IWUSR>>6)
10911 #   define S_IXOTH (S_IXUSR>>6)
10912 #endif
10913 #ifndef S_IRWXU
10914 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10915 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10916 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10917 #endif
10918 END
10919
10920     $cat > try.c <<END
10921 #include <sys/types.h>
10922 #include <sys/ipc.h>
10923 #include <sys/sem.h>
10924 #include <sys/stat.h>
10925 #include <stdio.h>
10926 #include <errno.h>
10927 #include "try.h"
10928 #ifndef errno
10929 extern int errno;
10930 #endif
10931 #$d_union_semun HAS_UNION_SEMUN
10932 int main() {
10933     union semun
10934 #ifndef HAS_UNION_SEMUN
10935     {
10936         int val;
10937         struct semid_ds *buf;
10938         unsigned short *array;
10939     }
10940 #endif
10941     arg;
10942     int sem, st;
10943
10944 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10945     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10946     if (sem > -1) {
10947         struct semid_ds argbuf;
10948         arg.buf = &argbuf;
10949 #       ifdef IPC_STAT
10950         st = semctl(sem, 0, IPC_STAT, arg);
10951         if (st == 0)
10952             printf("semun\n");
10953         else
10954 #       endif /* IPC_STAT */
10955             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10956 #       ifdef IPC_RMID
10957         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10958 #       endif /* IPC_RMID */
10959             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10960     } else
10961 #endif /* IPC_PRIVATE && ... */
10962         printf("semget failed: errno = %d\n", errno);
10963   return 0;
10964 }
10965 END
10966     val="$undef"
10967     set try
10968     if eval $compile; then
10969         xxx=`./try`
10970         case "$xxx" in
10971         semun) val="$define" ;;
10972         esac
10973     fi
10974     $rm -f try try.c
10975     set d_semctl_semun
10976     eval $setvar
10977     case "$d_semctl_semun" in
10978     $define)
10979         echo "You can use union semun for semctl IPC_STAT." >&4
10980         also='also'
10981         ;;
10982     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10983         also=''
10984         ;;
10985     esac
10986
10987     : see whether semctl IPC_STAT can use struct semid_ds pointer
10988     $cat > try.c <<'END'
10989 #include <sys/types.h>
10990 #include <sys/ipc.h>
10991 #include <sys/sem.h>
10992 #include <sys/stat.h>
10993 #include "try.h"
10994 #include <stdio.h>
10995 #include <errno.h>
10996 #ifndef errno
10997 extern int errno;
10998 #endif
10999 int main() {
11000     struct semid_ds arg;
11001     int sem, st;
11002
11003 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
11004     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11005     if (sem > -1) {
11006 #       ifdef IPC_STAT
11007         st = semctl(sem, 0, IPC_STAT, &arg);
11008         if (st == 0)
11009             printf("semid_ds\n");
11010         else
11011 #       endif /* IPC_STAT */
11012             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11013 #       ifdef IPC_RMID
11014         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11015 #       endif /* IPC_RMID */
11016             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11017     } else
11018 #endif /* IPC_PRIVATE && ... */
11019         printf("semget failed: errno = %d\n", errno);
11020
11021     return 0;
11022 }
11023 END
11024     val="$undef"
11025     set try
11026     if eval $compile; then
11027         xxx=`./try`
11028         case "$xxx" in
11029         semid_ds) val="$define" ;;
11030         esac
11031     fi
11032     $rm -f try try.c
11033     set d_semctl_semid_ds
11034     eval $setvar
11035     case "$d_semctl_semid_ds" in
11036     $define)
11037         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11038         ;;
11039     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11040         ;;
11041     esac
11042     $rm -f try.h
11043     ;;
11044 *)  val="$undef"
11045
11046     # We do not have the full sem*(2) library, so assume we can not
11047     # use either.
11048
11049     set d_semctl_semun
11050     eval $setvar
11051
11052     set d_semctl_semid_ds
11053     eval $setvar
11054     ;;
11055 esac
11056
11057 : see if setegid exists
11058 set setegid d_setegid
11059 eval $inlibc
11060
11061 : see if seteuid exists
11062 set seteuid d_seteuid
11063 eval $inlibc
11064
11065 : see if setgrent exists
11066 set setgrent d_setgrent
11067 eval $inlibc
11068
11069 : see if sethostent exists
11070 set sethostent d_sethent
11071 eval $inlibc
11072
11073 : see if setlinebuf exists
11074 set setlinebuf d_setlinebuf
11075 eval $inlibc
11076
11077 : see if setlocale exists
11078 set setlocale d_setlocale
11079 eval $inlibc
11080
11081 : see if setnetent exists
11082 set setnetent d_setnent
11083 eval $inlibc
11084
11085 : see if setprotoent exists
11086 set setprotoent d_setpent
11087 eval $inlibc
11088
11089 : see if setpgid exists
11090 set setpgid d_setpgid
11091 eval $inlibc
11092
11093 : see if setpgrp2 exists
11094 set setpgrp2 d_setpgrp2
11095 eval $inlibc
11096
11097 : see if setpriority exists
11098 set setpriority d_setprior
11099 eval $inlibc
11100
11101 : see if setproctitle exists
11102 set setproctitle d_setproctitle
11103 eval $inlibc
11104
11105 : see if setpwent exists
11106 set setpwent d_setpwent
11107 eval $inlibc
11108
11109 : see if setregid exists
11110 set setregid d_setregid
11111 eval $inlibc
11112 set setresgid d_setresgid
11113 eval $inlibc
11114
11115 : see if setreuid exists
11116 set setreuid d_setreuid
11117 eval $inlibc
11118 set setresuid d_setresuid
11119 eval $inlibc
11120
11121 : see if setrgid exists
11122 set setrgid d_setrgid
11123 eval $inlibc
11124
11125 : see if setruid exists
11126 set setruid d_setruid
11127 eval $inlibc
11128
11129 : see if setservent exists
11130 set setservent d_setsent
11131 eval $inlibc
11132
11133 : see if setsid exists
11134 set setsid d_setsid
11135 eval $inlibc
11136
11137 : see if setvbuf exists
11138 set setvbuf d_setvbuf
11139 eval $inlibc
11140
11141 : see if sfio.h is available
11142 set sfio.h i_sfio
11143 eval $inhdr
11144
11145
11146 : see if sfio library is available
11147 case "$i_sfio" in
11148 $define)
11149         val=''
11150         set sfreserve val
11151         eval $inlibc
11152         ;;
11153 *)
11154         val="$undef"
11155         ;;
11156 esac
11157 : Ok, but do we want to use it.
11158 case "$val" in
11159 $define)
11160         case "$usesfio" in
11161         true|$define|[yY]*) dflt='y';;
11162         *) dflt='n';;
11163         esac
11164         echo "$package can use the sfio library, but it is experimental."
11165         rp="You seem to have sfio available, do you want to try using it?"
11166         . ./myread
11167         case "$ans" in
11168         y|Y) ;;
11169         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
11170                 val="$undef"
11171                 : Remove sfio from list of libraries to use
11172                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11173                 shift
11174                 libs="$*"
11175                 echo "libs = $libs" >&4
11176                 ;;
11177         esac
11178         ;;
11179 *)      case "$usesfio" in
11180         true|$define|[yY]*)
11181                 echo "Sorry, cannot find sfio on this machine" >&4
11182                 echo "Ignoring your setting of usesfio=$usesfio" >&4
11183                 ;;
11184         esac
11185         ;;
11186 esac
11187 set d_sfio
11188 eval $setvar
11189 case "$d_sfio" in
11190 $define) usesfio='true';;
11191 *) usesfio='false';;
11192 esac
11193
11194 : see if shmctl exists
11195 set shmctl d_shmctl
11196 eval $inlibc
11197
11198 : see if shmget exists
11199 set shmget d_shmget
11200 eval $inlibc
11201
11202 : see if shmat exists
11203 set shmat d_shmat
11204 eval $inlibc
11205 : see what shmat returns
11206 case "$d_shmat" in
11207 "$define")
11208         $cat >shmat.c <<'END'
11209 #include <sys/shm.h>
11210 void *shmat();
11211 END
11212         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11213                 shmattype='void *'
11214         else
11215                 shmattype='char *'
11216         fi
11217         echo "and it returns ($shmattype)." >&4
11218         : see if a prototype for shmat is available
11219         xxx=`./findhdr sys/shm.h`
11220         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11221         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11222                 val="$define"
11223         else
11224                 val="$undef"
11225         fi
11226         $rm -f shmat.[co]
11227         ;;
11228 *)
11229         val="$undef"
11230         ;;
11231 esac
11232 set d_shmatprototype
11233 eval $setvar
11234
11235 : see if shmdt exists
11236 set shmdt d_shmdt
11237 eval $inlibc
11238
11239 : see how much of the 'shm*(2)' library is present.
11240 h_shm=true
11241 echo " "
11242 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11243 *"$undef"*) h_shm=false;;
11244 esac
11245 case "$osname" in
11246 freebsd)
11247     case "`ipcs 2>&1`" in
11248     "SVID shared memory"*"not configured"*)
11249         echo "Your $osname does not have the shm*(2) configured." >&4
11250         h_shm=false
11251         val="$undef"
11252         set shmctl d_shmctl
11253         evat $setvar
11254         set shmget d_shmget
11255         evat $setvar
11256         set shmat d_shmat
11257         evat $setvar
11258         set shmdt d_shmdt
11259         evat $setvar
11260         ;;
11261     esac
11262     ;;
11263 esac
11264 : we could also check for sys/ipc.h ...
11265 if $h_shm && $test `./findhdr sys/shm.h`; then
11266         echo "You have the full shm*(2) library." >&4
11267         val="$define"
11268 else
11269         echo "You don't have the full shm*(2) library." >&4
11270         val="$undef"
11271 fi
11272 set d_shm
11273 eval $setvar
11274
11275 echo " "
11276 : see if we have sigaction
11277 if set sigaction val -f d_sigaction; eval $csym; $val; then
11278         echo 'sigaction() found.' >&4
11279         $cat > try.c <<'EOP'
11280 #include <stdio.h>
11281 #include <sys/types.h>
11282 #include <signal.h>
11283 int main()
11284 {
11285     struct sigaction act, oact;
11286     act.sa_flags = 0;
11287     oact.sa_handler = 0;
11288     /* so that act and oact are used */
11289     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11290 }
11291 EOP
11292         set try
11293         if eval $compile_ok; then
11294                 val="$define"
11295         else
11296                 echo "But you don't seem to have a useable struct sigaction." >&4
11297                 val="$undef"
11298         fi
11299 else
11300         echo 'sigaction NOT found.' >&4
11301         val="$undef"
11302 fi
11303 set d_sigaction; eval $setvar
11304 $rm -f try try$_o try.c
11305
11306 : see if sigsetjmp exists
11307 echo " "
11308 case "$d_sigsetjmp" in
11309 '')
11310         $cat >try.c <<'EOP'
11311 #include <setjmp.h>
11312 sigjmp_buf env;
11313 int set = 1;
11314 int main()
11315 {
11316         if (sigsetjmp(env,1))
11317                 exit(set);
11318         set = 0;
11319         siglongjmp(env, 1);
11320         exit(1);
11321 }
11322 EOP
11323         set try
11324         if eval $compile; then
11325                 if ./try >/dev/null 2>&1; then
11326                         echo "POSIX sigsetjmp found." >&4
11327                         val="$define"
11328                 else
11329                         $cat >&4 <<EOM
11330 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11331 I'll ignore them.
11332 EOM
11333                         val="$undef"
11334                 fi
11335         else
11336                 echo "sigsetjmp not found." >&4
11337                 val="$undef"
11338         fi
11339         ;;
11340 *) val="$d_sigsetjmp"
11341         case "$d_sigsetjmp" in
11342         $define) echo "POSIX sigsetjmp found." >&4;;
11343         $undef) echo "sigsetjmp not found." >&4;;
11344         esac
11345         ;;
11346 esac
11347 set d_sigsetjmp
11348 eval $setvar
11349 $rm -f try.c try
11350
11351 : see if sys/stat.h is available
11352 set sys/stat.h i_sysstat
11353 eval $inhdr
11354
11355
11356 : see if stat knows about block sizes
11357 echo " "
11358 echo "Checking to see if your struct stat has st_blocks field..." >&4
11359 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11360 eval $hasfield
11361
11362
11363 : see if this is a sys/vfs.h system
11364 set sys/vfs.h i_sysvfs
11365 eval $inhdr
11366
11367
11368 : see if this is a sys/statfs.h system
11369 set sys/statfs.h i_sysstatfs
11370 eval $inhdr
11371
11372
11373 echo " "
11374 echo "Checking to see if your system supports struct statfs..." >&4
11375 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
11376 eval $hasstruct
11377 case "$d_statfs_s" in
11378 "$define")      echo "Yes, it does."   ;;
11379 *)              echo "No, it doesn't." ;;
11380 esac
11381
11382
11383
11384 : see if struct statfs knows about f_flags
11385 case "$d_statfs_s" in
11386 define) 
11387         echo " "
11388         echo "Checking to see if your struct statfs has f_flags field..." >&4
11389         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
11390         eval $hasfield
11391         ;;
11392 *)      val="$undef"
11393         set d_statfs_f_flags
11394         eval $setvar
11395         ;;
11396 esac
11397 case "$d_statfs_f_flags" in
11398 "$define")      echo "Yes, it does."   ;;
11399 *)              echo "No, it doesn't." ;;
11400 esac
11401
11402 : see if _ptr and _cnt from stdio act std
11403 echo " "
11404 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11405         echo "(Looks like you have stdio.h from Linux.)"
11406         case "$stdio_ptr" in
11407         '') stdio_ptr='((fp)->_IO_read_ptr)'
11408                 ptr_lval=$define
11409                 ;;
11410         *)      ptr_lval=$d_stdio_ptr_lval;;
11411         esac
11412         case "$stdio_cnt" in
11413         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11414                 cnt_lval=$undef
11415                 ;;
11416         *)      cnt_lval=$d_stdio_cnt_lval;;
11417         esac
11418         case "$stdio_base" in
11419         '') stdio_base='((fp)->_IO_read_base)';;
11420         esac
11421         case "$stdio_bufsiz" in
11422         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11423         esac
11424 else
11425         case "$stdio_ptr" in
11426         '') stdio_ptr='((fp)->_ptr)'
11427                 ptr_lval=$define
11428                 ;;
11429         *)      ptr_lval=$d_stdio_ptr_lval;;
11430         esac
11431         case "$stdio_cnt" in
11432         '') stdio_cnt='((fp)->_cnt)'
11433                 cnt_lval=$define
11434                 ;;
11435         *)      cnt_lval=$d_stdio_cnt_lval;;
11436         esac
11437         case "$stdio_base" in
11438         '') stdio_base='((fp)->_base)';;
11439         esac
11440         case "$stdio_bufsiz" in
11441         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11442         esac
11443 fi
11444 : test whether _ptr and _cnt really work
11445 echo "Checking how std your stdio is..." >&4
11446 $cat >try.c <<EOP
11447 #include <stdio.h>
11448 #define FILE_ptr(fp)    $stdio_ptr
11449 #define FILE_cnt(fp)    $stdio_cnt
11450 int main() {
11451         FILE *fp = fopen("try.c", "r");
11452         char c = getc(fp);
11453         if (
11454                 18 <= FILE_cnt(fp) &&
11455                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11456         )
11457                 exit(0);
11458         exit(1);
11459 }
11460 EOP
11461 val="$undef"
11462 set try
11463 if eval $compile; then
11464         if ./try; then
11465                 echo "Your stdio acts pretty std."
11466                 val="$define"
11467         else
11468                 echo "Your stdio isn't very std."
11469         fi
11470 else
11471         echo "Your stdio doesn't appear very std."
11472 fi
11473 $rm -f try.c try
11474 set d_stdstdio
11475 eval $setvar
11476
11477 : Can _ptr be used as an lvalue?
11478 case "$d_stdstdio$ptr_lval" in
11479 $define$define) val=$define ;;
11480 *) val=$undef ;;
11481 esac
11482 set d_stdio_ptr_lval
11483 eval $setvar
11484
11485 : Can _cnt be used as an lvalue?
11486 case "$d_stdstdio$cnt_lval" in
11487 $define$define) val=$define ;;
11488 *) val=$undef ;;
11489 esac
11490 set d_stdio_cnt_lval
11491 eval $setvar
11492
11493 : see if _base is also standard
11494 val="$undef"
11495 case "$d_stdstdio" in
11496 $define)
11497         $cat >try.c <<EOP
11498 #include <stdio.h>
11499 #define FILE_base(fp)   $stdio_base
11500 #define FILE_bufsiz(fp) $stdio_bufsiz
11501 int main() {
11502         FILE *fp = fopen("try.c", "r");
11503         char c = getc(fp);
11504         if (
11505                 19 <= FILE_bufsiz(fp) &&
11506                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11507         )
11508                 exit(0);
11509         exit(1);
11510 }
11511 EOP
11512         set try
11513         if eval $compile; then
11514                 if ./try; then
11515                         echo "And its _base field acts std."
11516                         val="$define"
11517                 else
11518                         echo "But its _base field isn't std."
11519                 fi
11520         else
11521                 echo "However, it seems to be lacking the _base field."
11522         fi
11523         $rm -f try.c try
11524         ;;
11525 esac
11526 set d_stdiobase
11527 eval $setvar
11528
11529 $cat >&4 <<EOM
11530 Checking how to access stdio streams by file descriptor number...
11531 EOM
11532 case "$stdio_stream_array" in
11533 '')     $cat >try.c <<EOCP
11534 #include <stdio.h>
11535 int main() {
11536   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11537     printf("yes\n");
11538 }
11539 EOCP
11540         for s in _iob __iob __sF
11541         do
11542                 set try -DSTDIO_STREAM_ARRAY=$s
11543                 if eval $compile; then
11544                         case "`./try$exe_ext`" in
11545                         yes)    stdio_stream_array=$s; break ;;
11546                         esac
11547                 fi
11548         done
11549         $rm -f try.* try$exe_ext
11550 esac
11551 case "$stdio_stream_array" in
11552 '')     $cat >&4 <<EOM
11553 I can't figure out how to access stdio streams by file descriptor number.
11554 EOM
11555         d_stdio_stream_array="$undef"
11556         ;;
11557 *)      $cat >&4 <<EOM
11558 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11559 EOM
11560         d_stdio_stream_array="$define"
11561         ;;
11562 esac
11563
11564 : see if strcoll exists
11565 set strcoll d_strcoll
11566 eval $inlibc
11567
11568 : check for structure copying
11569 echo " "
11570 echo "Checking to see if your C compiler can copy structs..." >&4
11571 $cat >try.c <<'EOCP'
11572 int main()
11573 {
11574         struct blurfl {
11575                 int dyick;
11576         } foo, bar;
11577
11578         foo = bar;
11579 }
11580 EOCP
11581 if $cc -c try.c >/dev/null 2>&1 ; then
11582         val="$define"
11583         echo "Yup, it can."
11584 else
11585         val="$undef"
11586         echo "Nope, it can't."
11587 fi
11588 set d_strctcpy
11589 eval $setvar
11590 $rm -f try.*
11591
11592 : see if strerror and/or sys_errlist[] exist
11593 echo " "
11594 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11595     if set strerror val -f d_strerror; eval $csym; $val; then
11596                 echo 'strerror() found.' >&4
11597                 d_strerror="$define"
11598                 d_strerrm='strerror(e)'
11599                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11600                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11601                         d_syserrlst="$define"
11602                 else
11603                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11604                         d_syserrlst="$undef"
11605                 fi
11606     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11607                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11608                 echo 'strerror() found in string header.' >&4
11609                 d_strerror="$define"
11610                 d_strerrm='strerror(e)'
11611                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11612                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11613                                 d_syserrlst="$define"
11614                 else
11615                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11616                         d_syserrlst="$undef"
11617                 fi
11618     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11619                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11620                 d_strerror="$undef"
11621                 d_syserrlst="$define"
11622                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11623     else
11624                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11625                 d_strerror="$undef"
11626                 d_syserrlst="$undef"
11627                 d_strerrm='"unknown"'
11628     fi
11629 fi
11630
11631 : see if strtod exists
11632 set strtod d_strtod
11633 eval $inlibc
11634
11635 : see if strtol exists
11636 set strtol d_strtol
11637 eval $inlibc
11638
11639 : see if strtold exists
11640 set strtold d_strtold
11641 eval $inlibc
11642
11643 : see if strtoll exists
11644 set strtoll d_strtoll
11645 eval $inlibc
11646
11647 case "$d_longlong-$d_strtoll" in
11648 "$define-$define")
11649         $cat <<EOM
11650 Checking whether your strtoll() works okay...
11651 EOM
11652         $cat >try.c <<'EOCP'
11653 #include <errno.h>
11654 #ifdef __hpux
11655 #define strtoll __strtoll
11656 #endif
11657 #include <stdio.h>
11658 extern long long int strtoll(char *s, char **, int); 
11659 static int bad = 0;
11660 int check(char *s, long long ell, int een) {
11661         long long gll;
11662         errno = 0;
11663         gll = strtoll(s, 0, 10);
11664         if (!((gll == ell) && (errno == een)))
11665                 bad++;
11666 }
11667 int main() {
11668         check(" 1",                                      1LL, 0);
11669         check(" 0",                                      0LL, 0);
11670         check("-1",                                     -1LL, 0);
11671         check("-9223372036854775808", -9223372036854775808LL, 0);
11672         check("-9223372036854775808", -9223372036854775808LL, 0);
11673         check(" 9223372036854775807",  9223372036854775807LL, 0);
11674         check("-9223372036854775808", -9223372036854775808LL, 0);
11675         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
11676         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11677         if (!bad)
11678                 printf("ok\n");
11679 }
11680 EOCP
11681         set try
11682         if eval $compile; then
11683                 case "`./try`" in
11684                 ok) echo "Your strtoll() seems to be working okay." ;;
11685                 *) cat <<EOM >&4
11686 Your strtoll() doesn't seem to be working okay.
11687 EOM
11688                    d_strtoll="$undef"
11689                    ;;
11690                 esac
11691         fi
11692         ;;
11693 esac
11694
11695 : see if strtoul exists
11696 set strtoul d_strtoul
11697 eval $inlibc
11698
11699 : see if strtoull exists
11700 set strtoull d_strtoull
11701 eval $inlibc
11702
11703 case "$d_longlong-$d_strtoull" in
11704 "$define-$define")
11705         $cat <<EOM
11706 Checking whether your strtoull() works okay...
11707 EOM
11708         $cat >try.c <<'EOCP'
11709 #include <errno.h>
11710 #ifdef __hpux
11711 #define strtoull __strtoull
11712 #endif
11713 #include <stdio.h>
11714 extern unsigned long long int strtoull(char *s, char **, int); 
11715 static int bad = 0;
11716 int check(char *s, long long eull, int een) {
11717         long long gull;
11718         errno = 0;
11719         gull = strtoull(s, 0, 10);
11720         if (!((gull == eull) && (errno == een)))
11721                 bad++;
11722 }
11723 int main() {
11724         check(" 1",                                       1LL, 0);
11725         check(" 0",                                       0LL, 0);
11726         check("18446744073709551615", 18446744073709551615ULL, 0);
11727         check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11728         if (!bad)
11729                 printf("ok\n");
11730 }
11731 EOCP
11732         set try
11733         if eval $compile; then
11734                 case "`./try`" in
11735                 ok) echo "Your strtoull() seems to be working okay." ;;
11736                 *) cat <<EOM >&4
11737 Your strtoull() doesn't seem to be working okay.
11738 EOM
11739                    d_strtoull="$undef"
11740                    ;;
11741                 esac
11742         fi
11743         ;;
11744 esac
11745
11746 : see if strtouq exists
11747 set strtouq d_strtouq
11748 eval $inlibc
11749
11750 : see if strxfrm exists
11751 set strxfrm d_strxfrm
11752 eval $inlibc
11753
11754 : see if symlink exists
11755 set symlink d_symlink
11756 eval $inlibc
11757
11758 : see if syscall exists
11759 set syscall d_syscall
11760 eval $inlibc
11761
11762 : see if sysconf exists
11763 set sysconf d_sysconf
11764 eval $inlibc
11765
11766 : see if system exists
11767 set system d_system
11768 eval $inlibc
11769
11770 : see if tcgetpgrp exists
11771 set tcgetpgrp d_tcgetpgrp
11772 eval $inlibc
11773
11774 : see if tcsetpgrp exists
11775 set tcsetpgrp d_tcsetpgrp
11776 eval $inlibc
11777
11778 : see if prototype for telldir is available
11779 echo " "
11780 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11781 eval $hasproto
11782
11783 : see if this is a sys/times.h system
11784 set sys/times.h i_systimes
11785 eval $inhdr
11786
11787 : see if times exists
11788 echo " "
11789 if set times val -f d_times; eval $csym; $val; then
11790         echo 'times() found.' >&4
11791         d_times="$define"
11792         inc=''
11793         case "$i_systimes" in
11794         "$define") inc='sys/times.h';;
11795         esac
11796         rp="What is the type returned by times() on this system?"
11797         set clock_t clocktype long stdio.h sys/types.h $inc
11798         eval $typedef_ask
11799 else
11800         echo 'times() NOT found, hope that will do.' >&4
11801         d_times="$undef"
11802         clocktype='int'
11803 fi
11804
11805 : see if truncate exists
11806 set truncate d_truncate
11807 eval $inlibc
11808
11809 : see if tzname[] exists
11810 echo " "
11811 if set tzname val -a d_tzname; eval $csym; $val; then
11812         val="$define"
11813         echo 'tzname[] found.' >&4
11814 else
11815         val="$undef"
11816         echo 'tzname[] NOT found.' >&4
11817 fi
11818 set d_tzname
11819 eval $setvar
11820
11821 : see if umask exists
11822 set umask d_umask
11823 eval $inlibc
11824
11825 : see if ustat exists
11826 set ustat d_ustat
11827 eval $inlibc
11828
11829 : backward compatibility for d_hvfork
11830 if test X$d_hvfork != X; then
11831         d_vfork="$d_hvfork"
11832         d_hvfork=''
11833 fi
11834 : see if there is a vfork
11835 val=''
11836 set vfork val
11837 eval $inlibc
11838
11839 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11840 : perl on Solaris 2.x, and probably elsewhere.
11841 case "$val" in
11842 $define)
11843         echo " "
11844         case "$usevfork" in
11845         false) dflt='n';;
11846         *) dflt='y';;
11847         esac
11848         cat <<'EOM'
11849  
11850 Perl can only use a vfork() that doesn't suffer from strict
11851 restrictions on calling functions or modifying global data in
11852 the child.  For example, glibc-2.1 contains such a vfork()
11853 that is unsuitable.  If your system provides a proper fork()
11854 call, chances are that you do NOT want perl to use vfork().
11855
11856 EOM
11857         rp="Do you still want to use vfork()?"
11858         . ./myread
11859         case "$ans" in
11860         y|Y) ;;
11861         *)
11862                 echo "Ok, we won't use vfork()."
11863                 val="$undef"
11864                 ;;
11865         esac
11866         ;;
11867 esac
11868 set d_vfork
11869 eval $setvar
11870 case "$d_vfork" in
11871 $define) usevfork='true';;
11872 *) usevfork='false';;
11873 esac
11874
11875 : see if this is an sysdir system
11876 set sys/dir.h i_sysdir
11877 eval $inhdr
11878
11879 : see if this is an sysndir system
11880 set sys/ndir.h i_sysndir
11881 eval $inhdr
11882
11883 : see if closedir exists
11884 set closedir d_closedir
11885 eval $inlibc
11886
11887 case "$d_closedir" in
11888 "$define")
11889         echo " "
11890         echo "Checking whether closedir() returns a status..." >&4
11891         cat > closedir.c <<EOM
11892 #$i_dirent I_DIRENT             /**/
11893 #$i_sysdir I_SYS_DIR            /**/
11894 #$i_sysndir I_SYS_NDIR          /**/
11895 #$i_systypes I_SYS_TYPES        /**/
11896
11897 #if defined(I_SYS_TYPES)
11898 #include <sys/types.h>
11899 #endif
11900 #if defined(I_DIRENT)
11901 #include <dirent.h>
11902 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11903 #include <sys/dir.h>
11904 #endif
11905 #else
11906 #ifdef I_SYS_NDIR
11907 #include <sys/ndir.h>
11908 #else
11909 #ifdef I_SYS_DIR
11910 #ifdef hp9000s500
11911 #include <ndir.h>       /* may be wrong in the future */
11912 #else
11913 #include <sys/dir.h>
11914 #endif
11915 #endif
11916 #endif
11917 #endif 
11918 int main() { return closedir(opendir(".")); }
11919 EOM
11920         set closedir
11921         if eval $compile_ok; then
11922                 if ./closedir > /dev/null 2>&1 ; then
11923                         echo "Yes, it does."
11924                         val="$undef"
11925                 else
11926                         echo "No, it doesn't."
11927                         val="$define"
11928                 fi
11929         else
11930                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11931                 val="$define"
11932         fi
11933         ;;
11934 *)
11935         val="$undef";
11936         ;;
11937 esac
11938 set d_void_closedir
11939 eval $setvar
11940 $rm -f closedir*
11941 : check for volatile keyword
11942 echo " "
11943 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11944 $cat >try.c <<'EOCP'
11945 int main()
11946 {
11947         typedef struct _goo_struct goo_struct;
11948         goo_struct * volatile goo = ((goo_struct *)0);
11949         struct _goo_struct {
11950                 long long_int;
11951                 int reg_int;
11952                 char char_var;
11953         };
11954         typedef unsigned short foo_t;
11955         char *volatile foo;
11956         volatile int bar;
11957         volatile foo_t blech;
11958         foo = foo;
11959 }
11960 EOCP
11961 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11962         val="$define"
11963         echo "Yup, it does."
11964 else
11965         val="$undef"
11966         echo "Nope, it doesn't."
11967 fi
11968 set d_volatile
11969 eval $setvar
11970 $rm -f try.*
11971
11972 : see if there is a wait4
11973 set wait4 d_wait4
11974 eval $inlibc
11975
11976 : see if waitpid exists
11977 set waitpid d_waitpid
11978 eval $inlibc
11979
11980 : see if wcstombs exists
11981 set wcstombs d_wcstombs
11982 eval $inlibc
11983
11984 : see if wctomb exists
11985 set wctomb d_wctomb
11986 eval $inlibc
11987
11988 : preserve RCS keywords in files with variable substitution, grrr
11989 Date='$Date'
11990 Id='$Id'
11991 Log='$Log'
11992 RCSfile='$RCSfile'
11993 Revision='$Revision'
11994
11995 case "$crosscompile" in
11996 ''|[nN]*) crosscompile="$undef" ;;
11997 esac
11998
11999 case "$osname" in
12000 next|rhapsody|darwin) multiarch="$define" ;;
12001 esac
12002 case "$multiarch" in
12003 ''|[nN]*) multiarch="$undef" ;;
12004 esac
12005
12006 : check for alignment requirements
12007 echo " "
12008 case "$crosscompile$multiarch" in
12009 *$define*)
12010         $cat <<EOM
12011 You seem to be either cross-compiling or doing a multiarchitecture build,
12012 skipping the memory alignment check.
12013
12014 EOM
12015         case "$alignbytes" in
12016         '') alignbytes=8 ;;
12017         esac
12018         ;;
12019 *)
12020         case "$alignbytes" in
12021         '') echo "Checking alignment constraints..." >&4
12022                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12023                         $cat >try.c <<'EOCP'
12024 typedef long double NV;
12025 EOCP
12026                 else
12027                         $cat >try.c <<'EOCP'
12028 typedef double NV;
12029 EOCP
12030                 fi
12031                 $cat >>try.c <<'EOCP'
12032 #include <stdio.h>
12033 struct foobar {
12034         char foo;
12035         NV bar;
12036 } try_algn;
12037 int main()
12038 {
12039     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12040     return(0);
12041 }
12042 EOCP
12043                 set try
12044                 if eval $compile_ok; then
12045                         dflt=`./try`
12046                 else
12047                         dflt='8'
12048                         echo "(I can't seem to compile the test program...)"
12049                 fi
12050                 ;;
12051         *) dflt="$alignbytes"
12052                 ;;
12053         esac
12054         rp="Doubles must be aligned on a how-many-byte boundary?"
12055         . ./myread
12056         alignbytes="$ans"
12057         $rm -f try.c try
12058         ;;
12059 esac
12060
12061
12062 : set the base revision
12063 baserev=5.0
12064
12065 : check for ordering of bytes in a long
12066 echo " "
12067 case "$crosscompile$multiarch" in
12068 *$define*)
12069         $cat <<EOM
12070 You seem to be either cross-compiling or doing a multiarchitecture build,
12071 skipping the byteorder check.
12072
12073 EOM
12074         byteorder='0xffff'
12075         ;;
12076 *)
12077         case "$byteorder" in
12078         '')
12079                 $cat <<'EOM'
12080 In the following, larger digits indicate more significance.  A big-endian
12081 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12082 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12083 machines may have weird orders like 3412.  A Cray will report 87654321,
12084 an Alpha will report 12345678. If the test program works the default is
12085 probably right.
12086 I'm now running the test program...
12087 EOM
12088                 $cat >try.c <<'EOCP'
12089 #include <stdio.h>
12090 int main()
12091 {
12092         int i;
12093         union {
12094                 unsigned long l;
12095                 char c[sizeof(long)];
12096         } u;
12097
12098         if (sizeof(long) > 4)
12099                 u.l = (0x08070605L << 32) | 0x04030201L;
12100         else
12101                 u.l = 0x04030201L;
12102         for (i = 0; i < sizeof(long); i++)
12103                 printf("%c", u.c[i]+'0');
12104         printf("\n");
12105         exit(0);
12106 }
12107 EOCP
12108                 xxx_prompt=y
12109                 set try
12110                 if eval $compile && ./try > /dev/null; then
12111                         dflt=`./try`
12112                         case "$dflt" in
12113                         [1-4][1-4][1-4][1-4]|12345678|87654321)
12114                                 echo "(The test program ran ok.)"
12115                                 echo "byteorder=$dflt"
12116                                 xxx_prompt=n
12117                         ;;
12118                         ????|????????) echo "(The test program ran ok.)" ;;
12119                         *) echo "(The test program didn't run right for some reason.)" ;;
12120                         esac
12121                 else
12122                         dflt='4321'
12123                         cat <<'EOM'
12124 (I can't seem to compile the test program.  Guessing big-endian...)
12125 EOM
12126                 fi
12127                 case "$xxx_prompt" in
12128                 y)
12129                         rp="What is the order of bytes in a long?"
12130                         . ./myread
12131                         byteorder="$ans"
12132                         ;;
12133                 *)      byteorder=$dflt
12134                         ;;
12135                 esac
12136                 ;;
12137         esac
12138         $rm -f try.c try
12139         ;;
12140 esac
12141
12142
12143 : how do we catenate cpp tokens here?
12144 echo " "
12145 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12146 $cat >cpp_stuff.c <<'EOCP'
12147 #define RCAT(a,b)a/**/b
12148 #define ACAT(a,b)a ## b
12149 RCAT(Rei,ser)
12150 ACAT(Cir,cus)
12151 EOCP
12152 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12153 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12154         echo "Oh!  Smells like ANSI's been here." >&4
12155         echo "We can catify or stringify, separately or together!"
12156         cpp_stuff=42
12157 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12158         echo "Ah, yes!  The good old days!" >&4
12159         echo "However, in the good old days we don't know how to stringify and"
12160         echo "catify at the same time."
12161         cpp_stuff=1
12162 else
12163         $cat >&4 <<EOM
12164 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
12165 to have to edit the values of CAT[2-5] in config.h...
12166 EOM
12167         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12168 fi
12169 $rm -f cpp_stuff.*
12170
12171 : see if this is a db.h system
12172 set db.h i_db
12173 eval $inhdr
12174
12175 case "$i_db" in
12176 $define)
12177         : Check db version.
12178         echo " "
12179         echo "Checking Berkeley DB version ..." >&4
12180         $cat >try.c <<EOCP
12181 #$d_const HASCONST
12182 #ifndef HASCONST
12183 #define const
12184 #endif
12185 #include <sys/types.h>
12186 #include <stdio.h>
12187 #include <db.h>
12188 int main()
12189 {
12190 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12191     int Major, Minor, Patch ;
12192     unsigned long Version ;
12193     (void)db_version(&Major, &Minor, &Patch) ;
12194     printf("You have Berkeley DB Version 2 or greater\n");
12195
12196     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12197                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12198     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12199                 Major, Minor, Patch) ;
12200
12201     /* check that db.h & libdb are compatible */
12202     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12203         printf("db.h and libdb are incompatible\n") ;
12204         exit(3);        
12205     }
12206
12207     printf("db.h and libdb are compatible\n") ;
12208
12209     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12210                 + DB_VERSION_PATCH ;
12211
12212     /* needs to be >= 2.3.4 */
12213     if (Version < 2003004) {
12214     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12215         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12216         exit(2);        
12217     }
12218
12219     exit(0);
12220 #else
12221 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12222     printf("You have Berkeley DB Version 1\n");
12223     exit(0);    /* DB version < 2: the coast is clear. */
12224 #else
12225     exit(1);    /* <db.h> not Berkeley DB? */
12226 #endif
12227 #endif
12228 }
12229 EOCP
12230         set try
12231         if eval $compile_ok && ./try; then
12232                 echo 'Looks OK.' >&4
12233         else
12234                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12235                 i_db=$undef
12236                 case " $libs " in
12237                 *"-ldb "*)
12238                         : Remove db from list of libraries to use
12239                         echo "Removing unusable -ldb from library list" >&4
12240                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12241                         shift
12242                         libs="$*"
12243                         echo "libs = $libs" >&4
12244                         ;;
12245                 esac
12246         fi
12247         $rm -f try.*
12248         ;;
12249 esac
12250
12251 case "$i_db" in
12252 define)
12253         : Check the return type needed for hash 
12254         echo " "
12255         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12256         $cat >try.c <<EOCP
12257 #$d_const HASCONST
12258 #ifndef HASCONST
12259 #define const
12260 #endif
12261 #include <sys/types.h>
12262 #include <db.h>
12263
12264 #ifndef DB_VERSION_MAJOR
12265 u_int32_t hash_cb (ptr, size)
12266 const void *ptr;
12267 size_t size;
12268 {
12269 }
12270 HASHINFO info;
12271 int main()
12272 {
12273         info.hash = hash_cb;
12274 }
12275 #endif
12276 EOCP
12277         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12278                 if $contains warning try.out >>/dev/null 2>&1 ; then
12279                         db_hashtype='int'
12280                 else
12281                         db_hashtype='u_int32_t'
12282                 fi
12283         else
12284                 : XXX Maybe we should just give up here.
12285                 db_hashtype=u_int32_t
12286                 $cat try.out >&4
12287                 echo "Help:  I can't seem to compile the db test program." >&4
12288                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12289         fi
12290         $rm -f try.*
12291         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12292         ;;
12293 *)      db_hashtype=u_int32_t
12294         ;;
12295 esac
12296 case "$i_db" in
12297 define)
12298         : Check the return type needed for prefix 
12299         echo " "
12300         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12301         cat >try.c <<EOCP
12302 #$d_const HASCONST
12303 #ifndef HASCONST
12304 #define const
12305 #endif
12306 #include <sys/types.h>
12307 #include <db.h>
12308
12309 #ifndef DB_VERSION_MAJOR
12310 size_t prefix_cb (key1, key2)
12311 const DBT *key1;
12312 const DBT *key2;
12313 {
12314 }
12315 BTREEINFO info;
12316 int main()
12317 {
12318         info.prefix = prefix_cb;
12319 }
12320 #endif
12321 EOCP
12322         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12323                 if $contains warning try.out >>/dev/null 2>&1 ; then
12324                         db_prefixtype='int'
12325                 else
12326                         db_prefixtype='size_t'
12327                 fi
12328         else
12329                 db_prefixtype='size_t'
12330                 : XXX Maybe we should just give up here.
12331                 $cat try.out >&4
12332                 echo "Help:  I can't seem to compile the db test program." >&4
12333                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12334         fi
12335         $rm -f try.*
12336         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12337         ;;
12338 *)      db_prefixtype='size_t'
12339         ;;
12340 esac
12341
12342 : check for void type
12343 echo " "
12344 echo "Checking to see how well your C compiler groks the void type..." >&4
12345 case "$voidflags" in
12346 '')
12347         $cat >try.c <<'EOCP'
12348 #if TRY & 1
12349 void sub() {
12350 #else
12351 sub() {
12352 #endif
12353         extern void moo();      /* function returning void */
12354         void (*goo)();          /* ptr to func returning void */
12355 #if TRY & 8
12356         void *hue;              /* generic ptr */
12357 #endif
12358 #if TRY & 2
12359         void (*foo[10])();
12360 #endif
12361
12362 #if TRY & 4
12363         if(goo == moo) {
12364                 exit(0);
12365         }
12366 #endif
12367         exit(0);
12368 }
12369 int main() { sub(); }
12370 EOCP
12371         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12372                 voidflags=$defvoidused
12373         echo "Good.  It appears to support void to the level $package wants.">&4
12374                 if $contains warning .out >/dev/null 2>&1; then
12375                         echo "However, you might get some warnings that look like this:"
12376                         $cat .out
12377                 fi
12378         else
12379 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12380                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12381                         echo "It supports 1..."
12382                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12383                                 echo "It also supports 2..."
12384                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12385                                         voidflags=7
12386                                         echo "And it supports 4 but not 8 definitely."
12387                                 else
12388                                         echo "It doesn't support 4..."
12389                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12390                                                 voidflags=11
12391                                                 echo "But it supports 8."
12392                                         else
12393                                                 voidflags=3
12394                                                 echo "Neither does it support 8."
12395                                         fi
12396                                 fi
12397                         else
12398                                 echo "It does not support 2..."
12399                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12400                                         voidflags=13
12401                                         echo "But it supports 4 and 8."
12402                                 else
12403                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12404                                                 voidflags=5
12405                                                 echo "And it supports 4 but has not heard about 8."
12406                                         else
12407                                                 echo "However it supports 8 but not 4."
12408                                         fi
12409                                 fi
12410                         fi
12411                 else
12412                         echo "There is no support at all for void."
12413                         voidflags=0
12414                 fi
12415         fi
12416 esac
12417 case "$voidflags" in
12418 "$defvoidused") ;;
12419 *)      $cat >&4 <<'EOM'
12420   Support flag bits are:
12421     1: basic void declarations.
12422     2: arrays of pointers to functions returning void.
12423     4: operations between pointers to and addresses of void functions.
12424     8: generic void pointers.
12425 EOM
12426         dflt="$voidflags";
12427         rp="Your void support flags add up to what?"
12428         . ./myread
12429         voidflags="$ans"
12430         ;;
12431 esac
12432 $rm -f try.* .out
12433
12434
12435 : How can we generate normalized random numbers ?
12436 echo " "
12437 echo "Looking for a random number function..." >&4
12438 case "$randfunc" in
12439 '')
12440         if set drand48 val -f; eval $csym; $val; then
12441                 dflt="drand48"
12442                 echo "Good, found drand48()." >&4
12443         elif set random val -f; eval $csym; $val; then
12444                 dflt="random"
12445                 echo "OK, found random()." >&4
12446         else
12447                 dflt="rand"
12448                 echo "Yick, looks like I have to use rand()." >&4
12449         fi
12450         echo " "
12451         ;;
12452 *)
12453         dflt="$randfunc"
12454         ;;
12455 esac
12456 cont=true
12457
12458 case "$ccflags" in
12459 *-Dmy_rand=*|*-Dmy_srand=*)
12460         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12461         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12462         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12463         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12464         ;;
12465 esac
12466
12467 while $test "$cont"; do
12468         rp="Use which function to generate random numbers?"
12469         . ./myread
12470         if $test "$ans" = "$dflt"; then
12471                 : null
12472         else
12473                 randbits=''
12474         fi
12475         randfunc="$ans"
12476         if set $ans val -f; eval $csym; $val; then
12477                 cont=''
12478         else
12479                 dflt=y
12480                 rp="I cannot find function $ans. Use that name anyway?"
12481                 . ./myread
12482                 dflt=rand
12483                 case "$ans" in
12484                         [yY]*) cont='';;
12485                 esac
12486         fi
12487         case "$cont" in
12488         '')
12489                 case "$randfunc" in
12490                 drand48)
12491                         drand01="drand48()"
12492                         seedfunc="srand48"
12493                         randbits=48
12494                         randseedtype=long
12495                         ;;
12496                 rand|random)
12497                         case "$randbits" in
12498                         '')
12499 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12500                                 $cat >try.c <<EOCP
12501 #$i_unistd I_UNISTD
12502 #$i_stdlib I_STDLIB
12503 #include <stdio.h>
12504 #ifdef I_UNISTD
12505 #  include <unistd.h>
12506 #endif
12507 #ifdef I_STDLIB
12508 #  include <stdlib.h>
12509 #endif
12510 int main()
12511 {
12512         register int i;
12513         register unsigned long tmp;
12514         register unsigned long max = 0L;
12515
12516         for (i = 1000; i; i--) {
12517                 tmp = (unsigned long) $randfunc();
12518                 if (tmp > max) max = tmp;
12519         }
12520         for (i = 0; max; i++)
12521                 max /= 2;
12522         printf("%d\n",i);
12523 }
12524 EOCP
12525                                 set try
12526                                 if eval $compile_ok; then
12527                                         dflt=`try`
12528                                 else
12529                                         dflt='?'
12530                                         echo "(I can't seem to compile the test program...)"
12531                                 fi
12532                                 ;;
12533                         *)
12534                                 dflt="$randbits"
12535                                 ;;
12536                         esac
12537                         rp="How many bits does your $randfunc() function produce?"
12538                         . ./myread
12539                         randbits="$ans"
12540                         $rm -f try.c try
12541                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12542                         seedfunc="s$randfunc"
12543                         randseedtype=unsigned
12544                         ;;
12545                 *)
12546                         dflt="31"
12547                         rp="How many bits does your $randfunc() function produce?"
12548                         . ./myread
12549                         randbits="$ans"
12550                         seedfunc="s$randfunc"
12551                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12552                         if set $seedfunc val -f; eval $csym; $val; then
12553                                 echo "(Using $seedfunc() to seed random generator)"
12554                         else
12555                                 echo "(Warning: no $seedfunc() to seed random generator)"
12556                                 seedfunc=rand
12557                         fi
12558                         randseedtype=unsigned
12559                         ;;
12560                 esac
12561                 ;;
12562         esac
12563 done
12564
12565 echo " "
12566 echo "Determining whether or not we are on an EBCDIC system..." >&4
12567 $cat >tebcdic.c <<'EOM'
12568 int main()
12569 {
12570   if ('M'==0xd4) return 0;
12571   return 1;
12572 }
12573 EOM
12574
12575 val=$undef
12576 set tebcdic
12577 if eval $compile_ok; then
12578         if ./tebcdic; then
12579                 echo "You have EBCDIC." >&4
12580                 val="$define"
12581         else
12582                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12583         fi
12584 else
12585         echo "I'm unable to compile the test program." >&4
12586         echo "I'll assume ASCII or some ISO Latin." >&4
12587 fi
12588 $rm -f tebcdic.c tebcdic
12589 set ebcdic
12590 eval $setvar
12591
12592 echo " "
12593 $cat >&4 <<EOM
12594 Checking how to flush all pending stdio output...
12595 EOM
12596 # I only know how to find the first 32 possibly open files on SunOS.
12597 # See also hints/sunos_4_1.sh and util.c  --AD
12598 case "$osname" in
12599 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12600 esac
12601 $cat >>try.c <<EOCP
12602 #include <stdio.h>
12603 #$i_unistd I_UNISTD
12604 #ifdef I_UNISTD
12605 # include <unistd.h>
12606 #endif
12607 #$d_sysconf HAS_SYSCONF
12608 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12609 #ifdef HAS_STDIO_STREAM_ARRAY
12610 # define STDIO_STREAM_ARRAY $stdio_stream_array
12611 #endif
12612 int main() {
12613   FILE* p = fopen("try.out", "w");
12614 #ifdef TRY_FPUTC
12615   fputc('x', p);
12616 #else
12617 # ifdef TRY_FPRINTF
12618   fprintf(p, "x");
12619 # endif
12620 #endif
12621 #ifdef TRY_FFLUSH_NULL
12622   fflush(NULL);
12623 #endif
12624 #ifdef TRY_FFLUSH_ALL
12625   {
12626     long open_max = -1;
12627 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12628     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12629 # else
12630 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12631     open_max = sysconf(_SC_OPEN_MAX);
12632 #  else
12633 #   ifdef FOPEN_MAX
12634     open_max = FOPEN_MAX;
12635 #   else
12636 #    ifdef OPEN_MAX
12637     open_max = OPEN_MAX;
12638 #    else
12639 #     ifdef _NFILE
12640     open_max = _NFILE;
12641 #     endif
12642 #    endif
12643 #   endif
12644 #  endif
12645 # endif 
12646 # ifdef HAS_STDIO_STREAM_ARRAY
12647     if (open_max > 0) {
12648       long i;
12649       for (i = 0; i < open_max; i++)
12650             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12651                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12652                 STDIO_STREAM_ARRAY[i]._flag)
12653                 fflush(&STDIO_STREAM_ARRAY[i]);
12654     }   
12655   }
12656 # endif
12657 #endif
12658   _exit(42);
12659 }
12660 EOCP
12661 : first we have to find out how _not_ to flush
12662 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12663     output=''
12664     set try -DTRY_FPUTC
12665     if eval $compile; then
12666             $rm -f try.out
12667             ./try$exe_ext 2>/dev/null
12668             if $test ! -s try.out -a "X$?" = X42; then
12669                 output=-DTRY_FPUTC
12670             fi
12671     fi
12672     case "$output" in
12673     '')
12674             set try -DTRY_FPRINTF
12675             $rm -f try.out
12676             if eval $compile; then
12677                     $rm -f try.out
12678                     ./try$exe_ext 2>/dev/null
12679                     if $test ! -s try.out -a "X$?" = X42; then
12680                         output=-DTRY_FPRINTF
12681                     fi
12682             fi
12683         ;;
12684     esac
12685 fi
12686 : check for fflush NULL behaviour
12687 case "$fflushNULL" in
12688 '')     set try -DTRY_FFLUSH_NULL $output
12689         if eval $compile; then
12690                 $rm -f try.out
12691                 ./try$exe_ext 2>/dev/null
12692                 code="$?"
12693                 if $test -s try.out -a "X$code" = X42; then
12694                         fflushNULL="`$cat try.out`"
12695                 else
12696                         if $test "X$code" != X42; then
12697                                 $cat >&4 <<EOM
12698 (If this test failed, don't worry, we'll try another method shortly.)
12699 EOM
12700                         fi
12701                 fi
12702         fi
12703         $rm -f core try.core core.try.*
12704         case "$fflushNULL" in
12705         x)      $cat >&4 <<EOM
12706 Your fflush(NULL) works okay for output streams.
12707 Let's see if it clobbers input pipes...
12708 EOM
12709 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12710 # bug that improperly flushes the input end of pipes.  So we avoid the
12711 # autoflush on fork/system/exec support for now. :-(
12712 $cat >tryp.c <<EOCP
12713 #include <stdio.h>
12714 int
12715 main(int argc, char **argv)
12716 {
12717     char buf[1024];
12718     int i;
12719     char *bp = buf;
12720     while (1) {
12721         while ((i = getc(stdin)) != -1
12722                && (*bp++ = i) != '\n'
12723                && bp < &buf[1024])
12724         /* DO NOTHING */ ;
12725         *bp = '\0';
12726         fprintf(stdout, "%s", buf);
12727         fflush(NULL);
12728         if (i == -1)
12729             return 0;
12730         bp = buf;
12731     }
12732 }
12733 EOCP
12734                 fflushNULL="$define"
12735                 set tryp
12736                 if eval $compile; then
12737                     $rm -f tryp.out
12738                     $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12739                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
12740                        $cat >&4 <<EOM
12741 fflush(NULL) seems to behave okay with input streams.
12742 EOM
12743                         fflushNULL="$define"
12744                     else
12745                         $cat >&4 <<EOM
12746 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
12747 EOM
12748                         fflushNULL="$undef"
12749                     fi
12750                 fi
12751                 $rm -f core tryp.c tryp.core core.tryp.*
12752                 ;;
12753         '')     $cat >&4 <<EOM
12754 Your fflush(NULL) isn't working (contrary to ANSI C).
12755 EOM
12756                 fflushNULL="$undef"
12757                 ;;
12758         *)      $cat >&4 <<EOM
12759 Cannot figure out whether your fflush(NULL) works or not.
12760 I'm assuming it doesn't (contrary to ANSI C).
12761 EOM
12762                 fflushNULL="$undef"
12763                 ;;
12764         esac
12765         ;;
12766 $define|true|[yY]*)
12767         fflushNULL="$define"
12768         ;;
12769 *)
12770         fflushNULL="$undef"
12771         ;;
12772 esac
12773 : check explicit looping only if NULL did not work, and if the pipe
12774 : bug does not show up on an explicit flush too
12775 case "$fflushNULL" in
12776 "$undef")
12777         $cat >tryp.c <<EOCP
12778 #include <stdio.h>
12779 int
12780 main(int argc, char **argv)
12781 {
12782     char buf[1024];
12783     int i;
12784     char *bp = buf;
12785     while (1) {
12786         while ((i = getc(stdin)) != -1
12787                && (*bp++ = i) != '\n'
12788                && bp < &buf[1024])
12789         /* DO NOTHING */ ;
12790         *bp = '\0';
12791         fprintf(stdout, "%s", buf);
12792         fflush(stdin);
12793         if (i == -1)
12794             return 0;
12795         bp = buf;
12796     }
12797 }
12798 EOCP
12799         set tryp
12800         if eval $compile; then
12801             $rm -f tryp.out
12802             $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12803             if cmp tryp.c tryp.out >/dev/null 2>&1; then
12804                $cat >&4 <<EOM
12805 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12806 EOM
12807                 : now check for fflushall behaviour
12808                 case "$fflushall" in
12809                 '')     set try -DTRY_FFLUSH_ALL $output
12810                         if eval $compile; then
12811                                 $cat >&4 <<EOM
12812 (Now testing the other method--but note that this also may fail.)
12813 EOM
12814                                 $rm -f try.out
12815                                 ./try$exe_ext 2>/dev/null
12816                                 if $test -s try.out -a "X$?" = X42; then
12817                                         fflushall="`$cat try.out`"
12818                                 fi
12819                         fi
12820                         $rm -f core try.core core.try.*
12821                         case "$fflushall" in
12822                         x)      $cat >&4 <<EOM
12823 Whew. Flushing explicitly all the stdio streams works.
12824 EOM
12825                                 fflushall="$define"
12826                                 ;;
12827                         '')     $cat >&4 <<EOM
12828 Sigh. Flushing explicitly all the stdio streams doesn't work.
12829 EOM
12830                                 fflushall="$undef"
12831                                 ;;
12832                         *)      $cat >&4 <<EOM
12833 Cannot figure out whether flushing stdio streams explicitly works or not.
12834 I'm assuming it doesn't.
12835 EOM
12836                                 fflushall="$undef"
12837                                 ;;
12838                         esac
12839                         ;;
12840                 "$define"|true|[yY]*)
12841                         fflushall="$define"
12842                         ;;
12843                 *)
12844                         fflushall="$undef"
12845                         ;;
12846                 esac
12847             else
12848                 $cat >&4 <<EOM
12849 All is futile.  Even fflush(stdin) clobbers input pipes!
12850 EOM
12851                 fflushall="$undef"
12852             fi
12853         else
12854             fflushall="$undef"
12855         fi
12856         $rm -f core tryp.c tryp.core core.tryp.*
12857         ;;
12858 *)      fflushall="$undef"
12859         ;;
12860 esac
12861
12862 case "$fflushNULL$fflushall" in
12863 undefundef)
12864         $cat <<EOM
12865 OK, I give up.  I cannot figure out how to flush pending stdio output.
12866 We won't be flushing handles at all before fork/exec/popen.
12867 EOM
12868         ;;
12869 esac
12870 $rm -f try.* try$exe_ext
12871
12872 : Store the full pathname to the ar program for use in the C program
12873 : Respect a hint or command line value for full_ar.
12874 case "$full_ar" in
12875 '') full_ar=$ar ;;
12876 esac
12877
12878 : Store the full pathname to the sed program for use in the C program
12879 full_sed=$sed
12880
12881 : see what type gids are declared as in the kernel
12882 echo " "
12883 echo "Looking for the type for group ids returned by getgid()."
12884 set gid_t gidtype xxx stdio.h sys/types.h
12885 eval $typedef
12886 case "$gidtype" in
12887 xxx)
12888         xxx=`./findhdr sys/user.h`
12889         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12890         case $1 in
12891         unsigned) dflt="$1 $2" ;;
12892         *) dflt="$1" ;;
12893         esac
12894         ;;
12895 *) dflt="$gidtype";;
12896 esac
12897 case "$gidtype" in
12898 gid_t) echo "gid_t found." ;;
12899 *)      rp="What is the type for group ids returned by getgid()?"
12900         . ./myread
12901         gidtype="$ans"
12902         ;;
12903 esac
12904
12905 echo " "
12906 case "$gidtype" in
12907 *_t) zzz="$gidtype"     ;;
12908 *)   zzz="gid"          ;;
12909 esac
12910 echo "Checking the size of $zzz..." >&4 
12911 cat > try.c <<EOCP
12912 #include <sys/types.h>
12913 #include <stdio.h>
12914 int main() {
12915     printf("%d\n", (int)sizeof($gidtype));
12916     exit(0);
12917 }
12918 EOCP
12919 set try
12920 if eval $compile_ok; then
12921         yyy=`./try`
12922         case "$yyy" in
12923         '')     gidsize=4
12924                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12925                 ;;
12926         *)      gidsize=$yyy
12927                 echo "Your $zzz is $gidsize bytes long."
12928                 ;;
12929         esac
12930 else
12931         gidsize=4
12932         echo "(I can't compile the test program--guessing $gidsize.)" >&4
12933 fi
12934
12935
12936 echo " "
12937 case "$gidtype" in
12938 *_t) zzz="$gidtype"     ;;
12939 *)   zzz="gid"          ;;
12940 esac
12941 echo "Checking the sign of $zzz..." >&4 
12942 cat > try.c <<EOCP
12943 #include <sys/types.h>
12944 #include <stdio.h>
12945 int main() {
12946         $gidtype foo = -1;
12947         if (foo < 0)
12948                 printf("-1\n");
12949         else
12950                 printf("1\n");
12951 }
12952 EOCP
12953 set try
12954 if eval $compile; then
12955         yyy=`./try`
12956         case "$yyy" in
12957         '')     gidsign=1
12958                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12959                 ;;
12960         *)      gidsign=$yyy
12961                 case "$gidsign" in
12962                  1) echo "Your $zzz is unsigned." ;;
12963                 -1) echo "Your $zzz is signed."   ;;
12964                 esac
12965                 ;;
12966         esac
12967 else
12968         gidsign=1
12969         echo "(I can't compile the test program--guessing unsigned.)" >&4
12970 fi
12971
12972
12973 echo " "
12974
12975 if $test X"$quadtype" != X; then
12976
12977 echo "Checking how to print 64-bit integers..." >&4
12978
12979 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12980         $cat >try.c <<'EOCP'
12981 #include <sys/types.h>
12982 #include <stdio.h>
12983 int main() {
12984   int q = 12345678901;
12985   printf("%ld\n", q);
12986 }
12987 EOCP
12988         set try
12989         if eval $compile; then
12990                 yyy=`./try$exe_ext`
12991                 case "$yyy" in
12992                 12345678901)
12993                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12994                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12995                         echo "We will use %d."
12996                         ;;
12997                 esac
12998         fi
12999 fi
13000
13001 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13002         $cat >try.c <<'EOCP'
13003 #include <sys/types.h>
13004 #include <stdio.h>
13005 int main() {
13006   long q = 12345678901;
13007   printf("%ld\n", q);
13008 }
13009 EOCP
13010         set try
13011         if eval $compile; then
13012                 yyy=`./try$exe_ext`
13013                 case "$yyy" in
13014                 12345678901)
13015                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13016                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
13017                         echo "We will use %ld."
13018                         ;;
13019                 esac
13020         fi
13021 fi
13022
13023 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13024         $cat >try.c <<'EOCP'
13025 #include <sys/types.h>
13026 #include <inttypes.h>
13027 #include <stdio.h>
13028 int main() {
13029   int64_t q = 12345678901;
13030   printf("%" PRId64 "\n", q);
13031 }
13032 EOCP
13033         set try
13034         if eval $compile; then
13035                 yyy=`./try$exe_ext`
13036                 case "$yyy" in
13037                 12345678901)
13038                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13039                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
13040                         echo "We will use the C9X style."
13041                         ;;
13042                 esac
13043         fi
13044 fi
13045
13046 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13047         $cat >try.c <<'EOCP'
13048 #include <sys/types.h>
13049 #include <stdio.h>
13050 int main() {
13051   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
13052   printf("%lld\n", q);
13053 }
13054 EOCP
13055         set try
13056         if eval $compile; then
13057                 yyy=`./try$exe_ext`
13058                 case "$yyy" in
13059                 12345678901)
13060                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13061                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
13062                         echo "We will use the %lld style."
13063                         ;;
13064                 esac
13065         fi
13066 fi
13067
13068 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13069         $cat >try.c <<EOCP
13070 #include <sys/types.h>
13071 #include <stdio.h>
13072 int main() {
13073   $quadtype q = 12345678901;
13074   printf("%Ld\n", q);
13075 }
13076 EOCP
13077         set try
13078         if eval $compile; then
13079                 yyy=`./try$exe_ext`
13080                 case "$yyy" in
13081                 12345678901)
13082                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13083                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
13084                         echo "We will use %Ld."
13085                         ;;
13086                 esac
13087         fi
13088 fi
13089
13090 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13091         $cat >try.c <<EOCP
13092 #include <sys/types.h>
13093 #include <stdio.h>
13094 int main() {
13095   $quadtype q = 12345678901;
13096   printf("%qd\n", q);
13097 }
13098 EOCP
13099         set try
13100         if eval $compile; then
13101                 yyy=`./try$exe_ext`
13102                 case "$yyy" in
13103                 12345678901)
13104                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13105                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
13106                         echo "We will use %qd."
13107                         ;;
13108                 esac
13109         fi
13110 fi
13111
13112 if $test X"$sPRId64" = X; then
13113         echo "Cannot figure out how to print 64-bit integers." >&4
13114 fi
13115
13116 $rm -f try try.*
13117
13118 fi
13119
13120 case "$sPRId64" in
13121 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
13122         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
13123         ;;
13124 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
13125         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
13126         ;;
13127 esac
13128
13129
13130 echo " "
13131 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13132
13133 if $test X"$ivsize" = X8; then
13134         ivdformat="$sPRId64"
13135         uvuformat="$sPRIu64"
13136         uvoformat="$sPRIo64"
13137         uvxformat="$sPRIx64"
13138 else
13139         if $test X"$ivsize" = X"$longsize"; then
13140                 ivdformat='"ld"'
13141                 uvuformat='"lu"'
13142                 uvoformat='"lo"'
13143                 uvxformat='"lx"'
13144         else
13145                 if $test X"$ivsize" = X"$intsize"; then
13146                         ivdformat='"d"'
13147                         uvuformat='"u"'
13148                         uvoformat='"o"'
13149                         uvxformat='"x"'
13150                 else
13151                         : far out
13152                         if $test X"$ivsize" = X"$shortsize"; then
13153                                 ivdformat='"hd"'
13154                                 uvuformat='"hu"'
13155                                 uvoformat='"ho"'
13156                                 uvxformat='"hx"'
13157                         fi
13158                 fi
13159         fi
13160 fi
13161
13162 case "$ivdformat" in
13163 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13164     exit 1
13165     ;;
13166 esac
13167
13168
13169 echo " "
13170 $echo "Checking the format string to be used for gids..." >&4
13171
13172 case "$gidsign" in
13173 -1)     if $test X"$gidsize" = X"$ivsize"; then
13174                 gidformat="$ivdformat"
13175         else
13176                 if $test X"$gidsize" = X"$longsize"; then
13177                         gidformat='"ld"'
13178                 else
13179                         if $test X"$gidsize" = X"$intsize"; then
13180                                 gidformat='"d"'
13181                         else
13182                                 if $test X"$gidsize" = X"$shortsize"; then
13183                                         gidformat='"hd"'
13184                                 fi
13185                         fi
13186                 fi
13187         fi
13188         ;;
13189 *)      if $test X"$gidsize" = X"$uvsize"; then
13190                 gidformat="$uvuformat"
13191         else
13192                 if $test X"$gidsize" = X"$longsize"; then
13193                         gidformat='"lu"'
13194                 else
13195                         if $test X"$gidsize" = X"$intsize"; then
13196                                 gidformat='"u"'
13197                         else
13198                                 if $test X"$gidsize" = X"$shortsize"; then
13199                                         gidformat='"hu"'
13200                                 fi
13201                         fi
13202                 fi
13203         fi
13204         ;;
13205 esac
13206
13207 : see if getgroups exists
13208 set getgroups d_getgrps
13209 eval $inlibc
13210
13211 : see if setgroups exists
13212 set setgroups d_setgrps
13213 eval $inlibc
13214
13215
13216 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13217 echo " "
13218 case "$d_getgrps$d_setgrps" in
13219 *define*)
13220         case "$groupstype" in
13221         '') dflt="$gidtype" ;;
13222         *)  dflt="$groupstype" ;;
13223         esac
13224         $cat <<EOM
13225 What type of pointer is the second argument to getgroups() and setgroups()?
13226 Usually this is the same as group ids, $gidtype, but not always.
13227
13228 EOM
13229         rp='What type pointer is the second argument to getgroups() and setgroups()?'
13230         . ./myread
13231         groupstype="$ans"
13232         ;;
13233 *)  groupstype="$gidtype";;
13234 esac
13235
13236 echo " "
13237 echo "Checking if your $make program sets \$(MAKE)..." >&4
13238 case "$make_set_make" in
13239 '')
13240         $sed 's/^X //' > testmake.mak << 'EOF'
13241 Xall:
13242 X       @echo 'maketemp="$(MAKE)"'
13243 EOF
13244         case "`$make -f testmake.mak 2>/dev/null`" in
13245         *maketemp=*) make_set_make='#' ;;
13246         *)      make_set_make="MAKE=$make" ;;
13247         esac
13248         $rm -f testmake.mak
13249         ;;
13250 esac
13251 case "$make_set_make" in
13252 '#') echo "Yup, it does.";;
13253 *) echo "Nope, it doesn't.";;
13254 esac
13255
13256 : see what type is used for mode_t
13257 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13258 set mode_t modetype int stdio.h sys/types.h
13259 eval $typedef_ask
13260
13261 : define a fucntion to check prototypes
13262 $cat > protochk <<EOSH
13263 $startsh
13264 cc="$cc"
13265 optimize="$optimize"
13266 ccflags="$ccflags"
13267 prototype="$prototype"
13268 define="$define"
13269 rm=$rm
13270 EOSH
13271
13272 $cat >> protochk <<'EOSH'
13273
13274 $rm -f try.c
13275 foo="$1"
13276 shift
13277 while test $# -ge 2; do
13278         case "$1" in
13279                 $define) echo "#include <$2>" >> try.c ;;
13280                 literal) echo "$2" >> try.c ;;
13281         esac
13282     shift 2
13283 done
13284 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13285 cat >> try.c <<'EOCP'
13286 #ifdef CAN_PROTOTYPE
13287 #define _(args) args
13288 #else
13289 #define _(args) ()
13290 #endif
13291 EOCP
13292 echo "$foo" >> try.c
13293 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13294 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13295 status=$?
13296 $rm -f try.[co]
13297 exit $status
13298 EOSH
13299 chmod +x protochk
13300 $eunicefix protochk
13301
13302 : see what type is used for size_t
13303 rp="What is the type used for the length parameter for string functions?"
13304 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13305 eval $typedef_ask
13306
13307 : check for type of arguments to gethostbyaddr. 
13308 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13309         case "$d_gethbyaddr" in
13310         $define)
13311                 $cat <<EOM
13312
13313 Checking to see what type of arguments are accepted by gethostbyaddr().
13314 EOM
13315                 hdrs="$define sys/types.h
13316                         $d_socket sys/socket.h 
13317                         $i_niin netinet/in.h 
13318                         $i_netdb netdb.h
13319                         $i_unistd unistd.h"
13320                 : The first arg can 'char *' or 'void *'
13321                 : The second arg is some of integral type
13322                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13323                         for yyy in size_t long int; do
13324                                 case "$netdb_host_type" in
13325                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13326                                         if ./protochk "$try" $hdrs; then
13327                                                 echo "Your system accepts $xxx for the first arg."
13328                                                 echo "...and $yyy for the second arg."
13329                                                 netdb_host_type="$xxx"
13330                                                 netdb_hlen_type="$yyy"
13331                                         fi
13332                                         ;;
13333                                 esac
13334                         done
13335                 done
13336                 : In case none of those worked, prompt the user.
13337                 case "$netdb_host_type" in
13338                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
13339                         dflt='char *'
13340                         . ./myread
13341                         netdb_host_type=$ans
13342                         rp='What is the type for the 2nd argument to gethostbyaddr?'
13343                         dflt="$sizetype"
13344                         . ./myread
13345                         netdb_hlen_type=$ans
13346                         ;;
13347                 esac
13348                 ;;
13349         *)      : no gethostbyaddr, so pick harmless defaults
13350                 netdb_host_type='char *'
13351                 netdb_hlen_type="$sizetype"
13352                 ;;
13353         esac
13354         # Remove the "const" if needed. -- but then we'll have a 
13355         # prototype clash!
13356         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13357 fi
13358
13359 : check for type of argument to gethostbyname. 
13360 if test "X$netdb_name_type" = X ; then
13361         case "$d_gethbyname" in
13362         $define)
13363                 $cat <<EOM
13364
13365 Checking to see what type of argument is accepted by gethostbyname().
13366 EOM
13367                 hdrs="$define sys/types.h
13368                         $d_socket sys/socket.h 
13369                         $i_niin netinet/in.h 
13370                         $i_netdb netdb.h
13371                         $i_unistd unistd.h"
13372                 for xxx in "const char *" "char *"; do
13373                         case "$netdb_name_type" in
13374                         '')     try="extern struct hostent *gethostbyname($xxx);"
13375                                 if ./protochk "$try" $hdrs; then
13376                                         echo "Your system accepts $xxx."
13377                                         netdb_name_type="$xxx"
13378                                 fi
13379                                 ;;
13380                         esac
13381                 done
13382                 : In case none of those worked, prompt the user.
13383                 case "$netdb_name_type" in
13384                 '')     rp='What is the type for the 1st argument to gethostbyname?'
13385                         dflt='char *'
13386                         . ./myread
13387                         netdb_name_type=$ans
13388                         ;;
13389                 esac
13390                 ;;
13391         *)      : no gethostbyname, so pick harmless default
13392                 netdb_name_type='char *'
13393                 ;;
13394         esac
13395 fi
13396
13397 : check for type of 1st argument to getnetbyaddr. 
13398 if test "X$netdb_net_type" = X ; then
13399         case "$d_getnbyaddr" in
13400         $define)
13401                 $cat <<EOM
13402
13403 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13404 EOM
13405                 hdrs="$define sys/types.h
13406                         $d_socket sys/socket.h 
13407                         $i_niin netinet/in.h 
13408                         $i_netdb netdb.h
13409                         $i_unistd unistd.h"
13410                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13411                         case "$netdb_net_type" in
13412                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
13413                                 if ./protochk "$try" $hdrs; then
13414                                         echo "Your system accepts $xxx."
13415                                         netdb_net_type="$xxx"
13416                                 fi
13417                                 ;;
13418                         esac
13419                 done
13420                 : In case none of those worked, prompt the user.
13421                 case "$netdb_net_type" in
13422                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
13423                         dflt='long'
13424                         . ./myread
13425                         netdb_net_type=$ans
13426                         ;;
13427                 esac
13428                 ;;
13429         *)      : no getnetbyaddr, so pick harmless default
13430                 netdb_net_type='long'
13431                 ;;
13432         esac
13433 fi
13434 : locate the preferred pager for this system
13435 case "$pager" in
13436 '')
13437         dflt=''
13438         case "$pg" in
13439         /*) dflt=$pg;;
13440         esac
13441         case "$more" in
13442         /*) dflt=$more;;
13443         esac
13444         case "$less" in
13445         /*) dflt=$less;;
13446         esac
13447         case "$dflt" in
13448         '') dflt=/usr/ucb/more;;
13449         esac
13450         ;;
13451 *) dflt="$pager";;
13452 esac
13453 echo " "
13454 fn=f/
13455 rp='What pager is used on your system?'
13456 . ./getfile
13457 pager="$ans"
13458
13459 : see what type pids are declared as in the kernel
13460 rp="What is the type of process ids on this system?"
13461 set pid_t pidtype int stdio.h sys/types.h
13462 eval $typedef_ask
13463
13464 : Find earliest binary compatible site_perl subdirectory perl can use.
13465 case "$bincompat5005" in
13466 "$define") xs_apiversion='5.005' ;;
13467 *) xs_apiversion=$version ;;   # The current site_perl version.
13468 esac
13469 : Find earliest pure perl site_perl subdirectory perl can use.
13470 : The versioned directories started at 5.005.
13471 pm_apiversion='5.005'
13472
13473 : check for length of pointer
13474 echo " "
13475 case "$ptrsize" in
13476 '')
13477         echo "Checking to see how big your pointers are..." >&4
13478         if test "$voidflags" -gt 7; then
13479                 echo '#define VOID_PTR char *' > try.c
13480         else
13481                 echo '#define VOID_PTR void *' > try.c
13482         fi
13483         $cat >>try.c <<'EOCP'
13484 #include <stdio.h>
13485 int main()
13486 {
13487     printf("%d\n", (int)sizeof(VOID_PTR));
13488     exit(0);
13489 }
13490 EOCP
13491         set try
13492         if eval $compile_ok; then
13493                 ptrsize=`./try`
13494                 echo "Your pointers are $ptrsize bytes long."
13495         else
13496                 dflt='4'
13497                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
13498                 rp="What is the size of a pointer (in bytes)?"
13499                 . ./myread
13500                 ptrsize="$ans"
13501         fi
13502         ;;
13503 esac
13504 $rm -f try.c try
13505
13506 : see if ar generates random libraries by itself
13507 echo " "
13508 echo "Checking how to generate random libraries on your machine..." >&4
13509 echo 'int bar1() { return bar2(); }' > bar1.c
13510 echo 'int bar2() { return 2; }' > bar2.c
13511 $cat > foo.c <<'EOP'
13512 int main() { printf("%d\n", bar1()); exit(0); }
13513 EOP
13514 $cc $ccflags -c bar1.c >/dev/null 2>&1
13515 $cc $ccflags -c bar2.c >/dev/null 2>&1
13516 $cc $ccflags -c foo.c >/dev/null 2>&1
13517 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13518 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13519         ./foobar >/dev/null 2>&1; then
13520         echo "$ar appears to generate random libraries itself."
13521         orderlib=false
13522         ranlib=":"
13523 elif $ar ts bar$_a >/dev/null 2>&1 &&
13524         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13525         ./foobar >/dev/null 2>&1; then
13526                 echo "a table of contents needs to be added with '$ar ts'."
13527                 orderlib=false
13528                 ranlib="$ar ts"
13529 else
13530         case "$ranlib" in
13531         :) ranlib='';;
13532         '')
13533                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13534                 $test -f $ranlib || ranlib=''
13535                 ;;
13536         esac
13537         if $test -n "$ranlib"; then
13538                 echo "your system has '$ranlib'; we'll use that."
13539                 orderlib=false
13540         else
13541                 echo "your system doesn't seem to support random libraries"
13542                 echo "so we'll use lorder and tsort to order the libraries."
13543                 orderlib=true
13544                 ranlib=":"
13545         fi
13546 fi
13547 $rm -f foo* bar* 
13548
13549 : check for type of arguments to select. 
13550 case "$selecttype" in
13551 '') case "$d_select" in
13552         $define)
13553                 echo " "
13554                 $cat <<EOM
13555 Checking to see what type of arguments are accepted by select().
13556 EOM
13557                 hdrs="$define sys/types.h
13558                         $i_systime sys/time.h 
13559                         $i_sysselct sys/select.h
13560                         $d_socket sys/socket.h"
13561                 : The first arg can be int, unsigned, or size_t
13562                 : The last arg may or may not be 'const'
13563                 val=''
13564                 : void pointer has been seen but using that
13565                 : breaks the selectminbits test
13566                 for xxx in 'fd_set *' 'int *'; do
13567                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13568                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
13569                                         case "$val" in
13570                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13571                                                 if ./protochk "$try" $hdrs; then
13572                                                         echo "Your system accepts $xxx."
13573                                                         val="$xxx"
13574                                                 fi
13575                                                 ;;
13576                                         esac
13577                                 done
13578                         done
13579                 done
13580                 case "$val" in
13581                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13582                         case "$d_fd_set" in
13583                                 $define) dflt="fd_set *" ;;
13584                                 *)              dflt="int *" ;;
13585                         esac
13586                         . ./myread
13587                         val=$ans
13588                         ;;
13589                 esac
13590                 selecttype="$val"
13591                 ;;
13592         *)      : no select, so pick a harmless default
13593                 selecttype='int *'
13594                 ;;
13595         esac
13596         ;;
13597 esac
13598
13599 : check for the select 'width'
13600 case "$selectminbits" in
13601 '') case "$d_select" in
13602         $define)
13603                 $cat <<EOM
13604
13605 Checking to see on how many bits at a time your select() operates...
13606 EOM
13607                 $cat >try.c <<EOCP
13608 #include <sys/types.h>
13609 #$i_time I_TIME
13610 #$i_systime I_SYS_TIME
13611 #$i_systimek I_SYS_TIME_KERNEL
13612 #ifdef I_TIME
13613 #   include <time.h>
13614 #endif
13615 #ifdef I_SYS_TIME
13616 #   ifdef I_SYS_TIME_KERNEL
13617 #       define KERNEL
13618 #   endif
13619 #   include <sys/time.h>
13620 #   ifdef I_SYS_TIME_KERNEL
13621 #       undef KERNEL
13622 #   endif
13623 #endif
13624 #$i_sysselct I_SYS_SELECT
13625 #ifdef I_SYS_SELECT
13626 #include <sys/select.h>
13627 #endif
13628 #$d_socket HAS_SOCKET
13629 #ifdef HAS_SOCKET
13630 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13631 #endif
13632 #include <stdio.h>
13633 $selecttype b;
13634 #define S sizeof(*(b))
13635 #define MINBITS 64
13636 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13637 #define NBITS  (NBYTES * 8)
13638 int main() {
13639     char s[NBYTES];
13640     struct timeval t;
13641     int i;
13642     FILE* fp;
13643     int fd;
13644
13645     fclose(stdin);
13646     fp = fopen("try.c", "r");
13647     if (fp == 0)
13648       exit(1);
13649     fd = fileno(fp);
13650     if (fd < 0)
13651       exit(2);
13652     b = ($selecttype)s;
13653     for (i = 0; i < NBITS; i++)
13654         FD_SET(i, b);
13655     t.tv_sec  = 0;
13656     t.tv_usec = 0;
13657     select(fd + 1, b, 0, 0, &t);
13658     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13659     printf("%d\n", i + 1);
13660     return 0;
13661 }
13662 EOCP
13663                 set try
13664                 if eval $compile_ok; then
13665                         selectminbits=`./try`
13666                         case "$selectminbits" in
13667                         '')     cat >&4 <<EOM
13668 Cannot figure out on how many bits at a time your select() operates.
13669 I'll play safe and guess it is 32 bits.
13670 EOM
13671                                 selectminbits=32
13672                                 bits="32 bits"
13673                                 ;;
13674                         1)      bits="1 bit" ;;
13675                         *)      bits="$selectminbits bits" ;;
13676                         esac
13677                         echo "Your select() operates on $bits at a time." >&4
13678                 else
13679                         rp='What is the minimum number of bits your select() operates on?'
13680                         case "$byteorder" in
13681                         1234|12345678)  dflt=32 ;;
13682                         *)              dflt=1  ;;
13683                         esac
13684                         . ./myread
13685                         val=$ans
13686                         selectminbits="$val"
13687                 fi
13688                 $rm -f try.* try
13689                 ;;
13690         *)      : no select, so pick a harmless default
13691                 selectminbits='32'
13692                 ;;
13693         esac
13694         ;;
13695 esac
13696
13697 : Trace out the files included by signal.h, then look for SIGxxx names.
13698 : Remove SIGARRAYSIZE used by HPUX.
13699 : Remove SIGSTKSIZE used by Linux.
13700 : Remove SIGSTKSZ used by Posix.
13701 : Remove SIGTYP void lines used by OS2.
13702 : Some cpps, like os390, dont give the file name anywhere
13703 if [ "X$fieldn" = X ]; then
13704         : Just make some guesses.  We check them later.
13705         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13706 else
13707         xxx=`echo '#include <signal.h>' |
13708         $cppstdin $cppminus $cppflags 2>/dev/null |
13709         $grep '^[       ]*#.*include' | 
13710         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13711 fi
13712 : Check this list of files to be sure we have parsed the cpp output ok.
13713 : This will also avoid potentially non-existent files, such 
13714 : as ../foo/bar.h
13715 xxxfiles=''
13716 for xx in $xxx /dev/null ; do
13717         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13718 done
13719 : If we have found no files, at least try signal.h
13720 case "$xxxfiles" in
13721 '')     xxxfiles=`./findhdr signal.h` ;;
13722 esac
13723 xxx=`awk '
13724 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13725         print substr($2, 4, 20)
13726 }
13727 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13728         print substr($3, 4, 20)
13729 }' $xxxfiles`
13730 : Append some common names just in case the awk scan failed.
13731 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13732 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13733 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13734 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13735 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13736
13737 : generate a few handy files for later
13738 $cat > signal.c <<'EOCP'
13739 #include <sys/types.h>
13740 #include <signal.h>
13741 #include <stdio.h>
13742 int main() {
13743
13744 /* Strange style to avoid deeply-nested #if/#else/#endif */
13745 #ifndef NSIG
13746 #  ifdef _NSIG
13747 #    define NSIG (_NSIG)
13748 #  endif
13749 #endif
13750
13751 #ifndef NSIG
13752 #  ifdef SIGMAX
13753 #    define NSIG (SIGMAX+1)
13754 #  endif
13755 #endif
13756
13757 #ifndef NSIG
13758 #  ifdef SIG_MAX
13759 #    define NSIG (SIG_MAX+1)
13760 #  endif
13761 #endif
13762
13763 #ifndef NSIG
13764 #  ifdef MAXSIG
13765 #    define NSIG (MAXSIG+1)
13766 #  endif
13767 #endif
13768
13769 #ifndef NSIG
13770 #  ifdef MAX_SIG
13771 #    define NSIG (MAX_SIG+1)
13772 #  endif
13773 #endif
13774
13775 #ifndef NSIG
13776 #  ifdef SIGARRAYSIZE
13777 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13778 #  endif
13779 #endif
13780
13781 #ifndef NSIG
13782 #  ifdef _sys_nsig
13783 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13784 #  endif
13785 #endif
13786
13787 /* Default to some arbitrary number that's big enough to get most
13788    of the common signals.
13789 */
13790 #ifndef NSIG
13791 #    define NSIG 50
13792 #endif
13793
13794 printf("NSIG %d\n", NSIG);
13795
13796 #ifndef JUST_NSIG
13797
13798 EOCP
13799
13800 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13801 {
13802         printf "#ifdef SIG"; printf $1; printf "\n"
13803         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13804         printf $1; printf ");\n"
13805         printf "#endif\n"
13806 }
13807 END {
13808         printf "#endif /* JUST_NSIG */\n";
13809         printf "exit(0);\n}\n";
13810 }
13811 ' >>signal.c
13812 $cat >signal.awk <<'EOP'
13813 BEGIN { ndups = 0 }
13814 $1 ~ /^NSIG$/ { nsig = $2 }
13815 ($1 !~ /^NSIG$/) && (NF == 2) {
13816     if ($2 > maxsig) { maxsig = $2 }
13817     if (sig_name[$2]) {
13818         dup_name[ndups] = $1
13819         dup_num[ndups] = $2
13820         ndups++ 
13821     }
13822     else {
13823         sig_name[$2] = $1
13824         sig_num[$2] = $2
13825     }
13826 }
13827 END { 
13828     if (nsig == 0) {
13829         nsig = maxsig + 1
13830     }
13831     printf("NSIG %d\n", nsig);
13832     for (n = 1; n < nsig; n++) {
13833         if (sig_name[n]) {
13834             printf("%s %d\n", sig_name[n], sig_num[n])
13835         }
13836         else {
13837             printf("NUM%d %d\n", n, n) 
13838         }
13839     }
13840     for (n = 0; n < ndups; n++) {
13841         printf("%s %d\n", dup_name[n], dup_num[n])
13842     }
13843 }
13844 EOP
13845 $cat >signal_cmd <<EOS
13846 $startsh
13847 if $test -s signal.lst; then
13848     echo "Using your existing signal.lst file"
13849         exit 0
13850 fi
13851 xxx="$xxx"
13852 EOS
13853 $cat >>signal_cmd <<'EOS'
13854
13855 set signal
13856 if eval $compile_ok; then
13857         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13858 else
13859         echo "(I can't seem be able to compile the whole test program)" >&4
13860         echo "(I'll try it in little pieces.)" >&4
13861         set signal -DJUST_NSIG
13862         if eval $compile_ok; then
13863                 ./signal$_exe > signal.nsg
13864                 $cat signal.nsg
13865         else
13866                 echo "I can't seem to figure out how many signals you have." >&4
13867                 echo "Guessing 50." >&4
13868                 echo 'NSIG 50' > signal.nsg
13869         fi
13870         : Now look at all the signal names, one at a time.
13871         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13872                 $cat > signal.c <<EOCP
13873 #include <sys/types.h>
13874 #include <signal.h>
13875 #include <stdio.h>
13876 int main() {
13877 printf("$xx %d\n", SIG${xx});
13878 return 0;
13879 }
13880 EOCP
13881                 set signal
13882                 if eval $compile; then
13883                         echo "SIG${xx} found."
13884                         ./signal$_exe  >> signal.ls1
13885                 else
13886                         echo "SIG${xx} NOT found."
13887                 fi
13888         done
13889         if $test -s signal.ls1; then
13890                 $cat signal.nsg signal.ls1 |
13891                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13892         fi
13893
13894 fi
13895 if $test -s signal.lst; then
13896         :
13897 else
13898         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13899         echo 'kill -l' >signal
13900         set X `csh -f <signal`
13901         $rm -f signal
13902         shift
13903         case $# in
13904         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13905         esac
13906         echo $@ | $tr ' ' $trnl | \
13907             $awk '{ printf "%s %d\n", $1, ++s; }
13908                   END { printf "NSIG %d\n", ++s }' >signal.lst
13909 fi
13910 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13911 EOS
13912 chmod a+x signal_cmd
13913 $eunicefix signal_cmd
13914
13915 : generate list of signal names
13916 echo " "
13917 case "$sig_name_init" in
13918 '') doinit=yes ;;
13919 *)  case "$sig_num_init" in
13920     ''|*,*) doinit=yes ;;
13921     esac ;;
13922 esac
13923 case "$doinit" in
13924 yes)
13925         echo "Generating a list of signal names and numbers..." >&4
13926         . ./signal_cmd
13927         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13928         sig_name=`$awk 'BEGIN { printf "ZERO " }
13929                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13930         sig_num=`$awk  'BEGIN { printf "0 " }
13931                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13932         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
13933                              !/^NSIG/   { printf "\"%s\", ", $1 }
13934                              END        { printf "0\n" }' signal.lst`
13935         sig_num_init=`$awk  'BEGIN      { printf "0, " }
13936                              !/^NSIG/   { printf "%d, ", $2}
13937                              END        { printf "0\n"}' signal.lst`
13938         ;;
13939 esac
13940 echo "The following $sig_count signals are available:"
13941 echo " "
13942 echo $sig_name | $awk \
13943 'BEGIN { linelen = 0 }
13944 {
13945         for (i = 1; i <= NF; i++) {
13946                 name = "SIG" $i " "
13947                 linelen = linelen + length(name)
13948                 if (linelen > 70) {
13949                         printf "\n"
13950                         linelen = length(name)
13951                 }
13952                 printf "%s", name
13953         }
13954         printf "\n"
13955 }'
13956 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
13957
13958 echo " "
13959 case "$sizetype" in
13960 *_t) zzz="$sizetype"    ;;
13961 *)   zzz="filesize"     ;;
13962 esac
13963 echo "Checking the size of $zzz..." >&4 
13964 cat > try.c <<EOCP
13965 #include <sys/types.h>
13966 #include <stdio.h>
13967 int main() {
13968     printf("%d\n", (int)sizeof($sizetype));
13969     exit(0);
13970 }
13971 EOCP
13972 set try
13973 if eval $compile_ok; then
13974         yyy=`./try`
13975         case "$yyy" in
13976         '')     sizesize=4
13977                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
13978                 ;;
13979         *)      sizesize=$yyy
13980                 echo "Your $zzz size is $sizesize bytes."
13981                 ;;
13982         esac
13983 else
13984         sizesize=4
13985         echo "(I can't compile the test program--guessing $sizesize.)" >&4
13986 fi
13987
13988
13989 : check for socklen_t
13990 echo " "
13991 echo "Checking to see if you have socklen_t..." >&4
13992 $cat >try.c <<EOCP
13993 #include <sys/types.h>
13994 #$d_socket HAS_SOCKET
13995 #ifdef HAS_SOCKET
13996 #include <sys/socket.h>
13997 #endif
13998 int main() { socklen_t x = 16; }
13999 EOCP
14000 set try
14001 if eval $compile; then
14002         val="$define"
14003         echo "You have socklen_t."
14004 else
14005         val="$undef"
14006         echo "You do not have socklen_t."
14007         case "$sizetype" in
14008         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14009         esac
14010 fi
14011 $rm -f try try.*
14012 set d_socklen_t
14013 eval $setvar
14014
14015 : check for type of the size argument to socket calls
14016 case "$d_socket" in
14017 "$define")
14018         $cat <<EOM
14019
14020 Checking to see what type is the last argument of accept().
14021 EOM
14022         hdrs="$define sys/types.h $d_socket sys/socket.h" 
14023         yyy=''
14024         case "$d_socklen_t" in
14025         "$define") yyy="$yyy socklen_t"
14026         esac
14027         yyy="$yyy $sizetype int long unsigned"
14028         for xxx in $yyy; do
14029                 case "$socksizetype" in
14030                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
14031                         if ./protochk "$try" $hdrs; then
14032                                 echo "Your system accepts '$xxx *' for the last argument of accept()."
14033                                 socksizetype="$xxx"
14034                         fi
14035                         ;;
14036                 esac
14037         done
14038 : In case none of those worked, prompt the user.
14039         case "$socksizetype" in
14040         '')     rp='What is the type for socket address structure sizes?'
14041                 dflt='int'
14042                 . ./myread
14043                 socksizetype=$ans
14044                 ;;
14045         esac
14046         ;;
14047 *)      : no sockets, so pick relatively harmless default
14048         socksizetype='int'
14049         ;;
14050 esac
14051
14052 : see what type is used for signed size_t
14053 set ssize_t ssizetype int stdio.h sys/types.h
14054 eval $typedef
14055 dflt="$ssizetype"
14056 $cat > ssize.c <<EOM
14057 #include <stdio.h>
14058 #include <sys/types.h>
14059 #define Size_t $sizetype
14060 #define SSize_t $dflt
14061 int main()
14062 {
14063         if (sizeof(Size_t) == sizeof(SSize_t))
14064                 printf("$dflt\n");
14065         else if (sizeof(Size_t) == sizeof(int))
14066                 printf("int\n");
14067         else 
14068                 printf("long\n");
14069         exit(0);
14070 }
14071 EOM
14072 echo " "
14073 set ssize
14074 if eval $compile_ok && ./ssize > /dev/null; then
14075         ssizetype=`./ssize`
14076         echo "I'll be using $ssizetype for functions returning a byte count." >&4
14077 else
14078         $cat >&4 <<EOM
14079 Help! I can't compile and run the ssize_t test program: please enlighten me!
14080 (This is probably a misconfiguration in your system or libraries, and
14081 you really ought to fix it.  Still, I'll try anyway.)
14082
14083 I need a type that is the same size as $sizetype, but is guaranteed to
14084 be signed.  Common values are ssize_t, int and long.
14085
14086 EOM
14087         rp="What signed type is the same size as $sizetype?"
14088         . ./myread
14089         ssizetype="$ans"
14090 fi
14091 $rm -f ssize ssize.*
14092
14093 : see what type of char stdio uses.
14094 echo " "
14095 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14096         echo "Your stdio uses unsigned chars." >&4
14097         stdchar="unsigned char"
14098 else
14099         echo "Your stdio uses signed chars." >&4
14100         stdchar="char"
14101 fi
14102
14103 : see if time exists
14104 echo " "
14105 if test "X$d_time" = X -o X"$timetype" = X; then
14106     if set time val -f d_time; eval $csym; $val; then
14107                 echo 'time() found.' >&4
14108                 val="$define"
14109                 rp="What is the type returned by time() on this system?"
14110                 set time_t timetype long stdio.h sys/types.h
14111                 eval $typedef_ask
14112     else
14113                 echo 'time() not found, hope that will do.' >&4
14114                 val="$undef"
14115                 timetype='int';
14116     fi
14117     set d_time
14118     eval $setvar
14119 fi
14120
14121 : see what type uids are declared as in the kernel
14122 echo " "
14123 echo "Looking for the type for user ids returned by getuid()."
14124 set uid_t uidtype xxx stdio.h sys/types.h
14125 eval $typedef
14126 case "$uidtype" in
14127 xxx)
14128         xxx=`./findhdr sys/user.h`
14129         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14130         case $1 in
14131         unsigned) dflt="$1 $2" ;;
14132         *) dflt="$1" ;;
14133         esac
14134         ;;
14135 *) dflt="$uidtype";;
14136 esac
14137 case "$uidtype" in
14138 uid_t)  echo "uid_t found." ;;
14139 *)      rp="What is the type for user ids returned by getuid()?"
14140         . ./myread
14141         uidtype="$ans"
14142         ;;
14143 esac
14144
14145 echo " "
14146 case "$uidtype" in
14147 *_t) zzz="$uidtype"     ;;
14148 *)   zzz="uid"          ;;
14149 esac
14150 echo "Checking the size of $zzz..." >&4 
14151 cat > try.c <<EOCP
14152 #include <sys/types.h>
14153 #include <stdio.h>
14154 int main() {
14155     printf("%d\n", (int)sizeof($uidtype));
14156     exit(0);
14157 }
14158 EOCP
14159 set try
14160 if eval $compile_ok; then
14161         yyy=`./try`
14162         case "$yyy" in
14163         '')     uidsize=4
14164                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14165                 ;;
14166         *)      uidsize=$yyy
14167                 echo "Your $zzz is $uidsize bytes long."
14168                 ;;
14169         esac
14170 else
14171         uidsize=4
14172         echo "(I can't compile the test program--guessing $uidsize.)" >&4
14173 fi
14174
14175 echo " "
14176 case "$uidtype" in
14177 *_t) zzz="$uidtype"     ;;
14178 *)   zzz="uid"          ;;
14179 esac
14180 echo "Checking the sign of $zzz..." >&4
14181 cat > try.c <<EOCP
14182 #include <sys/types.h>
14183 #include <stdio.h>
14184 int main() {
14185         $uidtype foo = -1;
14186         if (foo < 0)
14187                 printf("-1\n");
14188         else
14189                 printf("1\n");
14190 }
14191 EOCP
14192 set try
14193 if eval $compile; then
14194         yyy=`./try`
14195         case "$yyy" in
14196         '')     uidsign=1
14197                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14198                 ;;
14199         *)      uidsign=$yyy
14200                 case "$uidsign" in
14201                  1) echo "Your $zzz is unsigned." ;;
14202                 -1) echo "Your $zzz is signed."   ;;
14203                 esac
14204                 ;;
14205         esac
14206 else
14207         uidsign=1
14208         echo "(I can't compile the test program--guessing unsigned.)" >&4
14209 fi
14210
14211
14212
14213 echo " "
14214 $echo "Checking the format string to be used for uids..." >&4
14215
14216 case "$uidsign" in
14217 -1)     if $test X"$uidsize" = X"$ivsize"; then
14218                 uidformat="$ivdformat"
14219         else
14220                 if $test X"$uidsize" = X"$longsize"; then
14221                         uidformat='"ld"'
14222                 else
14223                         if $test X"$uidsize" = X"$intsize"; then
14224                                 uidformat='"d"'
14225                         else
14226                                 if $test X"$uidsize" = X"$shortsize"; then
14227                                         uidformat='"hd"'
14228                                 fi
14229                         fi
14230                 fi
14231         fi
14232         ;;
14233 *)      if $test X"$uidsize" = X"$uvsize"; then
14234                 uidformat="$uvuformat"
14235         else
14236                 if $test X"$uidsize" = X"$longsize"; then
14237                         uidformat='"lu"'
14238                 else
14239                         if $test X"$uidsize" = X"$intsize"; then
14240                                 uidformat='"u"'
14241                         else
14242                                 if $test X"$uidsize" = X"$shortsize"; then
14243                                         uidformat='"hu"'
14244                                 fi
14245                         fi
14246                 fi
14247         fi
14248         ;;
14249 esac
14250
14251 : see if dbm.h is available
14252 : see if dbmclose exists
14253 set dbmclose d_dbmclose
14254 eval $inlibc
14255
14256 case "$d_dbmclose" in
14257 $define)
14258         set dbm.h i_dbm
14259         eval $inhdr
14260         case "$i_dbm" in
14261         $define)
14262                 val="$undef"
14263                 set i_rpcsvcdbm
14264                 eval $setvar
14265                 ;;
14266         *)      set rpcsvc/dbm.h i_rpcsvcdbm
14267                 eval $inhdr
14268                 ;;
14269         esac
14270         ;;
14271 *)      echo "We won't be including <dbm.h>"
14272         val="$undef"
14273         set i_dbm
14274         eval $setvar
14275         val="$undef"
14276         set i_rpcsvcdbm
14277         eval $setvar
14278         ;;
14279 esac
14280
14281 : see if this is a sys/file.h system
14282 val=''
14283 set sys/file.h val
14284 eval $inhdr
14285
14286 : do we need to include sys/file.h ?
14287 case "$val" in
14288 "$define")
14289         echo " "
14290         if $h_sysfile; then
14291                 val="$define"
14292                 echo "We'll be including <sys/file.h>." >&4
14293         else
14294                 val="$undef"
14295                 echo "We won't be including <sys/file.h>." >&4
14296         fi
14297         ;;
14298 *)
14299         h_sysfile=false
14300         ;;
14301 esac
14302 set i_sysfile
14303 eval $setvar
14304
14305 : see if fcntl.h is there
14306 val=''
14307 set fcntl.h val
14308 eval $inhdr
14309
14310 : see if we can include fcntl.h
14311 case "$val" in
14312 "$define")
14313         echo " "
14314         if $h_fcntl; then
14315                 val="$define"
14316                 echo "We'll be including <fcntl.h>." >&4
14317         else
14318                 val="$undef"
14319                 if $h_sysfile; then
14320         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14321                 else
14322                         echo "We won't be including <fcntl.h>." >&4
14323                 fi
14324         fi
14325         ;;
14326 *)
14327         h_fcntl=false
14328         val="$undef"
14329         ;;
14330 esac
14331 set i_fcntl
14332 eval $setvar
14333
14334 : see if this is a iconv.h system
14335 set iconv.h i_iconv
14336 eval $inhdr
14337
14338 : see if this is a ieeefp.h system
14339 set ieeefp.h i_ieeefp
14340 eval $inhdr
14341
14342 : see if locale.h is available
14343 set locale.h i_locale
14344 eval $inhdr
14345
14346 : see if mach cthreads are available
14347 if test "X$usethreads" = "X$define"; then
14348         set mach/cthreads.h i_machcthr
14349         eval $inhdr
14350 else
14351         i_machcthr="$undef"
14352 fi
14353
14354
14355
14356 : see if this is a math.h system
14357 set math.h i_math
14358 eval $inhdr
14359
14360 : see if this is a mntent.h system
14361 set mntent.h i_mntent
14362 eval $inhdr
14363
14364 : see if ndbm.h is available
14365 set ndbm.h t_ndbm
14366 eval $inhdr
14367 case "$t_ndbm" in
14368 $define)
14369         : see if dbm_open exists
14370         set dbm_open d_dbm_open
14371         eval $inlibc
14372         case "$d_dbm_open" in
14373         $undef)
14374                 t_ndbm="$undef"
14375                 echo "We won't be including <ndbm.h>"
14376                 ;;
14377         esac
14378         ;;
14379 esac
14380 val="$t_ndbm"
14381 set i_ndbm
14382 eval $setvar
14383
14384 : see if net/errno.h is available
14385 val=''
14386 set net/errno.h val
14387 eval $inhdr
14388
14389 : Unfortunately, it causes problems on some systems.  Arrgh.
14390 case "$val" in
14391 $define)
14392         cat > try.c <<'EOM'
14393 #include <stdio.h>
14394 #include <errno.h>
14395 #include <net/errno.h>
14396 int func()
14397 {
14398         return ENOTSOCK;
14399 }
14400 EOM
14401         if $cc $ccflags -c try.c >/dev/null 2>&1; then
14402                 echo "We'll be including <net/errno.h>." >&4
14403         else
14404                 echo "We won't be including <net/errno.h>." >&4
14405                 val="$undef"
14406         fi
14407         $rm -f try.* try
14408         ;;
14409 esac
14410 set i_neterrno
14411 eval $setvar
14412
14413 : see if netinet/tcp.h is available
14414 set netinet/tcp.h i_netinettcp
14415 eval $inhdr
14416
14417 : see if this is a poll.h system
14418 set poll.h i_poll
14419 eval $inhdr
14420
14421 : see if this is a prot.h system
14422 set prot.h i_prot
14423 eval $inhdr
14424
14425 echo " "
14426 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
14427 $cat <<'EOSH' > Cppsym.know
14428 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14429 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14430 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14431 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14432 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14433 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14434 bull c cadmus clipper CMU COFF COMPILER_VERSION
14435 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14436 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14437 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14438 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14439 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14440 H3050R H3050RX hbullx20 hcx host_mips
14441 hp200 hp300 hp700 HP700 hp800 hp9000
14442 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14443 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14444 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14445 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14446 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14447 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14448 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14449 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14450 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14451 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14452 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14453 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14454 MATH_HAS_NO_SIDE_EFFECTS
14455 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14456 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14457 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14458 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14459 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14460 NetBSD news1500 news1700 news1800 news1900 news3700
14461 news700 news800 news900 NeXT NLS ns16000 ns32000
14462 ns32016 ns32332 ns32k nsc32000
14463 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14464 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14465 pc532 pdp11 PGC PIC plexus PORTAR posix
14466 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14467 POSIX_C_SOURCE POSIX_SOURCE POWER
14468 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14469 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14470 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14471 sony sony_news sonyrisc sparc sparclite spectrum
14472 stardent stdc STDC_EXT stratos sun sun3 sun386
14473 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14474 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14475 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14476 sysV68 sysV88 Tek4132 Tek4300 titan
14477 tower tower32 tower32_200 tower32_600 tower32_700
14478 tower32_800 tower32_850 tss
14479 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14480 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14481 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14482 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14483 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14484 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14485 z8000
14486 EOSH
14487 # Maybe put other stuff here too.
14488 cat <<EOSH >>Cppsym.know
14489 $osname
14490 EOSH
14491 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14492 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14493 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
14494 $rm -f Cppsym.a Cppsym.b
14495 cat <<EOSH > Cppsym
14496 $startsh
14497 if $test \$# -gt 0; then
14498     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14499     if $test -s Cppsym.got; then
14500         $rm -f Cppsym.got
14501         exit 0
14502     fi
14503     $rm -f Cppsym.got
14504     exit 1
14505 else
14506     $tr " " "$trnl" | ./Cppsym.try
14507     exit 0
14508 fi
14509 EOSH
14510 chmod +x Cppsym
14511 $eunicefix Cppsym
14512 cat <<EOSH > Cppsym.try
14513 $startsh
14514 cat <<'EOCP' > try.c
14515 #include <stdio.h>
14516 int main() {
14517 EOCP
14518 $awk \\
14519 EOSH
14520 cat <<'EOSH' >> Cppsym.try
14521 'length($1) > 0 {
14522     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
14523     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
14524     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
14525     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
14526 }'       >> try.c
14527 echo '}' >> try.c
14528 EOSH
14529 cat <<EOSH >> Cppsym.try
14530 ccflags="$ccflags"
14531 case "$osname-$gccversion" in
14532 irix-) ccflags="\$ccflags -woff 1178" ;;
14533 esac
14534 $cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14535 EOSH
14536 chmod +x Cppsym.try
14537 $eunicefix Cppsym.try
14538 ./Cppsym < Cppsym.know > Cppsym.true
14539 : now check the C compiler for additional symbols
14540 postprocess_cc_v=''
14541 case "$osname" in
14542 aix) postprocess_cc_v="|$tr , ' '" ;;
14543 esac
14544 $cat >ccsym <<EOS
14545 $startsh
14546 $cat >tmp.c <<EOF
14547 extern int foo;
14548 EOF
14549 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14550 do
14551         case "\$i" in
14552         -D*) echo "\$i" | $sed 's/^-D//';;
14553         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14554         esac
14555 done
14556 $rm -f try.c
14557 EOS
14558 postprocess_cc_v=''
14559 chmod +x ccsym
14560 $eunicefix ccsym
14561 ./ccsym > ccsym1.raw
14562 if $test -s ccsym1.raw; then
14563        $sort ccsym1.raw | $uniq >ccsym.raw
14564 else
14565        mv ccsym1.raw ccsym.raw
14566 fi
14567
14568 $awk '/\=/ { print $0; next }
14569         { print $0"=1" }' ccsym.raw >ccsym.list
14570 $awk '/\=/ { print $0; next }
14571         { print $0"=1" }' Cppsym.true >ccsym.true
14572 $comm -13 ccsym.true ccsym.list >ccsym.own
14573 $comm -12 ccsym.true ccsym.list >ccsym.com
14574 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14575 also=''
14576 if $test -z ccsym.raw; then
14577         echo "Your C compiler doesn't seem to define any symbols!" >&4
14578         echo " "
14579         echo "However, your C preprocessor defines the following symbols:"
14580         $cat Cppsym.true
14581         ccsymbols=''
14582         cppsymbols=`$cat Cppsym.true`
14583         cppsymbols=`echo $cppsymbols`
14584         cppccsymbols="$cppsymbols"
14585 else
14586         if $test -s ccsym.com; then
14587                 echo "Your C compiler and pre-processor define these symbols:"
14588                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
14589                 also='also '
14590                 symbols='ones'
14591                 cppccsymbols=`$cat ccsym.com`
14592                 cppccsymbols=`echo $cppccsymbols`
14593                 $test "$silent" || sleep 1
14594         fi
14595         if $test -s ccsym.cpp; then
14596                 $test "$also" && echo " "
14597                 echo "Your C pre-processor ${also}defines the following symbols:"
14598                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
14599                 also='further '
14600                 cppsymbols=`$cat ccsym.cpp`
14601                 cppsymbols=`echo $cppsymbols`
14602                 $test "$silent" || sleep 1
14603         fi
14604         if $test -s ccsym.own; then
14605                 $test "$also" && echo " "
14606                 echo "Your C compiler ${also}defines the following cpp symbols:"
14607                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
14608                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14609                 ccsymbols=`$cat ccsym.own`
14610                 ccsymbols=`echo $ccsymbols`
14611                 $test "$silent" || sleep 1
14612         fi
14613 fi
14614 $rm -f ccsym*
14615
14616 : see if this is a termio system
14617 val="$undef"
14618 val2="$undef"
14619 val3="$undef"
14620 if $test `./findhdr termios.h`; then
14621         set tcsetattr i_termios
14622         eval $inlibc
14623         val3="$i_termios"
14624 fi
14625 echo " "
14626 case "$val3" in
14627 "$define") echo "You have POSIX termios.h... good!" >&4;;
14628 *) if ./Cppsym pyr; then
14629                 case "`/bin/universe`" in
14630                 ucb) if $test `./findhdr sgtty.h`; then
14631                                 val2="$define"
14632                                 echo "<sgtty.h> found." >&4
14633                         else
14634                                 echo "System is pyramid with BSD universe."
14635                                 echo "<sgtty.h> not found--you could have problems." >&4
14636                         fi;;
14637                 *) if $test `./findhdr termio.h`; then
14638                                 val="$define"
14639                                 echo "<termio.h> found." >&4
14640                         else
14641                                 echo "System is pyramid with USG universe."
14642                                 echo "<termio.h> not found--you could have problems." >&4
14643                         fi;;
14644                 esac
14645         elif ./usg; then
14646                 if $test `./findhdr termio.h`; then
14647                         echo "<termio.h> found." >&4
14648                         val="$define"
14649                 elif $test `./findhdr sgtty.h`; then
14650                         echo "<sgtty.h> found." >&4
14651                         val2="$define"
14652                 else
14653 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14654                 fi
14655         else
14656                 if $test `./findhdr sgtty.h`; then
14657                         echo "<sgtty.h> found." >&4
14658                         val2="$define"
14659                 elif $test `./findhdr termio.h`; then
14660                         echo "<termio.h> found." >&4
14661                         val="$define"
14662                 else
14663 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14664                 fi
14665         fi;;
14666 esac
14667 set i_termio; eval $setvar
14668 val=$val2; set i_sgtty; eval $setvar
14669 val=$val3; set i_termios; eval $setvar
14670
14671 : see if this is a shadow.h system
14672 set shadow.h i_shadow
14673 eval $inhdr
14674
14675 : see if this is a socks.h system
14676 set socks.h i_socks
14677 eval $inhdr
14678
14679 : see if stdarg is available
14680 echo " "
14681 if $test `./findhdr stdarg.h`; then
14682         echo "<stdarg.h> found." >&4
14683         valstd="$define"
14684 else
14685         echo "<stdarg.h> NOT found." >&4
14686         valstd="$undef"
14687 fi
14688
14689 : see if varags is available
14690 echo " "
14691 if $test `./findhdr varargs.h`; then
14692         echo "<varargs.h> found." >&4
14693 else
14694         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14695 fi
14696
14697 : set up the varargs testing programs
14698 $cat > varargs.c <<EOP
14699 #ifdef I_STDARG
14700 #include <stdarg.h>
14701 #endif
14702 #ifdef I_VARARGS
14703 #include <varargs.h>
14704 #endif
14705
14706 #ifdef I_STDARG
14707 int f(char *p, ...)
14708 #else
14709 int f(va_alist)
14710 va_dcl
14711 #endif
14712 {
14713         va_list ap;
14714 #ifndef I_STDARG
14715         char *p;
14716 #endif
14717 #ifdef I_STDARG
14718         va_start(ap,p);
14719 #else
14720         va_start(ap);
14721         p = va_arg(ap, char *);
14722 #endif
14723         va_end(ap);
14724 }
14725 EOP
14726 $cat > varargs <<EOP
14727 $startsh
14728 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14729         echo "true"
14730 else
14731         echo "false"
14732 fi
14733 $rm -f varargs$_o
14734 EOP
14735 chmod +x varargs
14736
14737 : now check which varargs header should be included
14738 echo " "
14739 i_varhdr=''
14740 case "$valstd" in
14741 "$define")
14742         if `./varargs I_STDARG`; then
14743                 val='stdarg.h'
14744         elif `./varargs I_VARARGS`; then
14745                 val='varargs.h'
14746         fi
14747         ;;
14748 *)
14749         if `./varargs I_VARARGS`; then
14750                 val='varargs.h'
14751         fi
14752         ;;
14753 esac
14754 case "$val" in
14755 '')
14756 echo "I could not find the definition for va_dcl... You have problems..." >&4
14757         val="$undef"; set i_stdarg; eval $setvar
14758         val="$undef"; set i_varargs; eval $setvar
14759         ;;
14760 *) 
14761         set i_varhdr
14762         eval $setvar
14763         case "$i_varhdr" in
14764         stdarg.h)
14765                 val="$define"; set i_stdarg; eval $setvar
14766                 val="$undef"; set i_varargs; eval $setvar
14767                 ;;
14768         varargs.h)
14769                 val="$undef"; set i_stdarg; eval $setvar
14770                 val="$define"; set i_varargs; eval $setvar
14771                 ;;
14772         esac
14773         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14774 esac
14775 $rm -f varargs*
14776
14777 : see if stddef is available
14778 set stddef.h i_stddef
14779 eval $inhdr
14780
14781 : see if this is a sunmath.h system
14782 set sunmath.h i_sunmath
14783 eval $inhdr
14784
14785 : see if sys/access.h is available
14786 set sys/access.h i_sysaccess
14787 eval $inhdr
14788
14789 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14790 set sys/filio.h i_sysfilio
14791 eval $inhdr
14792 echo " "
14793 if $test `./findhdr sys/ioctl.h`; then
14794         val="$define"
14795         echo '<sys/ioctl.h> found.' >&4
14796 else
14797         val="$undef"
14798         if $test $i_sysfilio = "$define"; then
14799             echo '<sys/ioctl.h> NOT found.' >&4
14800         else
14801                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14802                 $test $i_termio = "$define" && xxx="termio.h"
14803                 $test $i_termios = "$define" && xxx="termios.h"
14804 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14805         fi
14806 fi
14807 set i_sysioctl
14808 eval $setvar
14809
14810
14811 : see if this is a syslog.h system
14812 set syslog.h i_syslog
14813 eval $inhdr
14814
14815
14816 : see if this is a sys/mode.h system
14817 set sys/mode.h i_sysmode
14818 eval $inhdr
14819
14820 : see if sys/resource.h has to be included
14821 set sys/resource.h i_sysresrc
14822 eval $inhdr
14823
14824 : see if sys/security.h is available
14825 set sys/security.h i_syssecrt
14826 eval $inhdr
14827
14828 : see if this is a sys/statvfs.h system
14829 set sys/statvfs.h i_sysstatvfs
14830 eval $inhdr
14831
14832 : see if this is a sys/uio.h system
14833 set sys/uio.h i_sysuio
14834 eval $inhdr
14835
14836 : see if this is a sys/un.h system
14837 set sys/un.h i_sysun
14838 eval $inhdr
14839
14840
14841 : see if this is a sys/utsname.h system
14842 set sys/utsname.h i_sysutsname
14843 eval $inhdr
14844
14845 : see if this is a syswait system
14846 set sys/wait.h i_syswait
14847 eval $inhdr
14848
14849 : see if this is a ustat.h system
14850 set ustat.h i_ustat
14851 eval $inhdr
14852
14853 : see if this is an utime system
14854 set utime.h i_utime
14855 eval $inhdr
14856
14857 : see if this is a values.h system
14858 set values.h i_values
14859 eval $inhdr
14860
14861 : see if this is a vfork system
14862 case "$d_vfork" in
14863 "$define")
14864         set vfork.h i_vfork
14865         eval $inhdr
14866         ;;
14867 *)
14868         i_vfork="$undef"
14869         ;;
14870 esac
14871
14872 : see if gdbm.h is available
14873 set gdbm.h t_gdbm
14874 eval $inhdr
14875 case "$t_gdbm" in
14876 $define)
14877         : see if gdbm_open exists
14878         set gdbm_open d_gdbm_open
14879         eval $inlibc
14880         case "$d_gdbm_open" in
14881         $undef)
14882                 t_gdbm="$undef"
14883                 echo "We won't be including <gdbm.h>"
14884                 ;;
14885         esac
14886         ;;
14887 esac
14888 val="$t_gdbm"
14889 set i_gdbm
14890 eval $setvar
14891
14892 echo " "
14893 echo "Looking for extensions..." >&4
14894 : If we are using the old config.sh, known_extensions may contain
14895 : old or inaccurate or duplicate values.
14896 known_extensions=''
14897 nonxs_extensions=''
14898 : We do not use find because it might not be available.
14899 : We do not just use MANIFEST because the user may have dropped
14900 : some additional extensions into the source tree and expect them
14901 : to be built.
14902
14903 : Function to recursively find available extensions, ignoring DynaLoader
14904 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14905 find_extensions='
14906     for xxx in *; do
14907        case "$xxx" in
14908            DynaLoader|dynaload) ;;
14909            *)
14910            if $test -f $xxx/$xxx.xs; then
14911                known_extensions="$known_extensions $1$xxx";
14912            elif $test -f $xxx/Makefile.PL; then
14913                nonxs_extensions="$nonxs_extensions $1$xxx";
14914            else
14915                if $test -d $xxx -a $# -lt 10; then
14916                    set $1$xxx/ $*;
14917                    cd $xxx;
14918                    eval $find_extensions;
14919                    cd ..;
14920                    shift;
14921                fi;
14922            fi
14923            ;;
14924        esac;
14925     done'
14926 tdir=`pwd`
14927 cd $rsrc/ext
14928 set X
14929 shift
14930 eval $find_extensions
14931 set X $nonxs_extensions
14932 shift
14933 nonxs_extensions="$*"
14934 set X $known_extensions
14935 shift
14936 known_extensions="$*"
14937 cd $tdir
14938
14939 : Now see which are supported on this system.
14940 avail_ext=''
14941 for xxx in $known_extensions ; do
14942         case "$xxx" in
14943         DB_File|db_file)
14944                 case "$i_db" in
14945                 $define) avail_ext="$avail_ext $xxx" ;;
14946                 esac
14947                 ;;
14948         GDBM_File|gdbm_fil)
14949                 case "$i_gdbm" in 
14950                 $define) avail_ext="$avail_ext $xxx" ;;
14951                 esac
14952                 ;;
14953         NDBM_File|ndbm_fil)
14954                 case "$i_ndbm" in
14955                 $define)
14956                     case "$osname-$use64bitint" in
14957                     hpux-define)
14958                         case "$libs" in
14959                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14960                         esac
14961                         ;;
14962                     *) avail_ext="$avail_ext $xxx" ;;
14963                     esac
14964                     ;;
14965                 esac
14966                 ;;
14967         ODBM_File|odbm_fil) 
14968                 case "${i_dbm}${i_rpcsvcdbm}" in
14969                 *"${define}"*)
14970                     case "$osname-$use64bitint" in
14971                     hpux-define)
14972                         case "$libs" in
14973                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14974                         esac
14975                         ;;
14976                     *) avail_ext="$avail_ext $xxx" ;;
14977                     esac
14978                     ;;
14979                 esac
14980                 ;;
14981         POSIX|posix)
14982                 case "$useposix" in
14983                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14984                 esac
14985                 ;;
14986         Opcode|opcode)
14987                 case "$useopcode" in
14988                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14989                 esac
14990                 ;;
14991         Socket|socket)
14992                 case "$d_socket" in 
14993                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14994                 esac
14995                 ;;
14996         Sys/Syslog|sys/syslog)
14997                 : XXX syslog requires socket
14998                 case "$d_socket" in 
14999                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15000                 esac
15001                 ;;
15002         Thread|thread)
15003                 case "$usethreads" in 
15004                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15005                 esac
15006                 ;;
15007         IPC/SysV|ipc/sysv)
15008                 : XXX Do we need a useipcsysv variable here
15009                 case "${d_msg}${d_sem}${d_shm}" in 
15010                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15011                 esac
15012                 ;;
15013         *)      avail_ext="$avail_ext $xxx"
15014                 ;;
15015         esac
15016 done
15017
15018 set X $avail_ext
15019 shift
15020 avail_ext="$*"
15021
15022 : Now see which nonxs extensions are supported on this system.
15023 : For now assume all are.
15024 nonxs_ext=''
15025 for xxx in $nonxs_extensions ; do
15026         case "$xxx" in
15027         *)      nonxs_ext="$nonxs_ext $xxx"
15028                 ;;
15029         esac
15030 done
15031
15032 set X $nonxs_ext
15033 shift
15034 nonxs_ext="$*"
15035
15036 case $usedl in
15037 $define)
15038         $cat <<EOM
15039 A number of extensions are supplied with $package.  You may choose to
15040 compile these extensions for dynamic loading (the default), compile
15041 them into the $package executable (static loading), or not include
15042 them at all.  Answer "none" to include no extensions.
15043 Note that DynaLoader is always built and need not be mentioned here.
15044
15045 EOM
15046         case "$dynamic_ext" in
15047         '') dflt="$avail_ext" ;;
15048         *)      dflt="$dynamic_ext"
15049                 # Perhaps we are reusing an old out-of-date config.sh.
15050                 case "$hint" in
15051                 previous)
15052                         if test X"$dynamic_ext" != X"$avail_ext"; then
15053                                 $cat <<EOM
15054 NOTICE:  Your previous config.sh list may be incorrect. 
15055 The extensions now available to you are 
15056         ${avail_ext}
15057 but the default list from your previous config.sh is
15058         ${dynamic_ext} 
15059
15060 EOM
15061                         fi
15062                         ;;
15063                 esac
15064                 ;;
15065         esac
15066         case "$dflt" in
15067         '')     dflt=none;;
15068         esac
15069         rp="What extensions do you wish to load dynamically?"
15070         . ./myread
15071         case "$ans" in
15072         none) dynamic_ext=' ' ;;
15073         *) dynamic_ext="$ans" ;;
15074         esac
15075
15076         case "$static_ext" in
15077         '')
15078                 : Exclude those already listed in dynamic linking
15079                 dflt=''
15080                 for xxx in $avail_ext; do
15081                         case " $dynamic_ext " in
15082                         *" $xxx "*) ;;
15083                         *) dflt="$dflt $xxx" ;;
15084                         esac
15085                 done
15086                 set X $dflt
15087                 shift
15088                 dflt="$*"
15089                 ;;
15090         *)  dflt="$static_ext" 
15091                 ;;
15092         esac
15093
15094         case "$dflt" in
15095         '')     dflt=none;;
15096         esac
15097         rp="What extensions do you wish to load statically?"
15098         . ./myread
15099         case "$ans" in
15100         none) static_ext=' ' ;;
15101         *) static_ext="$ans" ;;
15102         esac
15103         ;;
15104 *)
15105         $cat <<EOM
15106 A number of extensions are supplied with $package.  Answer "none" 
15107 to include no extensions. 
15108 Note that DynaLoader is always built and need not be mentioned here.
15109
15110 EOM
15111         case "$static_ext" in
15112         '') dflt="$avail_ext" ;;
15113         *)      dflt="$static_ext"
15114                 # Perhaps we are reusing an old out-of-date config.sh.
15115                 case "$hint" in
15116                 previous)
15117                         if test X"$static_ext" != X"$avail_ext"; then
15118                                 $cat <<EOM
15119 NOTICE:  Your previous config.sh list may be incorrect. 
15120 The extensions now available to you are 
15121         ${avail_ext}
15122 but the default list from your previous config.sh is
15123         ${static_ext} 
15124
15125 EOM
15126                         fi
15127                         ;;
15128                 esac
15129                 ;;
15130         esac
15131         : Exclude those that are not xs extensions
15132         case "$dflt" in
15133         '')     dflt=none;;
15134         esac
15135         rp="What extensions do you wish to include?"
15136         . ./myread
15137         case "$ans" in
15138         none) static_ext=' ' ;;
15139         *) static_ext="$ans" ;;
15140         esac
15141         ;;
15142 esac
15143
15144 set X $dynamic_ext $static_ext $nonxs_ext
15145 shift
15146 extensions="$*"
15147
15148 : Remove build directory name from cppstdin so it can be used from
15149 : either the present location or the final installed location.
15150 echo " "
15151 : Get out of the UU directory to get correct path name.
15152 cd ..
15153 case "$cppstdin" in
15154 `pwd`/cppstdin)
15155         echo "Stripping down cppstdin path name"
15156         cppstdin=cppstdin
15157         ;;
15158 esac
15159 cd UU
15160
15161 : end of configuration questions
15162 echo " "
15163 echo "End of configuration questions."
15164 echo " "
15165
15166 : back to where it started
15167 if test -d ../UU; then
15168         cd ..
15169 fi
15170
15171 : configuration may be patched via a 'config.over' file
15172 if $test -f config.over; then
15173         echo " "
15174         dflt=y
15175         rp='I see a config.over file.  Do you wish to load it?'
15176         . UU/myread
15177         case "$ans" in
15178         n*) echo "OK, I'll ignore it.";;
15179         *)      . ./config.over
15180                 echo "Configuration override changes have been loaded."
15181                 ;;
15182         esac
15183 fi
15184
15185 : in case they want portability, strip down executable paths
15186 case "$d_portable" in
15187 "$define")
15188         echo " "
15189         echo "Stripping down executable paths..." >&4
15190         for file in $loclist $trylist; do
15191                 eval temp=\$$file
15192                 eval $file=`basename $temp`
15193         done
15194         ;;
15195 esac
15196
15197 : create config.sh file
15198 echo " "
15199 echo "Creating config.sh..." >&4
15200 $spitshell <<EOT >config.sh
15201 $startsh
15202 #
15203 # This file was produced by running the Configure script. It holds all the
15204 # definitions figured out by Configure. Should you modify one of these values,
15205 # do not forget to propagate your changes by running "Configure -der". You may
15206 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15207 #
15208
15209 # Package name      : $package
15210 # Source directory  : $src
15211 # Configuration time: $cf_time
15212 # Configured by     : $cf_by
15213 # Target system     : $myuname
15214
15215 Author='$Author'
15216 Date='$Date'
15217 Header='$Header'
15218 Id='$Id'
15219 Locker='$Locker'
15220 Log='$Log'
15221 Mcc='$Mcc'
15222 RCSfile='$RCSfile'
15223 Revision='$Revision'
15224 Source='$Source'
15225 State='$State'
15226 _a='$_a'
15227 _exe='$_exe'
15228 _o='$_o'
15229 afs='$afs'
15230 alignbytes='$alignbytes'
15231 ansi2knr='$ansi2knr'
15232 aphostname='$aphostname'
15233 api_revision='$api_revision'
15234 api_subversion='$api_subversion'
15235 api_version='$api_version'
15236 api_versionstring='$api_versionstring'
15237 ar='$ar'
15238 archlib='$archlib'
15239 archlibexp='$archlibexp'
15240 archname64='$archname64'
15241 archname='$archname'
15242 archobjs='$archobjs'
15243 awk='$awk'
15244 baserev='$baserev'
15245 bash='$bash'
15246 bin='$bin'
15247 bincompat5005='$bincompat5005'
15248 binexp='$binexp'
15249 bison='$bison'
15250 byacc='$byacc'
15251 byteorder='$byteorder'
15252 c='$c'
15253 castflags='$castflags'
15254 cat='$cat'
15255 cc='$cc'
15256 cccdlflags='$cccdlflags'
15257 ccdlflags='$ccdlflags'
15258 ccflags='$ccflags'
15259 ccsymbols='$ccsymbols'
15260 cf_by='$cf_by'
15261 cf_email='$cf_email'
15262 cf_time='$cf_time'
15263 charsize='$charsize'
15264 chgrp='$chgrp'
15265 chmod='$chmod'
15266 chown='$chown'
15267 clocktype='$clocktype'
15268 comm='$comm'
15269 compress='$compress'
15270 contains='$contains'
15271 cp='$cp'
15272 cpio='$cpio'
15273 cpp='$cpp'
15274 cpp_stuff='$cpp_stuff'
15275 cppccsymbols='$cppccsymbols'
15276 cppflags='$cppflags'
15277 cpplast='$cpplast'
15278 cppminus='$cppminus'
15279 cpprun='$cpprun'
15280 cppstdin='$cppstdin'
15281 cppsymbols='$cppsymbols'
15282 crosscompile='$crosscompile'
15283 cryptlib='$cryptlib'
15284 csh='$csh'
15285 d_Gconvert='$d_Gconvert'
15286 d_PRIEldbl='$d_PRIEldbl'
15287 d_PRIFldbl='$d_PRIFldbl'
15288 d_PRIGldbl='$d_PRIGldbl'
15289 d_PRIX64='$d_PRIX64'
15290 d_PRId64='$d_PRId64'
15291 d_PRIeldbl='$d_PRIeldbl'
15292 d_PRIfldbl='$d_PRIfldbl'
15293 d_PRIgldbl='$d_PRIgldbl'
15294 d_PRIi64='$d_PRIi64'
15295 d_PRIo64='$d_PRIo64'
15296 d_PRIu64='$d_PRIu64'
15297 d_PRIx64='$d_PRIx64'
15298 d_access='$d_access'
15299 d_accessx='$d_accessx'
15300 d_alarm='$d_alarm'
15301 d_archlib='$d_archlib'
15302 d_atolf='$d_atolf'
15303 d_atoll='$d_atoll'
15304 d_attribut='$d_attribut'
15305 d_bcmp='$d_bcmp'
15306 d_bcopy='$d_bcopy'
15307 d_bincompat5005='$d_bincompat5005'
15308 d_bsd='$d_bsd'
15309 d_bsdgetpgrp='$d_bsdgetpgrp'
15310 d_bsdsetpgrp='$d_bsdsetpgrp'
15311 d_bzero='$d_bzero'
15312 d_casti32='$d_casti32'
15313 d_castneg='$d_castneg'
15314 d_charvspr='$d_charvspr'
15315 d_chown='$d_chown'
15316 d_chroot='$d_chroot'
15317 d_chsize='$d_chsize'
15318 d_closedir='$d_closedir'
15319 d_const='$d_const'
15320 d_crypt='$d_crypt'
15321 d_csh='$d_csh'
15322 d_cuserid='$d_cuserid'
15323 d_dbl_dig='$d_dbl_dig'
15324 d_difftime='$d_difftime'
15325 d_dirnamlen='$d_dirnamlen'
15326 d_dlerror='$d_dlerror'
15327 d_dlopen='$d_dlopen'
15328 d_dlsymun='$d_dlsymun'
15329 d_dosuid='$d_dosuid'
15330 d_drand48proto='$d_drand48proto'
15331 d_dup2='$d_dup2'
15332 d_eaccess='$d_eaccess'
15333 d_endgrent='$d_endgrent'
15334 d_endhent='$d_endhent'
15335 d_endnent='$d_endnent'
15336 d_endpent='$d_endpent'
15337 d_endpwent='$d_endpwent'
15338 d_endsent='$d_endsent'
15339 d_eofnblk='$d_eofnblk'
15340 d_eunice='$d_eunice'
15341 d_fchmod='$d_fchmod'
15342 d_fchown='$d_fchown'
15343 d_fcntl='$d_fcntl'
15344 d_fd_macros='$d_fd_macros'
15345 d_fd_set='$d_fd_set'
15346 d_fds_bits='$d_fds_bits'
15347 d_fgetpos='$d_fgetpos'
15348 d_flexfnam='$d_flexfnam'
15349 d_flock='$d_flock'
15350 d_fork='$d_fork'
15351 d_fpathconf='$d_fpathconf'
15352 d_fpos64_t='$d_fpos64_t'
15353 d_frexpl='$d_frexpl'
15354 d_fs_data_s='$d_fs_data_s'
15355 d_fseeko='$d_fseeko'
15356 d_fsetpos='$d_fsetpos'
15357 d_fstatfs='$d_fstatfs'
15358 d_fstatvfs='$d_fstatvfs'
15359 d_ftello='$d_ftello'
15360 d_ftime='$d_ftime'
15361 d_getcwd='$d_getcwd'
15362 d_getespwnam='$d_getespwnam'
15363 d_getfsstat='$d_getfsstat'
15364 d_getgrent='$d_getgrent'
15365 d_getgrps='$d_getgrps'
15366 d_gethbyaddr='$d_gethbyaddr'
15367 d_gethbyname='$d_gethbyname'
15368 d_gethent='$d_gethent'
15369 d_gethname='$d_gethname'
15370 d_gethostprotos='$d_gethostprotos'
15371 d_getlogin='$d_getlogin'
15372 d_getmnt='$d_getmnt'
15373 d_getmntent='$d_getmntent'
15374 d_getnbyaddr='$d_getnbyaddr'
15375 d_getnbyname='$d_getnbyname'
15376 d_getnent='$d_getnent'
15377 d_getnetprotos='$d_getnetprotos'
15378 d_getpbyname='$d_getpbyname'
15379 d_getpbynumber='$d_getpbynumber'
15380 d_getpent='$d_getpent'
15381 d_getpgid='$d_getpgid'
15382 d_getpgrp2='$d_getpgrp2'
15383 d_getpgrp='$d_getpgrp'
15384 d_getppid='$d_getppid'
15385 d_getprior='$d_getprior'
15386 d_getprotoprotos='$d_getprotoprotos'
15387 d_getprpwnam='$d_getprpwnam'
15388 d_getpwent='$d_getpwent'
15389 d_getsbyname='$d_getsbyname'
15390 d_getsbyport='$d_getsbyport'
15391 d_getsent='$d_getsent'
15392 d_getservprotos='$d_getservprotos'
15393 d_getspnam='$d_getspnam'
15394 d_gettimeod='$d_gettimeod'
15395 d_gnulibc='$d_gnulibc'
15396 d_grpasswd='$d_grpasswd'
15397 d_hasmntopt='$d_hasmntopt'
15398 d_htonl='$d_htonl'
15399 d_iconv='$d_iconv'
15400 d_index='$d_index'
15401 d_inetaton='$d_inetaton'
15402 d_int64_t='$d_int64_t'
15403 d_isascii='$d_isascii'
15404 d_isnan='$d_isnan'
15405 d_isnanl='$d_isnanl'
15406 d_killpg='$d_killpg'
15407 d_lchown='$d_lchown'
15408 d_ldbl_dig='$d_ldbl_dig'
15409 d_link='$d_link'
15410 d_locconv='$d_locconv'
15411 d_lockf='$d_lockf'
15412 d_longdbl='$d_longdbl'
15413 d_longlong='$d_longlong'
15414 d_lseekproto='$d_lseekproto'
15415 d_lstat='$d_lstat'
15416 d_madvise='$d_madvise'
15417 d_mblen='$d_mblen'
15418 d_mbstowcs='$d_mbstowcs'
15419 d_mbtowc='$d_mbtowc'
15420 d_memchr='$d_memchr'
15421 d_memcmp='$d_memcmp'
15422 d_memcpy='$d_memcpy'
15423 d_memmove='$d_memmove'
15424 d_memset='$d_memset'
15425 d_mkdir='$d_mkdir'
15426 d_mkdtemp='$d_mkdtemp'
15427 d_mkfifo='$d_mkfifo'
15428 d_mkstemp='$d_mkstemp'
15429 d_mkstemps='$d_mkstemps'
15430 d_mktime='$d_mktime'
15431 d_mmap='$d_mmap'
15432 d_modfl='$d_modfl'
15433 d_mprotect='$d_mprotect'
15434 d_msg='$d_msg'
15435 d_msg_ctrunc='$d_msg_ctrunc'
15436 d_msg_dontroute='$d_msg_dontroute'
15437 d_msg_oob='$d_msg_oob'
15438 d_msg_peek='$d_msg_peek'
15439 d_msg_proxy='$d_msg_proxy'
15440 d_msgctl='$d_msgctl'
15441 d_msgget='$d_msgget'
15442 d_msgrcv='$d_msgrcv'
15443 d_msgsnd='$d_msgsnd'
15444 d_msync='$d_msync'
15445 d_munmap='$d_munmap'
15446 d_mymalloc='$d_mymalloc'
15447 d_nice='$d_nice'
15448 d_nv_preserves_uv='$d_nv_preserves_uv'
15449 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
15450 d_off64_t='$d_off64_t'
15451 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15452 d_oldpthreads='$d_oldpthreads'
15453 d_oldsock='$d_oldsock'
15454 d_open3='$d_open3'
15455 d_pathconf='$d_pathconf'
15456 d_pause='$d_pause'
15457 d_perl_otherlibdirs='$d_perl_otherlibdirs'
15458 d_phostname='$d_phostname'
15459 d_pipe='$d_pipe'
15460 d_poll='$d_poll'
15461 d_portable='$d_portable'
15462 d_pthread_yield='$d_pthread_yield'
15463 d_pwage='$d_pwage'
15464 d_pwchange='$d_pwchange'
15465 d_pwclass='$d_pwclass'
15466 d_pwcomment='$d_pwcomment'
15467 d_pwexpire='$d_pwexpire'
15468 d_pwgecos='$d_pwgecos'
15469 d_pwpasswd='$d_pwpasswd'
15470 d_pwquota='$d_pwquota'
15471 d_qgcvt='$d_qgcvt'
15472 d_quad='$d_quad'
15473 d_readdir='$d_readdir'
15474 d_readlink='$d_readlink'
15475 d_rename='$d_rename'
15476 d_rewinddir='$d_rewinddir'
15477 d_rmdir='$d_rmdir'
15478 d_safebcpy='$d_safebcpy'
15479 d_safemcpy='$d_safemcpy'
15480 d_sanemcmp='$d_sanemcmp'
15481 d_sched_yield='$d_sched_yield'
15482 d_scm_rights='$d_scm_rights'
15483 d_seekdir='$d_seekdir'
15484 d_select='$d_select'
15485 d_sem='$d_sem'
15486 d_semctl='$d_semctl'
15487 d_semctl_semid_ds='$d_semctl_semid_ds'
15488 d_semctl_semun='$d_semctl_semun'
15489 d_semget='$d_semget'
15490 d_semop='$d_semop'
15491 d_setegid='$d_setegid'
15492 d_seteuid='$d_seteuid'
15493 d_setgrent='$d_setgrent'
15494 d_setgrps='$d_setgrps'
15495 d_sethent='$d_sethent'
15496 d_setlinebuf='$d_setlinebuf'
15497 d_setlocale='$d_setlocale'
15498 d_setnent='$d_setnent'
15499 d_setpent='$d_setpent'
15500 d_setpgid='$d_setpgid'
15501 d_setpgrp2='$d_setpgrp2'
15502 d_setpgrp='$d_setpgrp'
15503 d_setprior='$d_setprior'
15504 d_setproctitle='$d_setproctitle'
15505 d_setpwent='$d_setpwent'
15506 d_setregid='$d_setregid'
15507 d_setresgid='$d_setresgid'
15508 d_setresuid='$d_setresuid'
15509 d_setreuid='$d_setreuid'
15510 d_setrgid='$d_setrgid'
15511 d_setruid='$d_setruid'
15512 d_setsent='$d_setsent'
15513 d_setsid='$d_setsid'
15514 d_setvbuf='$d_setvbuf'
15515 d_sfio='$d_sfio'
15516 d_shm='$d_shm'
15517 d_shmat='$d_shmat'
15518 d_shmatprototype='$d_shmatprototype'
15519 d_shmctl='$d_shmctl'
15520 d_shmdt='$d_shmdt'
15521 d_shmget='$d_shmget'
15522 d_sigaction='$d_sigaction'
15523 d_sigsetjmp='$d_sigsetjmp'
15524 d_socket='$d_socket'
15525 d_socklen_t='$d_socklen_t'
15526 d_sockpair='$d_sockpair'
15527 d_sqrtl='$d_sqrtl'
15528 d_statblks='$d_statblks'
15529 d_statfs_f_flags='$d_statfs_f_flags'
15530 d_statfs_s='$d_statfs_s'
15531 d_statvfs='$d_statvfs'
15532 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15533 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15534 d_stdio_stream_array='$d_stdio_stream_array'
15535 d_stdiobase='$d_stdiobase'
15536 d_stdstdio='$d_stdstdio'
15537 d_strchr='$d_strchr'
15538 d_strcoll='$d_strcoll'
15539 d_strctcpy='$d_strctcpy'
15540 d_strerrm='$d_strerrm'
15541 d_strerror='$d_strerror'
15542 d_strtod='$d_strtod'
15543 d_strtol='$d_strtol'
15544 d_strtold='$d_strtold'
15545 d_strtoll='$d_strtoll'
15546 d_strtoul='$d_strtoul'
15547 d_strtoull='$d_strtoull'
15548 d_strtouq='$d_strtouq'
15549 d_strxfrm='$d_strxfrm'
15550 d_suidsafe='$d_suidsafe'
15551 d_symlink='$d_symlink'
15552 d_syscall='$d_syscall'
15553 d_sysconf='$d_sysconf'
15554 d_sysernlst='$d_sysernlst'
15555 d_syserrlst='$d_syserrlst'
15556 d_system='$d_system'
15557 d_tcgetpgrp='$d_tcgetpgrp'
15558 d_tcsetpgrp='$d_tcsetpgrp'
15559 d_telldir='$d_telldir'
15560 d_telldirproto='$d_telldirproto'
15561 d_time='$d_time'
15562 d_times='$d_times'
15563 d_truncate='$d_truncate'
15564 d_tzname='$d_tzname'
15565 d_umask='$d_umask'
15566 d_uname='$d_uname'
15567 d_union_semun='$d_union_semun'
15568 d_ustat='$d_ustat'
15569 d_vendorarch='$d_vendorarch'
15570 d_vendorbin='$d_vendorbin'
15571 d_vendorlib='$d_vendorlib'
15572 d_vfork='$d_vfork'
15573 d_void_closedir='$d_void_closedir'
15574 d_voidsig='$d_voidsig'
15575 d_voidtty='$d_voidtty'
15576 d_volatile='$d_volatile'
15577 d_vprintf='$d_vprintf'
15578 d_wait4='$d_wait4'
15579 d_waitpid='$d_waitpid'
15580 d_wcstombs='$d_wcstombs'
15581 d_wctomb='$d_wctomb'
15582 d_xenix='$d_xenix'
15583 date='$date'
15584 db_hashtype='$db_hashtype'
15585 db_prefixtype='$db_prefixtype'
15586 defvoidused='$defvoidused'
15587 direntrytype='$direntrytype'
15588 dlext='$dlext'
15589 dlsrc='$dlsrc'
15590 doublesize='$doublesize'
15591 drand01='$drand01'
15592 dynamic_ext='$dynamic_ext'
15593 eagain='$eagain'
15594 ebcdic='$ebcdic'
15595 echo='$echo'
15596 egrep='$egrep'
15597 emacs='$emacs'
15598 eunicefix='$eunicefix'
15599 exe_ext='$exe_ext'
15600 expr='$expr'
15601 extensions='$extensions'
15602 fflushNULL='$fflushNULL'
15603 fflushall='$fflushall'
15604 find='$find'
15605 firstmakefile='$firstmakefile'
15606 flex='$flex'
15607 fpossize='$fpossize'
15608 fpostype='$fpostype'
15609 freetype='$freetype'
15610 full_ar='$full_ar'
15611 full_csh='$full_csh'
15612 full_sed='$full_sed'
15613 gccversion='$gccversion'
15614 gidformat='$gidformat'
15615 gidsign='$gidsign'
15616 gidsize='$gidsize'
15617 gidtype='$gidtype'
15618 glibpth='$glibpth'
15619 grep='$grep'
15620 groupcat='$groupcat'
15621 groupstype='$groupstype'
15622 gzip='$gzip'
15623 h_fcntl='$h_fcntl'
15624 h_sysfile='$h_sysfile'
15625 hint='$hint'
15626 hostcat='$hostcat'
15627 huge='$huge'
15628 i16size='$i16size'
15629 i16type='$i16type'
15630 i32size='$i32size'
15631 i32type='$i32type'
15632 i64size='$i64size'
15633 i64type='$i64type'
15634 i8size='$i8size'
15635 i8type='$i8type'
15636 i_arpainet='$i_arpainet'
15637 i_bsdioctl='$i_bsdioctl'
15638 i_db='$i_db'
15639 i_dbm='$i_dbm'
15640 i_dirent='$i_dirent'
15641 i_dld='$i_dld'
15642 i_dlfcn='$i_dlfcn'
15643 i_fcntl='$i_fcntl'
15644 i_float='$i_float'
15645 i_gdbm='$i_gdbm'
15646 i_grp='$i_grp'
15647 i_iconv='$i_iconv'
15648 i_ieeefp='$i_ieeefp'
15649 i_inttypes='$i_inttypes'
15650 i_limits='$i_limits'
15651 i_locale='$i_locale'
15652 i_machcthr='$i_machcthr'
15653 i_malloc='$i_malloc'
15654 i_math='$i_math'
15655 i_memory='$i_memory'
15656 i_mntent='$i_mntent'
15657 i_ndbm='$i_ndbm'
15658 i_netdb='$i_netdb'
15659 i_neterrno='$i_neterrno'
15660 i_netinettcp='$i_netinettcp'
15661 i_niin='$i_niin'
15662 i_poll='$i_poll'
15663 i_prot='$i_prot'
15664 i_pthread='$i_pthread'
15665 i_pwd='$i_pwd'
15666 i_rpcsvcdbm='$i_rpcsvcdbm'
15667 i_sfio='$i_sfio'
15668 i_sgtty='$i_sgtty'
15669 i_shadow='$i_shadow'
15670 i_socks='$i_socks'
15671 i_stdarg='$i_stdarg'
15672 i_stddef='$i_stddef'
15673 i_stdlib='$i_stdlib'
15674 i_string='$i_string'
15675 i_sunmath='$i_sunmath'
15676 i_sysaccess='$i_sysaccess'
15677 i_sysdir='$i_sysdir'
15678 i_sysfile='$i_sysfile'
15679 i_sysfilio='$i_sysfilio'
15680 i_sysin='$i_sysin'
15681 i_sysioctl='$i_sysioctl'
15682 i_syslog='$i_syslog'
15683 i_sysmman='$i_sysmman'
15684 i_sysmode='$i_sysmode'
15685 i_sysmount='$i_sysmount'
15686 i_sysndir='$i_sysndir'
15687 i_sysparam='$i_sysparam'
15688 i_sysresrc='$i_sysresrc'
15689 i_syssecrt='$i_syssecrt'
15690 i_sysselct='$i_sysselct'
15691 i_syssockio='$i_syssockio'
15692 i_sysstat='$i_sysstat'
15693 i_sysstatfs='$i_sysstatfs'
15694 i_sysstatvfs='$i_sysstatvfs'
15695 i_systime='$i_systime'
15696 i_systimek='$i_systimek'
15697 i_systimes='$i_systimes'
15698 i_systypes='$i_systypes'
15699 i_sysuio='$i_sysuio'
15700 i_sysun='$i_sysun'
15701 i_sysutsname='$i_sysutsname'
15702 i_sysvfs='$i_sysvfs'
15703 i_syswait='$i_syswait'
15704 i_termio='$i_termio'
15705 i_termios='$i_termios'
15706 i_time='$i_time'
15707 i_unistd='$i_unistd'
15708 i_ustat='$i_ustat'
15709 i_utime='$i_utime'
15710 i_values='$i_values'
15711 i_varargs='$i_varargs'
15712 i_varhdr='$i_varhdr'
15713 i_vfork='$i_vfork'
15714 ignore_versioned_solibs='$ignore_versioned_solibs'
15715 inc_version_list='$inc_version_list'
15716 inc_version_list_init='$inc_version_list_init'
15717 incpath='$incpath'
15718 inews='$inews'
15719 installarchlib='$installarchlib'
15720 installbin='$installbin'
15721 installman1dir='$installman1dir'
15722 installman3dir='$installman3dir'
15723 installprefix='$installprefix'
15724 installprefixexp='$installprefixexp'
15725 installprivlib='$installprivlib'
15726 installscript='$installscript'
15727 installsitearch='$installsitearch'
15728 installsitebin='$installsitebin'
15729 installsitelib='$installsitelib'
15730 installstyle='$installstyle'
15731 installusrbinperl='$installusrbinperl'
15732 installvendorarch='$installvendorarch'
15733 installvendorbin='$installvendorbin'
15734 installvendorlib='$installvendorlib'
15735 intsize='$intsize'
15736 ivdformat='$ivdformat'
15737 ivsize='$ivsize'
15738 ivtype='$ivtype'
15739 known_extensions='$known_extensions'
15740 ksh='$ksh'
15741 large='$large'
15742 ld='$ld'
15743 lddlflags='$lddlflags'
15744 ldflags='$ldflags'
15745 ldlibpthname='$ldlibpthname'
15746 less='$less'
15747 lib_ext='$lib_ext'
15748 libc='$libc'
15749 libperl='$libperl'
15750 libpth='$libpth'
15751 libs='$libs'
15752 libsdirs='$libsdirs'
15753 libsfiles='$libsfiles'
15754 libsfound='$libsfound'
15755 libspath='$libspath'
15756 libswanted='$libswanted'
15757 line='$line'
15758 lint='$lint'
15759 lkflags='$lkflags'
15760 ln='$ln'
15761 lns='$lns'
15762 locincpth='$locincpth'
15763 loclibpth='$loclibpth'
15764 longdblsize='$longdblsize'
15765 longlongsize='$longlongsize'
15766 longsize='$longsize'
15767 lp='$lp'
15768 lpr='$lpr'
15769 ls='$ls'
15770 lseeksize='$lseeksize'
15771 lseektype='$lseektype'
15772 mail='$mail'
15773 mailx='$mailx'
15774 make='$make'
15775 make_set_make='$make_set_make'
15776 mallocobj='$mallocobj'
15777 mallocsrc='$mallocsrc'
15778 malloctype='$malloctype'
15779 man1dir='$man1dir'
15780 man1direxp='$man1direxp'
15781 man1ext='$man1ext'
15782 man3dir='$man3dir'
15783 man3direxp='$man3direxp'
15784 man3ext='$man3ext'
15785 medium='$medium'
15786 mips_type='$mips_type'
15787 mkdir='$mkdir'
15788 mmaptype='$mmaptype'
15789 models='$models'
15790 modetype='$modetype'
15791 more='$more'
15792 multiarch='$multiarch'
15793 mv='$mv'
15794 myarchname='$myarchname'
15795 mydomain='$mydomain'
15796 myhostname='$myhostname'
15797 myuname='$myuname'
15798 n='$n'
15799 netdb_hlen_type='$netdb_hlen_type'
15800 netdb_host_type='$netdb_host_type'
15801 netdb_name_type='$netdb_name_type'
15802 netdb_net_type='$netdb_net_type'
15803 nm='$nm'
15804 nm_opt='$nm_opt'
15805 nm_so_opt='$nm_so_opt'
15806 nonxs_ext='$nonxs_ext'
15807 nroff='$nroff'
15808 nvsize='$nvsize'
15809 nvtype='$nvtype'
15810 o_nonblock='$o_nonblock'
15811 obj_ext='$obj_ext'
15812 old_pthread_create_joinable='$old_pthread_create_joinable'
15813 optimize='$optimize'
15814 orderlib='$orderlib'
15815 osname='$osname'
15816 osvers='$osvers'
15817 otherlibdirs='$otherlibdirs'
15818 package='$package'
15819 pager='$pager'
15820 passcat='$passcat'
15821 patchlevel='$patchlevel'
15822 path_sep='$path_sep'
15823 perl5='$perl5'
15824 perl='$perl'
15825 perladmin='$perladmin'
15826 perlpath='$perlpath'
15827 pg='$pg'
15828 phostname='$phostname'
15829 pidtype='$pidtype'
15830 plibpth='$plibpth'
15831 pm_apiversion='$pm_apiversion'
15832 pmake='$pmake'
15833 pr='$pr'
15834 prefix='$prefix'
15835 prefixexp='$prefixexp'
15836 privlib='$privlib'
15837 privlibexp='$privlibexp'
15838 prototype='$prototype'
15839 ptrsize='$ptrsize'
15840 quadkind='$quadkind'
15841 quadtype='$quadtype'
15842 randbits='$randbits'
15843 randfunc='$randfunc'
15844 randseedtype='$randseedtype'
15845 ranlib='$ranlib'
15846 rd_nodata='$rd_nodata'
15847 revision='$revision'
15848 rm='$rm'
15849 rmail='$rmail'
15850 runnm='$runnm'
15851 sPRIEldbl='$sPRIEldbl'
15852 sPRIFldbl='$sPRIFldbl'
15853 sPRIGldbl='$sPRIGldbl'
15854 sPRIX64='$sPRIX64'
15855 sPRId64='$sPRId64'
15856 sPRIeldbl='$sPRIeldbl'
15857 sPRIfldbl='$sPRIfldbl'
15858 sPRIgldbl='$sPRIgldbl'
15859 sPRIi64='$sPRIi64'
15860 sPRIo64='$sPRIo64'
15861 sPRIu64='$sPRIu64'
15862 sPRIx64='$sPRIx64'
15863 sched_yield='$sched_yield'
15864 scriptdir='$scriptdir'
15865 scriptdirexp='$scriptdirexp'
15866 sed='$sed'
15867 seedfunc='$seedfunc'
15868 selectminbits='$selectminbits'
15869 selecttype='$selecttype'
15870 sendmail='$sendmail'
15871 sh='$sh'
15872 shar='$shar'
15873 sharpbang='$sharpbang'
15874 shmattype='$shmattype'
15875 shortsize='$shortsize'
15876 shrpenv='$shrpenv'
15877 shsharp='$shsharp'
15878 sig_count='$sig_count'
15879 sig_name='$sig_name'
15880 sig_name_init='$sig_name_init'
15881 sig_num='$sig_num'
15882 sig_num_init='$sig_num_init'
15883 signal_t='$signal_t'
15884 sitearch='$sitearch'
15885 sitearchexp='$sitearchexp'
15886 sitebin='$sitebin'
15887 sitebinexp='$sitebinexp'
15888 sitelib='$sitelib'
15889 sitelib_stem='$sitelib_stem'
15890 sitelibexp='$sitelibexp'
15891 siteprefix='$siteprefix'
15892 siteprefixexp='$siteprefixexp'
15893 sizesize='$sizesize'
15894 sizetype='$sizetype'
15895 sleep='$sleep'
15896 smail='$smail'
15897 small='$small'
15898 so='$so'
15899 sockethdr='$sockethdr'
15900 socketlib='$socketlib'
15901 socksizetype='$socksizetype'
15902 sort='$sort'
15903 spackage='$spackage'
15904 spitshell='$spitshell'
15905 split='$split'
15906 src='$src'
15907 ssizetype='$ssizetype'
15908 startperl='$startperl'
15909 startsh='$startsh'
15910 static_ext='$static_ext'
15911 stdchar='$stdchar'
15912 stdio_base='$stdio_base'
15913 stdio_bufsiz='$stdio_bufsiz'
15914 stdio_cnt='$stdio_cnt'
15915 stdio_filbuf='$stdio_filbuf'
15916 stdio_ptr='$stdio_ptr'
15917 stdio_stream_array='$stdio_stream_array'
15918 strings='$strings'
15919 submit='$submit'
15920 subversion='$subversion'
15921 sysman='$sysman'
15922 tail='$tail'
15923 tar='$tar'
15924 tbl='$tbl'
15925 tee='$tee'
15926 test='$test'
15927 timeincl='$timeincl'
15928 timetype='$timetype'
15929 touch='$touch'
15930 tr='$tr'
15931 trnl='$trnl'
15932 troff='$troff'
15933 u16size='$u16size'
15934 u16type='$u16type'
15935 u32size='$u32size'
15936 u32type='$u32type'
15937 u64size='$u64size'
15938 u64type='$u64type'
15939 u8size='$u8size'
15940 u8type='$u8type'
15941 uidformat='$uidformat'
15942 uidsign='$uidsign'
15943 uidsize='$uidsize'
15944 uidtype='$uidtype'
15945 uname='$uname'
15946 uniq='$uniq'
15947 uquadtype='$uquadtype'
15948 use5005threads='$use5005threads'
15949 use64bitall='$use64bitall'
15950 use64bitint='$use64bitint'
15951 usedl='$usedl'
15952 useithreads='$useithreads'
15953 uselargefiles='$uselargefiles'
15954 uselongdouble='$uselongdouble'
15955 usemorebits='$usemorebits'
15956 usemultiplicity='$usemultiplicity'
15957 usemymalloc='$usemymalloc'
15958 usenm='$usenm'
15959 useopcode='$useopcode'
15960 useperlio='$useperlio'
15961 useposix='$useposix'
15962 usesfio='$usesfio'
15963 useshrplib='$useshrplib'
15964 usesocks='$usesocks'
15965 usethreads='$usethreads'
15966 usevendorprefix='$usevendorprefix'
15967 usevfork='$usevfork'
15968 usrinc='$usrinc'
15969 uuname='$uuname'
15970 uvoformat='$uvoformat'
15971 uvsize='$uvsize'
15972 uvtype='$uvtype'
15973 uvuformat='$uvuformat'
15974 uvxformat='$uvxformat'
15975 vendorarch='$vendorarch'
15976 vendorarchexp='$vendorarchexp'
15977 vendorbin='$vendorbin'
15978 vendorbinexp='$vendorbinexp'
15979 vendorlib='$vendorlib'
15980 vendorlib_stem='$vendorlib_stem'
15981 vendorlibexp='$vendorlibexp'
15982 vendorprefix='$vendorprefix'
15983 vendorprefixexp='$vendorprefixexp'
15984 version='$version'
15985 vi='$vi'
15986 voidflags='$voidflags'
15987 xlibpth='$xlibpth'
15988 xs_apiversion='$xs_apiversion'
15989 zcat='$zcat'
15990 zip='$zip'
15991 EOT
15992
15993 : Add in command line options if available
15994 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15995
15996 : add special variables
15997 $test -f $src/patchlevel.h && \
15998 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15999 echo "CONFIGDOTSH=true" >>config.sh
16000
16001 : propagate old symbols
16002 if $test -f UU/config.sh; then
16003         <UU/config.sh sort | uniq >UU/oldconfig.sh
16004         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16005         sort | uniq -u >UU/oldsyms
16006         set X `cat UU/oldsyms`
16007         shift
16008         case $# in
16009         0) ;;
16010         *)
16011                 cat <<EOM
16012 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16013 EOM
16014                 echo "# Variables propagated from previous config.sh file." >>config.sh
16015                 for sym in `cat UU/oldsyms`; do
16016                         echo "    Propagating $hint variable "'$'"$sym..."
16017                         eval 'tmp="$'"${sym}"'"'
16018                         echo "$tmp" | \
16019                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16020                 done
16021                 ;;
16022         esac
16023 fi
16024
16025 : Finish up by extracting the .SH files
16026 case "$alldone" in
16027 exit)
16028         $rm -rf UU
16029         echo "Done."
16030         exit 0
16031         ;;
16032 cont)
16033         ;;
16034 '')
16035         dflt=''
16036         nostick=true
16037         $cat <<EOM
16038
16039 If you'd like to make any changes to the config.sh file before I begin
16040 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16041
16042 EOM
16043         rp="Press return or use a shell escape to edit config.sh:"
16044         . UU/myread
16045         nostick=''
16046         case "$ans" in
16047         '') ;;
16048         *) : in case they cannot read
16049                 sh 1>&4 -c "$ans";;
16050         esac
16051         ;;
16052 esac
16053
16054 : if this fails, just run all the .SH files by hand
16055 . ./config.sh
16056
16057 echo " "
16058 exec 1>&4
16059 . ./UU/extract
16060
16061 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16062         dflt=y
16063         case "$silent" in
16064         true) ;;
16065         *)
16066                 $cat <<EOM
16067
16068 Now you need to generate make dependencies by running "$make depend".
16069 You might prefer to run it in background: "$make depend > makedepend.out &"
16070 It can take a while, so you might not want to run it right now.
16071
16072 EOM
16073                 ;;
16074         esac
16075         rp="Run $make depend now?"
16076         . UU/myread
16077         case "$ans" in
16078         y*)
16079                 $make depend && echo "Now you must run a $make."
16080                 ;;
16081         *)
16082                 echo "You must run '$make depend' then '$make'."
16083                 ;;
16084         esac
16085 elif test -f [Mm]akefile; then
16086         echo " "
16087         echo "Now you must run a $make."
16088 else
16089         echo "Done."
16090 fi
16091
16092 if $test -f Policy.sh; then
16093     $cat <<EOM
16094
16095 If you compile $package on a different machine or from a different object
16096 directory, copy the Policy.sh file from this object directory to the
16097 new one before you run Configure -- this will help you with most of
16098 the policy defaults.
16099
16100 EOM
16101 fi
16102 if $test -f config.msg; then
16103     echo "Hmm.  I also noted the following information while running:"
16104     echo " "
16105     $cat config.msg >&4
16106     $rm -f config.msg
16107 fi
16108 $rm -f kit*isdone ark*isdone
16109 $rm -rf UU
16110
16111 : End of Configure
16112