Implement #5525 in metaconfig.
[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 Sun Mar  5 02:50:05 EET 2000 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.com)
25
26 cat >/tmp/c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >/tmp/c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 p_=\;
69         fi
70 fi
71
72 : Proper PATH setting
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
81
82 for p in $paths
83 do
84         case "$p_$PATH$p_" in
85         *$p_$p$p_*) ;;
86         *) test -d $p && PATH=$PATH$p_$p ;;
87         esac
88 done
89
90 PATH=.$p_$PATH
91 export PATH
92
93 : shall we be using ksh?
94 inksh=''
95 needksh=''
96 avoidksh=''
97 newsh=/bin/ksh
98 changesh=''
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
100                 inksh=true
101 fi
102 if test -f /hp-ux -a -f /bin/ksh; then
103         needksh='to avoid sh bug in "here document" expansion'
104 fi
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106         if test X`/usr/bin/uname -v` = X4; then
107                 avoidksh="to avoid AIX 4's /bin/sh"
108                 newsh=/usr/bin/bsh
109         fi
110 fi
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112         if test X`/usr/bin/uname -s` = XOSF1; then
113                 avoidksh="to avoid Digital UNIX' ksh"
114                 newsh=/bin/sh
115                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116         fi
117 fi
118 case "$inksh/$needksh" in
119 /[a-z]*)
120                 ENV=''
121                 changesh=true
122                 reason="$needksh"
123         ;;
124 esac
125 case "$inksh/$avoidksh" in
126 true/[a-z]*)
127         changesh=true
128         reason="$avoidksh"
129         ;;
130 esac
131 case "$inksh/$needksh-$avoidksh-" in
132 true/--)
133                 cat <<EOM
134 (I see you are using the Korn shell.  Some ksh's blow up on $me,
135 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
136 EOM
137         ;;
138 esac
139 case "$changesh" in
140 true)
141         echo "(Feeding myself to $newsh $reason.)"
142         case "$0" in
143         Configure|*/Configure) exec $newsh $0 "$@";;
144         *) exec $newsh Configure "$@";;
145         esac
146         ;;
147 esac
148
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
151 case "$CDPATH" in
152 '')     ;;
153 *)      case "$SHELL" in
154         *bash*) CDPATH='.' ;;
155         *)              CDPATH='' ;;
156         esac
157         ;;
158 esac
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
161 cd UU && rm -f ./*
162
163 ccsymbols=''
164 cppccsymbols=''
165 cppsymbols=''
166 dynamic_ext=''
167 extensions=''
168 known_extensions=''
169 nonxs_ext=''
170 static_ext=''
171 useopcode=''
172 useposix=''
173 d_bsd=''
174 d_eunice=''
175 d_xenix=''
176 eunicefix=''
177 Mcc=''
178 ar=''
179 awk=''
180 bash=''
181 bison=''
182 byacc=''
183 cat=''
184 chgrp=''
185 chmod=''
186 chown=''
187 comm=''
188 compress=''
189 cp=''
190 cpio=''
191 cpp=''
192 csh=''
193 date=''
194 echo=''
195 egrep=''
196 emacs=''
197 expr=''
198 find=''
199 flex=''
200 grep=''
201 gzip=''
202 inews=''
203 ksh=''
204 less=''
205 line=''
206 lint=''
207 ln=''
208 lp=''
209 lpr=''
210 ls=''
211 mail=''
212 mailx=''
213 make=''
214 mkdir=''
215 more=''
216 mv=''
217 nm=''
218 nroff=''
219 perl=''
220 pg=''
221 pmake=''
222 pr=''
223 rm=''
224 rmail=''
225 sed=''
226 sendmail=''
227 shar=''
228 sleep=''
229 smail=''
230 sort=''
231 submit=''
232 tail=''
233 tar=''
234 tbl=''
235 tee=''
236 test=''
237 touch=''
238 tr=''
239 troff=''
240 uname=''
241 uniq=''
242 uuname=''
243 vi=''
244 zcat=''
245 zip=''
246 full_ar=''
247 full_sed=''
248 libswanted=''
249 hint=''
250 myuname=''
251 osname=''
252 osvers=''
253 Author=''
254 Date=''
255 Header=''
256 Id=''
257 Locker=''
258 Log=''
259 RCSfile=''
260 Revision=''
261 Source=''
262 State=''
263 _a=''
264 _exe=''
265 _o=''
266 archobjs=''
267 exe_ext=''
268 firstmakefile=''
269 lib_ext=''
270 obj_ext=''
271 path_sep=''
272 afs=''
273 alignbytes=''
274 ansi2knr=''
275 archlib=''
276 archlibexp=''
277 d_archlib=''
278 installarchlib=''
279 archname=''
280 myarchname=''
281 d_atolf=''
282 d_atoll=''
283 baserev=''
284 bin=''
285 binexp=''
286 installbin=''
287 bincompat5005=''
288 d_bincompat5005=''
289 byteorder=''
290 cc=''
291 gccversion=''
292 ccflags=''
293 cppflags=''
294 ldflags=''
295 lkflags=''
296 locincpth=''
297 optimize=''
298 cf_email=''
299 cf_by=''
300 cf_time=''
301 charsize=''
302 contains=''
303 cpp_stuff=''
304 cpplast=''
305 cppminus=''
306 cpprun=''
307 cppstdin=''
308 crosscompile=''
309 d_access=''
310 d_accessx=''
311 d_alarm=''
312 d_attribut=''
313 d_bcmp=''
314 d_bcopy=''
315 d_bzero=''
316 d_casti32=''
317 castflags=''
318 d_castneg=''
319 d_chown=''
320 d_chroot=''
321 d_chsize=''
322 d_closedir=''
323 d_void_closedir=''
324 d_const=''
325 cryptlib=''
326 d_crypt=''
327 d_csh=''
328 full_csh=''
329 d_cuserid=''
330 d_dbl_dig=''
331 d_difftime=''
332 d_dlerror=''
333 d_dlopen=''
334 d_dlsymun=''
335 d_dosuid=''
336 d_suidsafe=''
337 d_drand48proto=''
338 d_dup2=''
339 d_eaccess=''
340 d_endgrent=''
341 d_endhent=''
342 d_endnent=''
343 d_endpent=''
344 d_endpwent=''
345 d_endsent=''
346 d_endspent=''
347 d_fchmod=''
348 d_fchown=''
349 d_fcntl=''
350 d_fd_macros=''
351 d_fd_set=''
352 d_fds_bits=''
353 d_fgetpos=''
354 d_flexfnam=''
355 d_flock=''
356 d_fork=''
357 d_fpos64_t=''
358 d_fs_data_s=''
359 d_fseeko=''
360 d_fsetpos=''
361 d_fstatfs=''
362 d_ftello=''
363 d_ftime=''
364 d_gettimeod=''
365 d_Gconvert=''
366 d_getcwd=''
367 d_getfsstat=''
368 d_getgrent=''
369 d_getgrps=''
370 d_gethbyaddr=''
371 d_gethbyname=''
372 d_gethent=''
373 aphostname=''
374 d_gethname=''
375 d_phostname=''
376 d_uname=''
377 d_gethostprotos=''
378 d_getlogin=''
379 d_getmnt=''
380 d_getmntent=''
381 d_getnbyaddr=''
382 d_getnbyname=''
383 d_getnent=''
384 d_getnetprotos=''
385 d_getpent=''
386 d_getpgid=''
387 d_getpgrp2=''
388 d_bsdgetpgrp=''
389 d_getpgrp=''
390 d_getppid=''
391 d_getprior=''
392 d_getpbyname=''
393 d_getpbynumber=''
394 d_getprotoprotos=''
395 d_getpwent=''
396 d_getsent=''
397 d_getservprotos=''
398 d_getspent=''
399 d_getspnam=''
400 d_getsbyname=''
401 d_getsbyport=''
402 d_gnulibc=''
403 d_hasmntopt=''
404 d_htonl=''
405 d_iconv=''
406 d_inetaton=''
407 d_int64_t=''
408 d_isascii=''
409 d_killpg=''
410 d_lchown=''
411 d_ldbl_dig=''
412 d_link=''
413 d_locconv=''
414 d_lockf=''
415 d_longdbl=''
416 longdblsize=''
417 d_longlong=''
418 longlongsize=''
419 d_lseekproto=''
420 d_lstat=''
421 d_madvise=''
422 d_mblen=''
423 d_mbstowcs=''
424 d_mbtowc=''
425 d_memchr=''
426 d_memcmp=''
427 d_memcpy=''
428 d_memmove=''
429 d_memset=''
430 d_mkdir=''
431 d_mkdtemp=''
432 d_mkfifo=''
433 d_mkstemp=''
434 d_mkstemps=''
435 d_mktime=''
436 d_mmap=''
437 mmaptype=''
438 d_mprotect=''
439 d_msg=''
440 d_msgctl=''
441 d_msgget=''
442 d_msgrcv=''
443 d_msgsnd=''
444 d_msync=''
445 d_munmap=''
446 d_nice=''
447 d_off64_t=''
448 d_open3=''
449 d_fpathconf=''
450 d_pathconf=''
451 d_pause=''
452 d_pipe=''
453 d_poll=''
454 d_portable=''
455 d_old_pthread_create_joinable=''
456 old_pthread_create_joinable=''
457 d_pthread_yield=''
458 d_sched_yield=''
459 sched_yield=''
460 d_qgcvt=''
461 d_readdir=''
462 d_rewinddir=''
463 d_seekdir=''
464 d_telldir=''
465 d_readlink=''
466 d_rename=''
467 d_rmdir=''
468 d_safebcpy=''
469 d_safemcpy=''
470 d_sanemcmp=''
471 d_select=''
472 d_sem=''
473 d_semctl=''
474 d_semget=''
475 d_semop=''
476 d_setegid=''
477 d_seteuid=''
478 d_setgrent=''
479 d_setgrps=''
480 d_sethent=''
481 d_setlinebuf=''
482 d_setlocale=''
483 d_setnent=''
484 d_setpent=''
485 d_setpgid=''
486 d_setpgrp2=''
487 d_bsdsetpgrp=''
488 d_setpgrp=''
489 d_setprior=''
490 d_setpwent=''
491 d_setregid=''
492 d_setresgid=''
493 d_setresuid=''
494 d_setreuid=''
495 d_setrgid=''
496 d_setruid=''
497 d_setsent=''
498 d_setsid=''
499 d_setspent=''
500 d_setvbuf=''
501 d_sfio=''
502 usesfio=''
503 d_shm=''
504 d_shmat=''
505 d_shmatprototype=''
506 shmattype=''
507 d_shmctl=''
508 d_shmdt=''
509 d_shmget=''
510 d_sigaction=''
511 d_sigsetjmp=''
512 d_msg_ctrunc=''
513 d_msg_dontroute=''
514 d_msg_oob=''
515 d_msg_peek=''
516 d_msg_proxy=''
517 d_oldsock=''
518 d_scm_rights=''
519 d_socket=''
520 d_sockpair=''
521 sockethdr=''
522 socketlib=''
523 d_socklen_t=''
524 d_sqrtl=''
525 d_statblks=''
526 d_statfs_f_flags=''
527 d_statfs_s=''
528 d_fstatvfs=''
529 d_statvfs=''
530 d_stdio_cnt_lval=''
531 d_stdio_ptr_lval=''
532 d_stdiobase=''
533 d_stdstdio=''
534 stdio_base=''
535 stdio_bufsiz=''
536 stdio_cnt=''
537 stdio_filbuf=''
538 stdio_ptr=''
539 d_index=''
540 d_strchr=''
541 d_strcoll=''
542 d_strctcpy=''
543 d_strerrm=''
544 d_strerror=''
545 d_sysernlst=''
546 d_syserrlst=''
547 d_strtod=''
548 d_strtol=''
549 d_strtold=''
550 d_strtoll=''
551 d_strtoul=''
552 d_strtoull=''
553 d_strtouq=''
554 d_strxfrm=''
555 d_symlink=''
556 d_syscall=''
557 d_sysconf=''
558 d_system=''
559 d_tcgetpgrp=''
560 d_tcsetpgrp=''
561 d_telldirproto=''
562 d_time=''
563 timetype=''
564 clocktype=''
565 d_times=''
566 d_truncate=''
567 d_tzname=''
568 d_umask=''
569 d_semctl_semid_ds=''
570 d_semctl_semun=''
571 d_union_semun=''
572 d_ustat=''
573 d_vfork=''
574 usevfork=''
575 d_voidsig=''
576 signal_t=''
577 d_volatile=''
578 d_charvspr=''
579 d_vprintf=''
580 d_wait4=''
581 d_waitpid=''
582 d_wcstombs=''
583 d_wctomb=''
584 dlext=''
585 cccdlflags=''
586 ccdlflags=''
587 dlsrc=''
588 ld=''
589 lddlflags=''
590 usedl=''
591 doublesize=''
592 ebcdic=''
593 fflushNULL=''
594 fflushall=''
595 fpossize=''
596 fpostype=''
597 gidformat=''
598 gidsign=''
599 gidsize=''
600 gidtype=''
601 groupstype=''
602 h_fcntl=''
603 h_sysfile=''
604 i_arpainet=''
605 db_hashtype=''
606 db_prefixtype=''
607 i_db=''
608 i_dbm=''
609 i_rpcsvcdbm=''
610 d_dirnamlen=''
611 direntrytype=''
612 i_dirent=''
613 i_dld=''
614 i_dlfcn=''
615 i_fcntl=''
616 i_float=''
617 i_gdbm=''
618 d_grpasswd=''
619 i_grp=''
620 i_iconv=''
621 i_ieeefp=''
622 i_inttypes=''
623 i_limits=''
624 i_locale=''
625 i_machcthr=''
626 i_malloc=''
627 i_math=''
628 i_memory=''
629 i_mntent=''
630 i_ndbm=''
631 i_netdb=''
632 i_neterrno=''
633 i_netinettcp=''
634 i_niin=''
635 i_sysin=''
636 i_poll=''
637 i_pthread=''
638 d_pwage=''
639 d_pwchange=''
640 d_pwclass=''
641 d_pwcomment=''
642 d_pwexpire=''
643 d_pwgecos=''
644 d_pwpasswd=''
645 d_pwquota=''
646 i_pwd=''
647 i_sfio=''
648 i_shadow=''
649 i_socks=''
650 i_stddef=''
651 i_stdlib=''
652 i_string=''
653 strings=''
654 i_sunmath=''
655 i_sysaccess=''
656 i_sysdir=''
657 i_sysfile=''
658 d_voidtty=''
659 i_bsdioctl=''
660 i_sysfilio=''
661 i_sysioctl=''
662 i_syssockio=''
663 i_syslog=''
664 i_sysmman=''
665 i_sysmode=''
666 i_sysmount=''
667 i_sysndir=''
668 i_sysparam=''
669 i_sysresrc=''
670 i_syssecrt=''
671 i_sysselct=''
672 i_sysstat=''
673 i_sysstatfs=''
674 i_sysstatvfs=''
675 i_systimes=''
676 i_systypes=''
677 i_sysuio=''
678 i_sysun=''
679 i_sysutsname=''
680 i_sysvfs=''
681 i_syswait=''
682 i_sgtty=''
683 i_termio=''
684 i_termios=''
685 i_systime=''
686 i_systimek=''
687 i_time=''
688 timeincl=''
689 i_unistd=''
690 i_ustat=''
691 i_utime=''
692 i_values=''
693 i_stdarg=''
694 i_varargs=''
695 i_varhdr=''
696 i_vfork=''
697 inc_version_list=''
698 inc_version_list_init=''
699 installprefix=''
700 installprefixexp=''
701 installstyle=''
702 installusrbinperl=''
703 intsize=''
704 longsize=''
705 shortsize=''
706 libc=''
707 ldlibpthname=''
708 libperl=''
709 shrpenv=''
710 useshrplib=''
711 glibpth=''
712 libpth=''
713 loclibpth=''
714 plibpth=''
715 xlibpth=''
716 ignore_versioned_solibs=''
717 libs=''
718 libsdirs=''
719 libsfiles=''
720 libsfound=''
721 libspath=''
722 lns=''
723 d_PRIEldbl=''
724 d_PRIFldbl=''
725 d_PRIGldbl=''
726 d_PRIeldbl=''
727 d_PRIfldbl=''
728 d_PRIgldbl=''
729 sPRIEldbl=''
730 sPRIFldbl=''
731 sPRIGldbl=''
732 sPRIeldbl=''
733 sPRIfldbl=''
734 sPRIgldbl=''
735 lseeksize=''
736 lseektype=''
737 make_set_make=''
738 d_mymalloc=''
739 freetype=''
740 mallocobj=''
741 mallocsrc=''
742 malloctype=''
743 usemymalloc=''
744 installman1dir=''
745 man1dir=''
746 man1direxp=''
747 man1ext=''
748 installman3dir=''
749 man3dir=''
750 man3direxp=''
751 man3ext=''
752 huge=''
753 large=''
754 medium=''
755 models=''
756 small=''
757 split=''
758 modetype=''
759 multiarch=''
760 mydomain=''
761 myhostname=''
762 phostname=''
763 c=''
764 n=''
765 d_eofnblk=''
766 eagain=''
767 o_nonblock=''
768 rd_nodata=''
769 netdb_hlen_type=''
770 netdb_host_type=''
771 netdb_name_type=''
772 netdb_net_type=''
773 groupcat=''
774 hostcat=''
775 passcat=''
776 orderlib=''
777 ranlib=''
778 package=''
779 spackage=''
780 pager=''
781 api_revision=''
782 api_subversion=''
783 api_version=''
784 api_versionstring=''
785 patchlevel=''
786 revision=''
787 subversion=''
788 version=''
789 perl5=''
790 perladmin=''
791 perlpath=''
792 d_nv_preserves_uv=''
793 i16size=''
794 i16type=''
795 i32size=''
796 i32type=''
797 i64size=''
798 i64type=''
799 i8size=''
800 i8type=''
801 ivsize=''
802 ivtype=''
803 nvsize=''
804 nvtype=''
805 u16size=''
806 u16type=''
807 u32size=''
808 u32type=''
809 u64size=''
810 u64type=''
811 u8size=''
812 u8type=''
813 uvsize=''
814 uvtype=''
815 ivdformat=''
816 uvoformat=''
817 uvuformat=''
818 uvxformat=''
819 pidtype=''
820 prefix=''
821 prefixexp=''
822 installprivlib=''
823 privlib=''
824 privlibexp=''
825 prototype=''
826 ptrsize=''
827 d_PRIX64=''
828 d_PRId64=''
829 d_PRIi64=''
830 d_PRIo64=''
831 d_PRIu64=''
832 d_PRIx64=''
833 sPRIX64=''
834 sPRId64=''
835 sPRIi64=''
836 sPRIo64=''
837 sPRIu64=''
838 sPRIx64=''
839 d_quad=''
840 quadkind=''
841 quadtype=''
842 uquadtype=''
843 drand01=''
844 randbits=''
845 randfunc=''
846 randseedtype=''
847 seedfunc=''
848 installscript=''
849 scriptdir=''
850 scriptdirexp=''
851 selectminbits=''
852 selecttype=''
853 sh=''
854 sig_count=''
855 sig_name=''
856 sig_name_init=''
857 sig_num=''
858 sig_num_init=''
859 installsitearch=''
860 sitearch=''
861 sitearchexp=''
862 installsitebin=''
863 sitebin=''
864 sitebinexp=''
865 installsitelib=''
866 sitelib=''
867 sitelibexp=''
868 siteprefix=''
869 siteprefixexp=''
870 sizetype=''
871 so=''
872 socksizetype=''
873 sharpbang=''
874 shsharp=''
875 spitshell=''
876 src=''
877 ssizetype=''
878 startperl=''
879 startsh=''
880 stdchar=''
881 d_stdio_stream_array=''
882 stdio_stream_array=''
883 sysman=''
884 trnl=''
885 uidformat=''
886 uidsign=''
887 uidsize=''
888 uidtype=''
889 archname64=''
890 use64bitall=''
891 use64bitint=''
892 uselargefiles=''
893 uselongdouble=''
894 usemorebits=''
895 usemultiplicity=''
896 nm_opt=''
897 nm_so_opt=''
898 runnm=''
899 usenm=''
900 useperlio=''
901 usesocks=''
902 d_oldpthreads=''
903 use5005threads=''
904 useithreads=''
905 usethreads=''
906 incpath=''
907 mips_type=''
908 usrinc=''
909 d_vendorbin=''
910 installvendorbin=''
911 vendorbin=''
912 vendorbinexp=''
913 d_vendorlib=''
914 installvendorlib=''
915 vendorlib=''
916 vendorlibexp=''
917 usevendorprefix=''
918 vendorprefix=''
919 vendorprefixexp=''
920 defvoidused=''
921 voidflags=''
922 pm_apiversion=''
923 xs_apiversion=''
924 CONFIG=''
925
926 define='define'
927 undef='undef'
928 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
929 rmlist=''
930
931 : We must find out about Eunice early
932 eunicefix=':'
933 if test -f /etc/unixtovms; then
934         eunicefix=/etc/unixtovms
935 fi
936 if test -f /etc/unixtovms.exe; then
937         eunicefix=/etc/unixtovms.exe
938 fi
939
940 i_whoami=''
941 : set useposix=false in your hint file to disable the POSIX extension.
942 useposix=true
943 : set useopcode=false in your hint file to disable the Opcode extension.
944 useopcode=true
945 : Trailing extension.  Override this in a hint file, if needed.
946 _exe=''
947 : Extra object files, if any, needed on this platform.
948 archobjs=''
949 : Possible local include directories to search.
950 : Set locincpth to "" in a hint file to defeat local include searches.
951 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
952 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
953 :
954 : no include file wanted by default
955 inclwanted=''
956
957 groupstype=''
958 : change the next line if compiling for Xenix/286 on Xenix/386
959 xlibpth='/usr/lib/386 /lib/386'
960 : Possible local library directories to search.
961 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
962 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
963
964 : general looking path for locating libraries
965 glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
966 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
967 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
968 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
969 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
970
971 : Private path used by Configure to find libraries.  Its value
972 : is prepended to libpth. This variable takes care of special
973 : machines, like the mips.  Usually, it should be empty.
974 plibpth=''
975
976 : default library list
977 libswanted=''
978 : some systems want to use only the non-versioned libso:s
979 ignore_versioned_solibs=''
980 : set usemultiplicity on the Configure command line to enable multiplicity.
981 : set usesocks on the Configure command line to enable socks.
982 : set usethreads on the Configure command line to enable threads.
983 : full support for void wanted by default
984 defvoidused=15
985
986 : List of libraries we want.
987 : If anyone needs -lnet, put it in a hint file.
988 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
989 libswanted="$libswanted dld ld sun m c cposix posix"
990 libswanted="$libswanted ndir dir crypt sec"
991 libswanted="$libswanted ucb bsd BSD PW x iconv"
992 : We probably want to search /usr/shlib before most other libraries.
993 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
994 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
995 glibpth="/usr/shlib $glibpth"
996 : Do not use vfork unless overridden by a hint file.
997 usevfork=false
998
999 : Find the basic shell for Bourne shell scripts
1000 case "$sh" in
1001 '')
1002         case "$SYSTYPE" in
1003         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1004         *) xxx='/bin/sh';;
1005         esac
1006         if test -f "$xxx"; then
1007                 sh="$xxx"
1008         else
1009                 : Build up a list and do a single loop so we can 'break' out.
1010                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1011                 for xxx in sh bash ksh pdksh ash; do
1012                         for p in $pth; do
1013                                 try="$try ${p}/${xxx}"
1014                         done
1015                 done
1016                 for xxx in $try; do
1017                         if test -f "$xxx"; then
1018                                 sh="$xxx";
1019                                 break
1020                         elif test -f "$xxx.exe"; then
1021                                 sh="$xxx";
1022                                 break
1023                         fi
1024                 done
1025         fi
1026         ;;
1027 esac
1028
1029 case "$sh" in
1030 '')     cat <<EOM >&2
1031 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1032
1033 Usually it's in /bin/sh.  How did you even get this far?
1034 Please contact me (Perl Maintainers) at perlbug@perl.com and 
1035 we'll try to straighten this all out.
1036 EOM
1037         exit 1
1038         ;;
1039 esac
1040
1041 : see if sh knows # comments
1042 if `$sh -c '#' >/dev/null 2>&1`; then
1043         shsharp=true
1044         spitshell=cat
1045         xcat=/bin/cat
1046         test -f $xcat || xcat=/usr/bin/cat
1047         echo "#!$xcat" >try
1048         $eunicefix try
1049         chmod +x try
1050         ./try > today
1051         if test -s today; then
1052                 sharpbang='#!'
1053         else
1054                 echo "#! $xcat" > try
1055                 $eunicefix try
1056                 chmod +x try
1057                 ./try > today
1058                 if test -s today; then
1059                         sharpbang='#! '
1060                 else
1061                         sharpbang=': use '
1062                 fi
1063         fi
1064 else
1065         echo " "
1066         echo "Your $sh doesn't grok # comments--I will strip them later on."
1067         shsharp=false
1068         cd ..
1069         echo "exec grep -v '^[  ]*#'" >spitshell
1070         chmod +x spitshell
1071         $eunicefix spitshell
1072         spitshell=`pwd`/spitshell
1073         cd UU
1074         echo "I presume that if # doesn't work, #! won't work either!"
1075         sharpbang=': use '
1076 fi
1077 rm -f try today
1078
1079 : figure out how to guarantee sh startup
1080 case "$startsh" in
1081 '') startsh=${sharpbang}${sh} ;;
1082 *)
1083 esac
1084 cat >try <<EOSS
1085 $startsh
1086 set abc
1087 test "$?abc" != 1
1088 EOSS
1089
1090 chmod +x try
1091 $eunicefix try
1092 if ./try; then
1093         : echo "Yup, it does."
1094 else
1095         echo "Hmm... '$startsh' does not guarantee sh startup..."
1096         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1097 fi
1098 rm -f try
1099
1100
1101 : Save command line options in file UU/cmdline.opt for later use in
1102 : generating config.sh.
1103 cat > cmdline.opt <<EOSH
1104 # Configure command line arguments.
1105 config_arg0='$0'
1106 config_args='$*'
1107 config_argc=$#
1108 EOSH
1109 argn=1
1110 for arg in "$@"; do
1111         cat >>cmdline.opt <<EOSH
1112 config_arg$argn='$arg'
1113 EOSH
1114         argn=`expr $argn + 1`
1115 done
1116
1117 : produce awk script to parse command line options
1118 cat >options.awk <<'EOF'
1119 BEGIN {
1120         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1121
1122         len = length(optstr);
1123         for (i = 1; i <= len; i++) {
1124                 c = substr(optstr, i, 1);
1125                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1126                 if (a == ":") {
1127                         arg[c] = 1;
1128                         i++;
1129                 }
1130                 opt[c] = 1;
1131         }
1132 }
1133 {
1134         expect = 0;
1135         str = $0;
1136         if (substr(str, 1, 1) != "-") {
1137                 printf("'%s'\n", str);
1138                 next;
1139         }
1140         len = length($0);
1141         for (i = 2; i <= len; i++) {
1142                 c = substr(str, i, 1);
1143                 if (!opt[c]) {
1144                         printf("-%s\n", substr(str, i));
1145                         next;
1146                 }
1147                 printf("-%s\n", c);
1148                 if (arg[c]) {
1149                         if (i < len)
1150                                 printf("'%s'\n", substr(str, i + 1));
1151                         else
1152                                 expect = 1;
1153                         next;
1154                 }
1155         }
1156 }
1157 END {
1158         if (expect)
1159                 print "?";
1160 }
1161 EOF
1162
1163 : process the command line options
1164 set X `for arg in "$@"; do echo "X$arg"; done |
1165         sed -e s/X// | awk -f options.awk`
1166 eval "set $*"
1167 shift
1168 rm -f options.awk
1169
1170 : set up default values
1171 fastread=''
1172 reuseval=false
1173 config_sh=''
1174 alldone=''
1175 error=''
1176 silent=''
1177 extractsh=''
1178 override=''
1179 knowitall=''
1180 rm -f optdef.sh posthint.sh
1181 cat >optdef.sh <<EOS
1182 $startsh
1183 EOS
1184
1185
1186 : option parsing
1187 while test $# -gt 0; do
1188         case "$1" in
1189         -d) shift; fastread=yes;;
1190         -e) shift; alldone=cont;;
1191         -f)
1192                 shift
1193                 cd ..
1194                 if test -r "$1"; then
1195                         config_sh="$1"
1196                 else
1197                         echo "$me: cannot read config file $1." >&2
1198                         error=true
1199                 fi
1200                 cd UU
1201                 shift;;
1202         -h) shift; error=true;;
1203         -r) shift; reuseval=true;;
1204         -s) shift; silent=true; realsilent=true;;
1205         -E) shift; alldone=exit;;
1206         -K) shift; knowitall=true;;
1207         -O) shift; override=true;;
1208         -S) shift; silent=true; extractsh=true;;
1209         -D)
1210                 shift
1211                 case "$1" in
1212                 *=)
1213                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1214                         echo "$me: ignoring -D $1" >&2
1215                         ;;
1216                 *=*) echo "$1" | \
1217                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1218                 *) echo "$1='define'" >> optdef.sh;;
1219                 esac
1220                 shift
1221                 ;;
1222         -U)
1223                 shift
1224                 case "$1" in
1225                 *=) echo "$1" >> optdef.sh;;
1226                 *=*)
1227                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1228                         echo "$me: ignoring -U $1" >&2
1229                         ;;
1230                 *) echo "$1='undef'" >> optdef.sh;;
1231                 esac
1232                 shift
1233                 ;;
1234         -A)
1235             shift
1236             xxx=''
1237             yyy="$1"
1238             zzz=''
1239             uuu=undef
1240             case "$yyy" in
1241             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1242                  case "$zzz" in
1243                  *:*) zzz='' ;;
1244                  *)   xxx=append
1245                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1246                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1247                  esac
1248                  ;;
1249             esac
1250             case "$xxx" in
1251             '')  case "$yyy" in
1252                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1253                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1254                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1255                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1256                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1257                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1258                  esac
1259                  ;;       
1260             esac
1261             case "$xxx" in
1262             append)
1263                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1264             clear)
1265                 echo "$yyy=''"                  >> posthint.sh ;;
1266             define)
1267                 case "$zzz" in
1268                 '') zzz=define ;;
1269                 esac
1270                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1271             eval)
1272                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1273             prepend)
1274                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1275             undef)
1276                 case "$zzz" in
1277                 '') zzz="$uuu" ;;
1278                 esac
1279                 echo "$yyy=$zzz"                >> posthint.sh ;;
1280             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1281             esac
1282             shift
1283             ;;
1284         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1285             exit 0;;
1286         --) break;;
1287         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1288         *) break;;
1289         esac
1290 done
1291
1292 case "$error" in
1293 true)
1294         cat >&2 <<EOM
1295 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1296                  [-U symbol] [-U symbol=] [-A command:symbol...]
1297   -d : use defaults for all answers.
1298   -e : go on without questioning past the production of config.sh.
1299   -f : specify an alternate default configuration file.
1300   -h : print this help message and exit (with an error status).
1301   -r : reuse C symbols value if possible (skips costly nm extraction).
1302   -s : silent mode, only echoes questions and essential information.
1303   -D : define symbol to have some value:
1304          -D symbol         symbol gets the value 'define'
1305          -D symbol=value   symbol gets the value 'value'
1306   -E : stop at the end of questions, after having produced config.sh.
1307   -K : do not use unless you know what you are doing.
1308   -O : let -D and -U override definitions from loaded configuration file.
1309   -S : perform variable substitutions on all .SH files (can mix with -f)
1310   -U : undefine symbol:
1311          -U symbol    symbol gets the value 'undef'
1312          -U symbol=   symbol gets completely empty
1313   -A : manipulate symbol after the platform specific hints have been applied:
1314          -A symbol=value                append " "value to symbol
1315          -A append:symbol=value         append value to symbol
1316          -A define:symbol=value         define symbol to have value
1317          -A clear:symbol                define symbol to be ''
1318          -A define:symbol               define symbol to be 'define'
1319          -A eval:symbol=value           define symbol to be eval of value
1320          -A prepend:symbol=value        prepend value to symbol
1321          -A undef:symbol                define symbol to be 'undef'
1322          -A undef:symbol=               define symbol to be ''
1323   -V : print version number and exit (with a zero status).
1324 EOM
1325         exit 1
1326         ;;
1327 esac
1328
1329 : Sanity checks
1330 case "$fastread$alldone" in
1331 yescont|yesexit) ;;
1332 *)
1333         if test ! -t 0; then
1334                 echo "Say 'sh Configure', not 'sh <Configure'"
1335                 exit 1
1336         fi
1337         ;;
1338 esac
1339
1340 exec 4>&1
1341 case "$silent" in
1342 true) exec 1>/dev/null;;
1343 esac
1344
1345 : run the defines and the undefines, if any, but leave the file out there...
1346 touch optdef.sh
1347 . ./optdef.sh
1348 : create the posthint manipulation script and leave the file out there...
1349 touch posthint.sh
1350
1351 : set package name
1352 package=perl5
1353 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1354 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1355 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1356 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1357 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1358 esac
1359
1360 : Some greps do not return status, grrr.
1361 echo "grimblepritz" >grimble
1362 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1363         contains=contains
1364 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1365         contains=grep
1366 else
1367         contains=contains
1368 fi
1369 rm -f grimble
1370 : the following should work in any shell
1371 case "$contains" in
1372 contains*)
1373         echo " "
1374         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1375         cat >contains <<'EOSS'
1376 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1377 EOSS
1378 chmod +x contains
1379 esac
1380
1381 : Find the path to the source tree
1382 case "$src" in
1383 '') case "$0" in
1384     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1385          case "$src" in
1386          /*)    ;;
1387          *)     src=`cd ../$src && pwd` ;;
1388          esac
1389          ;;
1390     *)   src='.';;
1391     esac;;
1392 esac
1393 case "$src" in
1394 '')     src=/
1395         rsrc=/
1396         ;;
1397 /*) rsrc="$src";;
1398 *) rsrc="../$src";;
1399 esac
1400 if test -f $rsrc/Configure && \
1401         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1402 then
1403    : found it, so we are ok.
1404 else
1405         rsrc=''
1406         for src in . .. ../.. ../../.. ../../../..; do
1407                 if test -f ../$src/Configure && \
1408                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1409                 then
1410                         rsrc=../$src
1411                         break
1412                 fi
1413         done
1414 fi
1415 case "$rsrc" in
1416 '')
1417         cat <<EOM >&4
1418
1419 Sorry, I can't seem to locate the source dir for $package.  Please start
1420 Configure with an explicit path -- i.e. /some/path/Configure.
1421
1422 EOM
1423         exit 1
1424         ;;
1425 ../.)   rsrc='..';;
1426 *)
1427         echo " "
1428         echo "Sources for $package found in \"$src\"." >&4
1429         ;;
1430 esac
1431
1432 : script used to extract .SH files with variable substitutions
1433 cat >extract <<'EOS'
1434 CONFIGDOTSH=true
1435 echo "Doing variable substitutions on .SH files..."
1436 if test -f $src/MANIFEST; then
1437         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1438 else
1439         echo "(Looking for .SH files under the source directory.)"
1440         set x `(cd $src; find . -name "*.SH" -print)`
1441 fi
1442 shift
1443 case $# in
1444 0) set x `(cd $src; echo *.SH)`; shift;;
1445 esac
1446 if test ! -f $src/$1; then
1447         shift
1448 fi
1449 mkdir_p='
1450 name=$1;
1451 create="";
1452 while test $name; do
1453         if test ! -d "$name"; then
1454                 create="$name $create";
1455                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1456                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1457         else
1458                 name="";
1459         fi;
1460 done;
1461 for file in $create; do
1462         mkdir $file;
1463 done
1464 '
1465 for file in $*; do
1466         case "$src" in
1467         ".")
1468                 case "$file" in
1469                 */*)
1470                         dir=`expr X$file : 'X\(.*\)/'`
1471                         file=`expr X$file : 'X.*/\(.*\)'`
1472                         (cd $dir && . ./$file)
1473                         ;;
1474                 *)
1475                         . ./$file
1476                         ;;
1477                 esac
1478                 ;;
1479         *)
1480                 case "$file" in
1481                 */*)
1482                         dir=`expr X$file : 'X\(.*\)/'`
1483                         file=`expr X$file : 'X.*/\(.*\)'`
1484                         (set x $dir; shift; eval $mkdir_p)
1485                         sh <$src/$dir/$file
1486                         ;;
1487                 *)
1488                         sh <$src/$file
1489                         ;;
1490                 esac
1491                 ;;
1492         esac
1493 done
1494 if test -f $src/config_h.SH; then
1495         if test ! -f config.h; then
1496         : oops, they left it out of MANIFEST, probably, so do it anyway.
1497         . $src/config_h.SH
1498         fi
1499 fi
1500 EOS
1501
1502 : extract files and exit if asked to do so
1503 case "$extractsh" in
1504 true)
1505         case "$realsilent" in
1506         true) ;;
1507         *) exec 1>&4;;
1508         esac
1509         case "$config_sh" in
1510         '') config_sh='config.sh';;
1511         esac
1512         echo " "
1513         echo "Fetching answers from $config_sh..."
1514         cd ..
1515         . $config_sh
1516         test "$override" && . ./optdef.sh
1517         echo " "
1518         . UU/extract
1519         rm -rf UU
1520         echo "Done."
1521         exit 0
1522         ;;
1523 esac
1524
1525 : Eunice requires " " instead of "", can you believe it
1526 echo " "
1527 : Here we go...
1528 echo "Beginning of configuration questions for $package."
1529
1530 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1531
1532 : first determine how to suppress newline on echo command
1533 echo " "
1534 echo "Checking echo to see how to suppress newlines..."
1535 (echo "hi there\c" ; echo " ") >.echotmp
1536 if $contains c .echotmp >/dev/null 2>&1 ; then
1537         echo "...using -n."
1538         n='-n'
1539         c=''
1540 else
1541         cat <<'EOM'
1542 ...using \c
1543 EOM
1544         n=''
1545         c='\c'
1546 fi
1547 echo $n "The star should be here-->$c"
1548 echo '*'
1549 rm -f .echotmp
1550
1551 : Now test for existence of everything in MANIFEST
1552 echo " "
1553 if test -f $rsrc/MANIFEST; then
1554         echo "First let's make sure your kit is complete.  Checking..." >&4
1555         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1556         rm -f missing
1557         tmppwd=`pwd`
1558         for filelist in x??; do
1559                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1560         done
1561         if test -s missing; then
1562                 cat missing >&4
1563                 cat >&4 <<'EOM'
1564
1565 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1566
1567 You have the option of continuing the configuration process, despite the
1568 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1569 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1570 and contact the author (perlbug@perl.com).
1571
1572 EOM
1573                 echo $n "Continue? [n] $c" >&4
1574                 read ans
1575                 case "$ans" in
1576                 y*)
1577                         echo "Continuing..." >&4
1578                         rm -f missing
1579                         ;;
1580                 *)
1581                         echo "ABORTING..." >&4
1582                         kill $$
1583                         ;;
1584                 esac
1585         else
1586                 echo "Looks good..."
1587         fi
1588 else
1589         echo "There is no MANIFEST file.  I hope your kit is complete !"
1590 fi
1591 rm -f missing x??
1592
1593 echo " "
1594 : Find the appropriate value for a newline for tr
1595 if test -n "$DJGPP"; then
1596        trnl='\012'
1597 fi
1598 if test X"$trnl" = X; then
1599         case "`echo foo|tr '\n' x 2>/dev/null`" in
1600         foox) trnl='\n' ;;
1601         esac
1602 fi
1603 if test X"$trnl" = X; then
1604         case "`echo foo|tr '\012' x 2>/dev/null`" in
1605         foox) trnl='\012' ;;
1606         esac
1607 fi
1608 if test X"$trnl" = X; then
1609         cat <<EOM >&2
1610
1611 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1612
1613 EOM
1614         exit 1
1615 fi
1616
1617 : compute the number of columns on the terminal for proper question formatting
1618 case "$COLUMNS" in
1619 '') COLUMNS='80';;
1620 esac
1621
1622 : set up the echo used in my read
1623 myecho="case \"\$xxxm\" in
1624 '') echo $n \"\$rp $c\" >&4;;
1625 *) case \"\$rp\" in
1626         '') echo $n \"[\$xxxm] $c\";;
1627         *)
1628                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1629                         echo \"\$rp\" >&4
1630                         echo $n \"[\$xxxm] $c\" >&4
1631                 else
1632                         echo $n \"\$rp [\$xxxm] $c\" >&4
1633                 fi
1634                 ;;
1635         esac;;
1636 esac"
1637
1638 : now set up to do reads with possible shell escape and default assignment
1639 cat <<EOSC >myread
1640 $startsh
1641 xxxm=\$dflt
1642 $myecho
1643 ans='!'
1644 case "\$fastread" in
1645 yes) case "\$dflt" in
1646         '') ;;
1647         *) ans='';
1648                 case "\$silent-\$rp" in
1649                 true-) ;;
1650                 *) echo " " >&4;;
1651                 esac;;
1652         esac;;
1653 *) case "\$silent" in
1654         true) case "\$rp" in
1655                 '') ans='';;
1656                 esac;;
1657         esac;;
1658 esac
1659 while expr "X\$ans" : "X!" >/dev/null; do
1660         read answ
1661         set x \$xxxm
1662         shift
1663         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1664         case  "\$answ" in
1665         "!")
1666                 sh 1>&4
1667                 echo " "
1668                 $myecho
1669                 ;;
1670         !*)
1671                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1672                 shift
1673                 sh 1>&4 -c "\$*"
1674                 echo " "
1675                 $myecho
1676                 ;;
1677         "\$ans")
1678                 case "\$ans" in
1679                 \\&*)
1680                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1681                         shift
1682                         case "\$1" in
1683                         -d)
1684                                 fastread=yes
1685                                 echo "(OK, I'll run with -d after this question.)" >&4
1686                                 ;;
1687                         -*)
1688                                 echo "*** Sorry, \$1 not supported yet." >&4
1689                                 ;;
1690                         esac
1691                         $myecho
1692                         ans=!
1693                         ;;
1694                 esac;;
1695         *)
1696                 case "\$aok" in
1697                 y)
1698                         echo "*** Substitution done -- please confirm."
1699                         xxxm="\$ans"
1700                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1701                         xxxm="\$ans"
1702                         ans=!
1703                         ;;
1704                 *)
1705                         echo "*** Error -- try again."
1706                         ans=!
1707                         ;;
1708                 esac
1709                 $myecho
1710                 ;;
1711         esac
1712         case "\$ans\$xxxm\$nostick" in
1713         '')
1714                 ans=!
1715                 $myecho
1716                 ;;
1717         esac
1718 done
1719 case "\$ans" in
1720 '') ans="\$xxxm";;
1721 esac
1722 EOSC
1723
1724 : create .config dir to save info across Configure sessions
1725 test -d ../.config || mkdir ../.config
1726 cat >../.config/README <<EOF
1727 This directory created by Configure to save information that should
1728 persist across sessions for $package.
1729
1730 You may safely delete it if you wish.
1731 EOF
1732
1733 : general instructions
1734 needman=true
1735 firsttime=true
1736 user=`(logname) 2>/dev/null`
1737 case "$user" in
1738 '') user=`whoami 2>&1`;;
1739 esac
1740 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1741         firsttime=false
1742         echo " "
1743         rp='Would you like to see the instructions?'
1744         dflt=n
1745         . ./myread
1746         case "$ans" in
1747         [yY]*) ;;
1748         *) needman=false;;
1749         esac
1750 fi
1751 if $needman; then
1752         cat <<EOH
1753
1754 This installation shell script will examine your system and ask you questions
1755 to determine how the perl5 package should be installed. If you get
1756 stuck on a question, you may use a ! shell escape to start a subshell or
1757 execute a command.  Many of the questions will have default answers in square
1758 brackets; typing carriage return will give you the default.
1759
1760 On some of the questions which ask for file or directory names you are allowed
1761 to use the ~name construct to specify the login directory belonging to "name",
1762 even if you don't have a shell which knows about that.  Questions where this is
1763 allowed will be marked "(~name ok)".
1764
1765 EOH
1766         rp=''
1767         dflt='Type carriage return to continue'
1768         . ./myread
1769         cat <<'EOH'
1770
1771 The prompter used in this script allows you to use shell variables and
1772 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1773 in the default answer, as if the default line was a set of arguments given to a
1774 script shell.  This means you may also use $* to repeat the whole default line,
1775 so you do not have to re-type everything to add something to the default.
1776
1777 Everytime there is a substitution, you will have to confirm.  If there is an
1778 error (e.g. an unmatched backtick), the default answer will remain unchanged
1779 and you will be prompted again.
1780
1781 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1782 the questions and use the computed defaults (or the previous answers if there
1783 was already a config.sh file). Type 'Configure -h' for a list of options.
1784 You may also start interactively and then answer '& -d' at any prompt to turn
1785 on the non-interactive behaviour for the remainder of the execution.
1786
1787 EOH
1788         . ./myread
1789         cat <<EOH
1790
1791 Much effort has been expended to ensure that this shell script will run on any
1792 Unix system.  If despite that it blows up on yours, your best bet is to edit
1793 Configure and run it again.  If you can't run Configure for some reason,
1794 you'll have to generate a config.sh file by hand.  Whatever problems you
1795 have, let me (perlbug@perl.com) know how I blew it.
1796
1797 This installation script affects things in two ways:
1798
1799 1) it may do direct variable substitutions on some of the files included
1800    in this kit.
1801 2) it builds a config.h file for inclusion in C programs.  You may edit
1802    any of these files as the need arises after running this script.
1803
1804 If you make a mistake on a question, there is no easy way to back up to it
1805 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1806 files.  Configure will offer to let you do this before it runs the SH files.
1807
1808 EOH
1809         dflt='Type carriage return to continue'
1810         . ./myread
1811         case "$firsttime" in
1812         true) echo $user >>../.config/instruct;;
1813         esac
1814 fi
1815
1816 : find out where common programs are
1817 echo " "
1818 echo "Locating common programs..." >&4
1819 cat <<EOSC >loc
1820 $startsh
1821 case \$# in
1822 0) exit 1;;
1823 esac
1824 thing=\$1
1825 shift
1826 dflt=\$1
1827 shift
1828 for dir in \$*; do
1829         case "\$thing" in
1830         .)
1831         if test -d \$dir/\$thing; then
1832                 echo \$dir
1833                 exit 0
1834         fi
1835         ;;
1836         *)
1837         for thisthing in \$dir/\$thing; do
1838                 : just loop through to pick last item
1839         done
1840         if test -f \$thisthing; then
1841                 echo \$thisthing
1842                 exit 0
1843         elif test -f \$dir/\$thing.exe; then
1844                 if test -n "$DJGPP"; then
1845                         echo \$dir/\$thing.exe
1846                 else
1847                         : on Eunice apparently
1848                         echo \$dir/\$thing
1849                 fi
1850                 exit 0
1851         fi
1852         ;;
1853         esac
1854 done
1855 echo \$dflt
1856 exit 1
1857 EOSC
1858 chmod +x loc
1859 $eunicefix loc
1860 loclist="
1861 awk
1862 cat
1863 comm
1864 cp
1865 echo
1866 expr
1867 grep
1868 ls
1869 make
1870 mkdir
1871 rm
1872 sed
1873 sort
1874 touch
1875 tr
1876 uniq
1877 "
1878 trylist="
1879 Mcc
1880 ar
1881 byacc
1882 cpp
1883 csh
1884 date
1885 egrep
1886 gzip
1887 less
1888 ln
1889 more
1890 nm
1891 nroff
1892 pg
1893 test
1894 uname
1895 zip
1896 "
1897 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1898 pth="$pth /lib /usr/lib"
1899 for file in $loclist; do
1900         eval xxx=\$$file
1901         case "$xxx" in
1902         /*|?:[\\/]*)
1903                 if test -f "$xxx"; then
1904                         : ok
1905                 else
1906                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1907                         xxx=`./loc $file $file $pth`
1908                 fi
1909                 ;;
1910         '') xxx=`./loc $file $file $pth`;;
1911         *) xxx=`./loc $xxx $xxx $pth`;;
1912         esac
1913         eval $file=$xxx
1914         eval _$file=$xxx
1915         case "$xxx" in
1916         /*)
1917                 echo $file is in $xxx.
1918                 ;;
1919         ?:[\\/]*)
1920                 echo $file is in $xxx.
1921                 ;;
1922         *)
1923                 echo "I don't know where '$file' is, and my life depends on it." >&4
1924                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1925                 exit 1
1926                 ;;
1927         esac
1928 done
1929 echo " "
1930 echo "Don't worry if any of the following aren't found..."
1931 say=offhand
1932 for file in $trylist; do
1933         eval xxx=\$$file
1934         case "$xxx" in
1935         /*|?:[\\/]*)
1936                 if test -f "$xxx"; then
1937                         : ok
1938                 else
1939                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1940                         xxx=`./loc $file $file $pth`
1941                 fi
1942                 ;;
1943         '') xxx=`./loc $file $file $pth`;;
1944         *) xxx=`./loc $xxx $xxx $pth`;;
1945         esac
1946         eval $file=$xxx
1947         eval _$file=$xxx
1948         case "$xxx" in
1949         /*)
1950                 echo $file is in $xxx.
1951                 ;;
1952         ?:[\\/]*)
1953                 echo $file is in $xxx.
1954                 ;;
1955         *)
1956                 echo "I don't see $file out there, $say."
1957                 say=either
1958                 ;;
1959         esac
1960 done
1961 case "$egrep" in
1962 egrep)
1963         echo "Substituting grep for egrep."
1964         egrep=$grep
1965         ;;
1966 esac
1967 case "$ln" in
1968 ln)
1969         echo "Substituting cp for ln."
1970         ln=$cp
1971         ;;
1972 esac
1973 case "$test" in
1974 test)
1975         echo "Hopefully test is built into your sh."
1976         ;;
1977 *)
1978         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1979                 echo "Using the test built into your sh."
1980                 test=test
1981                 _test=test
1982         fi
1983         ;;
1984 esac
1985 case "$echo" in
1986 echo)
1987         echo "Hopefully echo is built into your sh."
1988         ;;
1989 '') ;;
1990 *)
1991         echo " "
1992 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1993         $echo $n "hi there$c" >foo1
1994         echo $n "hi there$c" >foo2
1995         if cmp foo1 foo2 >/dev/null 2>&1; then
1996                 echo "They are compatible.  In fact, they may be identical."
1997         else
1998                 case "$n" in
1999                 '-n') n='' c='\c';;
2000                 *) n='-n' c='';;
2001                 esac
2002                 cat <<FOO
2003 They are not compatible!  You are probably running ksh on a non-USG system.
2004 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2005 have echo built in and we may have to run some Bourne shell scripts.  That
2006 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2007
2008 FOO
2009                 $echo $n "The star should be here-->$c"
2010                 $echo "*"
2011         fi
2012         $rm -f foo1 foo2
2013         ;;
2014 esac
2015
2016 : determine whether symbolic links are supported
2017 echo " "
2018 $touch blurfl
2019 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2020         echo "Symbolic links are supported." >&4
2021         lns="$ln -s"
2022 else
2023         echo "Symbolic links are NOT supported." >&4
2024         lns="$ln"
2025 fi
2026 $rm -f blurfl sym
2027
2028 : see whether [:lower:] and [:upper:] are supported character classes
2029 echo " "
2030 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2031 ABYZ)
2032         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2033         up='[:upper:]'
2034         low='[:lower:]'
2035         ;;
2036 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2037         # (0xc9 and 0xd1), therefore that is a nice testing point.
2038         if test "X$up" = X -o "X$low" = X; then
2039             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2040             ij) up='[A-Z]'
2041                 low='[a-z]'
2042                 ;;
2043             esac
2044         fi
2045         if test "X$up" = X -o "X$low" = X; then
2046             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2047             ij) up='A-Z'
2048                 low='a-z'
2049                 ;;
2050             esac
2051         fi
2052         if test "X$up" = X -o "X$low" = X; then
2053             case "`echo IJ | od -x 2>/dev/null`" in
2054             *C9D1*|*c9d1*)
2055                 echo "Hey, this might be EBCDIC." >&4
2056                 if test "X$up" = X -o "X$low" = X; then
2057                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2058                     ij) up='[A-IJ-RS-Z]'
2059                         low='[a-ij-rs-z]'
2060                         ;;
2061                     esac
2062                 fi
2063                 if test "X$up" = X -o "X$low" = X; then
2064                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2065                     ij) up='A-IJ-RS-Z'
2066                         low='a-ij-rs-z'
2067                         ;;
2068                     esac
2069                 fi
2070                 ;;
2071             esac
2072         fi
2073 esac
2074 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2075 ij)
2076     echo "Using $up and $low to convert case." >&4
2077     ;;
2078 *)
2079     echo "I don't know how to translate letters from upper to lower case." >&4
2080     echo "Your tr is not acting any way I know of." >&4
2081     exit 1
2082     ;;
2083 esac
2084 : set up the translation script tr, must be called with ./tr of course
2085 cat >tr <<EOSC
2086 $startsh
2087 case "\$1\$2" in
2088 '[A-Z][a-z]') exec $tr '$up' '$low';;
2089 '[a-z][A-Z]') exec $tr '$low' '$up';;
2090 esac
2091 exec $tr "\$@"
2092 EOSC
2093 chmod +x tr
2094 $eunicefix tr
2095
2096 : Try to determine whether config.sh was made on this system
2097 case "$config_sh" in
2098 '')
2099 myuname=`$uname -a 2>/dev/null`
2100 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2101 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2102 # because the A-Z/a-z are not consecutive.
2103 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2104         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2105 newmyuname="$myuname"
2106 dflt=n
2107 case "$knowitall" in
2108 '')
2109         if test -f ../config.sh; then
2110                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2111                         eval "`grep myuname= ../config.sh`"
2112                 fi
2113                 if test "X$myuname" = "X$newmyuname"; then
2114                         dflt=y
2115                 fi
2116         fi
2117         ;;
2118 *) dflt=y;;
2119 esac
2120
2121 : Get old answers from old config file if Configure was run on the
2122 : same system, otherwise use the hints.
2123 hint=default
2124 cd ..
2125 if test -f config.sh; then
2126         echo " "
2127         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2128         . UU/myread
2129         case "$ans" in
2130         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2131         *)  echo "Fetching default answers from your old config.sh file..." >&4
2132                 tmp_n="$n"
2133                 tmp_c="$c"
2134                 tmp_sh="$sh"
2135                 . ./config.sh
2136                 cp config.sh UU
2137                 n="$tmp_n"
2138                 c="$tmp_c"
2139                 : Older versions did not always set $sh.  Catch re-use of such
2140                 : an old config.sh.
2141                 case "$sh" in
2142                 '') sh="$tmp_sh" ;;
2143                 esac
2144                 hint=previous
2145                 ;;
2146         esac
2147 fi
2148 if test ! -f config.sh; then
2149         $cat <<EOM
2150
2151 First time through, eh?  I have some defaults handy for some systems
2152 that need some extra help getting the Configure answers right:
2153
2154 EOM
2155         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2156         dflt=''
2157         : Half the following guesses are probably wrong... If you have better
2158         : tests or hints, please send them to perlbug@perl.com
2159         : The metaconfig authors would also appreciate a copy...
2160         $test -f /irix && osname=irix
2161         $test -f /xenix && osname=sco_xenix
2162         $test -f /dynix && osname=dynix
2163         $test -f /dnix && osname=dnix
2164         $test -f /lynx.os && osname=lynxos
2165         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2166         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2167         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2168         $test -f /bin/mips && /bin/mips && osname=mips
2169         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2170                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2171         $test -d /usr/apollo/bin && osname=apollo
2172         $test -f /etc/saf/_sactab && osname=svr4
2173         $test -d /usr/include/minix && osname=minix
2174         if $test -d /MachTen -o -d /MachTen_Folder; then
2175                 osname=machten
2176                 if $test -x /sbin/version; then
2177                         osvers=`/sbin/version | $awk '{print $2}' |
2178                         $sed -e 's/[A-Za-z]$//'`
2179                 elif $test -x /usr/etc/version; then
2180                         osvers=`/usr/etc/version | $awk '{print $2}' |
2181                         $sed -e 's/[A-Za-z]$//'`
2182                 else
2183                         osvers="$2.$3"
2184                 fi
2185         fi
2186
2187         $test -f /sys/posix.dll &&
2188                 $test -f /usr/bin/what &&
2189                 set X `/usr/bin/what /sys/posix.dll` &&
2190                 $test "$3" = UWIN &&
2191                 osname=uwin &&
2192                 osvers="$5"
2193
2194         if $test -f $uname; then
2195                 set X $myuname
2196                 shift
2197
2198                 case "$5" in
2199                 fps*) osname=fps ;;
2200                 mips*)
2201                         case "$4" in
2202                         umips) osname=umips ;;
2203                         *) osname=mips ;;
2204                         esac;;
2205                 [23]100) osname=mips ;;
2206                 next*) osname=next ;;
2207                 i386*)
2208                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2209                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2210                                 osname='sco'
2211                                 osvers=$tmp
2212                         elif $test -f /etc/kconfig; then
2213                                 osname=isc
2214                                 if test "$lns" = "$ln -s"; then
2215                                         osvers=4
2216                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2217                                         osvers=3
2218                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2219                                         osvers=2
2220                                 fi
2221                         fi
2222                         tmp=''
2223                         ;;
2224                 pc*)
2225                         if test -n "$DJGPP"; then
2226                                 osname=dos
2227                                 osvers=djgpp
2228                         fi
2229                         ;;
2230                 esac
2231
2232                 case "$1" in
2233                 aix) osname=aix
2234                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2235                         case "$tmp" in
2236                         'not found') osvers="$4"."$3" ;;
2237                         '<3240'|'<>3240') osvers=3.2.0 ;;
2238                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2239                         '=3250'|'>3250') osvers=3.2.5 ;;
2240                         *) osvers=$tmp;;
2241                         esac
2242                         ;;
2243                 bsd386) osname=bsd386
2244                         osvers=`$uname -r`
2245                         ;;
2246                 cygwin*) osname=cygwin
2247                         osvers="$3"
2248                         ;;
2249                 *dc.osx) osname=dcosx
2250                         osvers="$3"
2251                         ;;
2252                 dnix) osname=dnix
2253                         osvers="$3"
2254                         ;;
2255                 domainos) osname=apollo
2256                         osvers="$3"
2257                         ;;
2258                 dgux) osname=dgux 
2259                         osvers="$3"
2260                         ;;
2261                 dynixptx*) osname=dynixptx
2262                         osvers=`echo "$4"|sed 's/^v//'`
2263                         ;;
2264                 freebsd) osname=freebsd 
2265                         osvers="$3" ;;
2266                 genix) osname=genix ;;
2267                 hp*) osname=hpux 
2268                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2269                         ;;
2270                 irix*) osname=irix
2271                         case "$3" in
2272                         4*) osvers=4 ;;
2273                         5*) osvers=5 ;;
2274                         *)      osvers="$3" ;;
2275                         esac
2276                         ;;
2277                 linux) osname=linux
2278                         case "$3" in
2279                         *)      osvers="$3" ;;
2280                         esac
2281                         ;;
2282                 MiNT) osname=mint
2283                         ;;
2284                 netbsd*) osname=netbsd
2285                         osvers="$3"
2286                         ;;
2287                 news-os) osvers="$3"
2288                         case "$3" in
2289                         4*) osname=newsos4 ;;
2290                         *) osname=newsos ;;
2291                         esac
2292                         ;;
2293                 next*) osname=next ;;
2294                 POSIX-BC | posix-bc ) osname=posix-bc
2295                         osvers="$3"
2296                         ;;
2297                 powerux | power_ux | powermax_os | powermaxos | \
2298                 powerunix | power_unix) osname=powerux
2299                         osvers="$3"
2300                         ;;
2301                 qnx) osname=qnx
2302                         osvers="$4"
2303                         ;;
2304                 solaris) osname=solaris
2305                         case "$3" in
2306                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2307                         *)      osvers="$3" ;;
2308                         esac
2309                         ;;
2310                 sunos) osname=sunos
2311                         case "$3" in
2312                         5*) osname=solaris
2313                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2314                         *)      osvers="$3" ;;
2315                         esac
2316                         ;;
2317                 titanos) osname=titanos
2318                         case "$3" in
2319                         1*) osvers=1 ;;
2320                         2*) osvers=2 ;;
2321                         3*) osvers=3 ;;
2322                         4*) osvers=4 ;;
2323                         *)      osvers="$3" ;;
2324                         esac
2325                         ;;
2326                 ultrix) osname=ultrix
2327                         osvers="$3"
2328                         ;;
2329                 osf1|mls+)      case "$5" in
2330                                 alpha)
2331                                         osname=dec_osf
2332                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2333                                         ;;
2334                         hp*)    osname=hp_osf1  ;;
2335                         mips)   osname=mips_osf1 ;;
2336                         esac
2337                         ;;
2338                 unixware) osname=svr5
2339                         osvers="$4"
2340                         ;;
2341                 uts) osname=uts
2342                         osvers="$3"
2343                         ;;
2344                 $2) case "$osname" in
2345                         *isc*) ;;
2346                         *freebsd*) ;;
2347                         svr*)
2348                                 : svr4.x or possibly later
2349                                 case "svr$3" in 
2350                                 ${osname}*)
2351                                         osname=svr$3
2352                                         osvers=$4
2353                                         ;;
2354                                 esac
2355                                 case "$osname" in
2356                                 svr4.0)
2357                                         : Check for ESIX
2358                                         if test -f /stand/boot ; then
2359                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2360                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2361                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2362                                                         if test -n "$isesix"; then
2363                                                                 osname=esix4
2364                                                         fi
2365                                                 fi
2366                                         fi
2367                                         ;;
2368                                 esac
2369                                 ;;
2370                         *)      if test -f /etc/systemid; then
2371                                         osname=sco
2372                                         set `echo $3 | $sed 's/\./ /g'` $4
2373                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2374                                                 osvers=$1.$2.$3
2375                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2376                                                 osvers=$1.$2
2377                                         elif $test -f $src/hints/sco_$1.sh; then
2378                                                 osvers=$1
2379                                         fi
2380                                 else
2381                                         case "$osname" in
2382                                         '') : Still unknown.  Probably a generic Sys V.
2383                                                 osname="sysv"
2384                                                 osvers="$3"
2385                                                 ;;
2386                                         esac
2387                                 fi
2388                                 ;;
2389                         esac
2390                         ;;
2391                 *)      case "$osname" in
2392                         '') : Still unknown.  Probably a generic BSD.
2393                                 osname="$1"
2394                                 osvers="$3"
2395                                 ;;
2396                         esac
2397                         ;;
2398                 esac
2399         else
2400                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2401                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2402                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2403                                 osname=news_os
2404                         fi
2405                         $rm -f UU/kernel.what
2406                 elif test -d c:/.; then
2407                         set X $myuname
2408                         osname=os2
2409                         osvers="$5"
2410                 fi
2411         fi
2412         
2413         : Now look for a hint file osname_osvers, unless one has been
2414         : specified already.
2415         case "$hintfile" in
2416         ''|' ')
2417                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2418                 : Also try without trailing minor version numbers.
2419                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2420                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2421                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2422                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2423                 case "$file" in
2424                 '') dflt=none ;;
2425                 *)  case "$osvers" in
2426                         '') dflt=$file
2427                                 ;;
2428                         *)  if $test -f $src/hints/$file.sh ; then
2429                                         dflt=$file
2430                                 elif $test -f $src/hints/$xfile.sh ; then
2431                                         dflt=$xfile
2432                                 elif $test -f $src/hints/$xxfile.sh ; then
2433                                         dflt=$xxfile
2434                                 elif $test -f $src/hints/$xxxfile.sh ; then
2435                                         dflt=$xxxfile
2436                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2437                                         dflt=$xxxxfile
2438                                 elif $test -f "$src/hints/${osname}.sh" ; then
2439                                         dflt="${osname}"
2440                                 else
2441                                         dflt=none
2442                                 fi
2443                                 ;;
2444                         esac
2445                         ;;
2446                 esac
2447                 if $test -f Policy.sh ; then
2448                         case "$dflt" in
2449                         *Policy*) ;;
2450                         none) dflt="Policy" ;;
2451                         *) dflt="Policy $dflt" ;;
2452                         esac
2453                 fi
2454                 ;;
2455         *)
2456                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2457                 ;;
2458         esac
2459
2460         if $test -f Policy.sh ; then
2461                 $cat <<EOM
2462
2463 There's also a Policy hint file available, which should make the
2464 site-specific (policy) questions easier to answer.
2465 EOM
2466
2467         fi
2468
2469         $cat <<EOM
2470
2471 You may give one or more space-separated answers, or "none" if appropriate.
2472 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2473 is a good thing.  DO NOT give a wrong version or a wrong OS.
2474
2475 EOM
2476
2477         rp="Which of these apply, if any?"
2478         . UU/myread
2479         tans=$ans
2480         for file in $tans; do
2481                 if $test X$file = XPolicy -a -f Policy.sh; then
2482                         . Policy.sh
2483                         $cat Policy.sh >> UU/config.sh
2484                 elif $test -f $src/hints/$file.sh; then
2485                         . $src/hints/$file.sh
2486                         $cat $src/hints/$file.sh >> UU/config.sh
2487                 elif $test X$tans = X -o X$tans = Xnone ; then
2488                         : nothing
2489                 else
2490                         : Give one chance to correct a possible typo.
2491                         echo "$file.sh does not exist"
2492                         dflt=$file
2493                         rp="hint to use instead?"
2494                         . UU/myread
2495                         for file in $ans; do
2496                                 if $test -f "$src/hints/$file.sh"; then
2497                                         . $src/hints/$file.sh
2498                                         $cat $src/hints/$file.sh >> UU/config.sh
2499                                 elif $test X$ans = X -o X$ans = Xnone ; then
2500                                         : nothing
2501                                 else
2502                                         echo "$file.sh does not exist -- ignored."
2503                                 fi
2504                         done
2505                 fi
2506         done
2507
2508         hint=recommended
2509         : Remember our hint file for later.
2510         if $test -f "$src/hints/$file.sh" ; then
2511                 hintfile="$file"
2512         else
2513                 hintfile=''
2514         fi
2515 fi
2516 cd UU
2517 ;;
2518 *)
2519         echo " "
2520         echo "Fetching default answers from $config_sh..." >&4
2521         tmp_n="$n"
2522         tmp_c="$c"
2523         cd ..
2524         cp $config_sh config.sh 2>/dev/null
2525         chmod +w config.sh
2526         . ./config.sh
2527         cd UU
2528         cp ../config.sh .
2529         n="$tmp_n"
2530         c="$tmp_c"
2531         hint=previous
2532         ;;
2533 esac
2534 test "$override" && . ./optdef.sh
2535 myuname="$newmyuname"
2536
2537 : Restore computed paths
2538 for file in $loclist $trylist; do
2539         eval $file="\$_$file"
2540 done
2541
2542 cat << EOM
2543
2544 Configure uses the operating system name and version to set some defaults.
2545 The default value is probably right if the name rings a bell. Otherwise,
2546 since spelling matters for me, either accept the default or answer "none"
2547 to leave it blank.
2548
2549 EOM
2550 case "$osname" in
2551         ''|' ')
2552                 case "$hintfile" in
2553                 ''|' '|none) dflt=none ;;
2554                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2555                 esac
2556                 ;;
2557         *) dflt="$osname" ;;
2558 esac
2559 rp="Operating system name?"
2560 . ./myread
2561 case "$ans" in
2562 none)  osname='' ;;
2563 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2564 esac
2565 echo " "
2566 case "$osvers" in
2567         ''|' ')
2568                 case "$hintfile" in
2569                 ''|' '|none) dflt=none ;;
2570                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2571                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2572                         case "$dflt" in
2573                         ''|' ') dflt=none ;;
2574                         esac
2575                         ;;
2576                 esac
2577                 ;;
2578         *) dflt="$osvers" ;;
2579 esac
2580 rp="Operating system version?"
2581 . ./myread
2582 case "$ans" in
2583 none)  osvers='' ;;
2584 *) osvers="$ans" ;;
2585 esac
2586
2587
2588 . ./posthint.sh
2589
2590 : who configured the system
2591 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2592 cf_by=`(logname) 2>/dev/null`
2593 case "$cf_by" in
2594 "")
2595         cf_by=`(whoami) 2>/dev/null`
2596         case "$cf_by" in
2597         "") cf_by=unknown ;;
2598         esac ;;
2599 esac
2600
2601 : set up the script used to warn in case of inconsistency
2602 cat <<EOS >whoa
2603 $startsh
2604 EOS
2605 cat <<'EOSC' >>whoa
2606 dflt=y
2607 echo " "
2608 echo "*** WHOA THERE!!! ***" >&4
2609 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2610 rp="    Keep the $hint value?"
2611 . ./myread
2612 case "$ans" in
2613 y) td=$was; tu=$was;;
2614 esac
2615 EOSC
2616
2617 : function used to set $1 to $val
2618 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2619 case "$val$was" in
2620 $define$undef) . ./whoa; eval "$var=\$td";;
2621 $undef$define) . ./whoa; eval "$var=\$tu";;
2622 *) eval "$var=$val";;
2623 esac'
2624
2625 case "$usethreads" in
2626 $define|true|[yY]*)     dflt='y';;
2627 *) dflt='n';;
2628 esac
2629 cat <<EOM
2630
2631 Perl can be built to take advantage of threads on some systems.
2632 To do so, Configure can be run with -Dusethreads.
2633
2634 Note that threading is a highly experimental feature, and
2635 some known race conditions still remain.  If you choose to try
2636 it, be very sure to not actually deploy it for production
2637 purposes.  README.threads has more details, and is required
2638 reading if you enable threads.
2639
2640 If this doesn't make any sense to you, just accept the default '$dflt'.
2641 EOM
2642 rp='Build a threading Perl?'
2643 . ./myread
2644 case "$ans" in
2645 y|Y)    val="$define" ;;
2646 *)      val="$undef" ;;
2647 esac
2648 set usethreads
2649 eval $setvar
2650
2651 case "$usethreads" in
2652 $define)
2653         $cat <<EOM
2654
2655 As of 5.5.640, Perl has two different internal threading implementations,
2656 the 5.005 version (5005threads) and an interpreter-based version
2657 (ithreads) that has one interpreter per thread.  Both are very 
2658 experimental.  This arrangement exists to help developers work out
2659 which one is better.
2660
2661 If you're a casual user, you probably don't want interpreter-threads
2662 at this time.  There doesn't yet exist a way to create threads from
2663 within Perl in this model, i.e., "use Thread;" will NOT work.
2664 EOM
2665         : Default to ithreads unless overridden on command line or with
2666         : old config.sh
2667         dflt='y'
2668         case "$use5005threads" in
2669                 $define|true|[yY]*) dflt='n';;
2670         esac
2671         case "$useithreads" in
2672                 $undef|false|[nN]*) dflt='n';;
2673         esac
2674         rp='Use interpreter-based ithreads?'
2675         . ./myread
2676         case "$ans" in
2677         y|Y)    val="$define" ;;
2678         *)      val="$undef" ;;
2679         esac
2680         set useithreads
2681         eval $setvar
2682         : Now set use5005threads to the opposite value.
2683         case "$useithreads" in
2684         $define) val="$undef" ;;
2685         *) val="$define" ;;
2686         esac
2687         set use5005threads
2688         eval $setvar
2689         ;;
2690 *)
2691         useithreads="$undef"
2692         use5005threads="$undef"
2693         ;;
2694 esac
2695
2696 case "$d_oldpthreads" in
2697 '')     : Configure tests would be welcome here.  For now, assume undef.
2698         val="$undef" ;;
2699 *)      val="$d_oldpthreads" ;;
2700 esac
2701 set d_oldpthreads
2702 eval $setvar
2703
2704
2705 case "$usethreads" in
2706 "$define"|true|[yY]*)
2707 : Look for a hint-file generated 'call-back-unit'.  If the
2708 : user has specified that a threading perl is to be built,
2709 : we may need to set or change some other defaults.
2710         if $test -f usethreads.cbu; then
2711                 echo "Your platform has some specific hints for threaded builds, using them..."
2712                 . ./usethreads.cbu
2713         else
2714                 $cat <<EOM
2715 (Your platform doesn't have any specific hints for threaded builds.
2716  Assuming POSIX threads, then.)
2717 EOM
2718         fi
2719         ;;
2720 esac
2721
2722 cat <<EOM
2723
2724 Perl can be built so that multiple Perl interpreters can coexist
2725 within the same Perl executable.
2726 EOM
2727
2728 case "$useithreads" in
2729 $define)
2730         cat <<EOM
2731 This multiple interpreter support is required for interpreter-based threads.
2732 EOM
2733         val="$define"
2734         ;;
2735 *)      case "$usemultiplicity" in
2736         $define|true|[yY]*)     dflt='y';;
2737         *) dflt='n';;
2738         esac
2739         echo " "
2740         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2741         rp='Build Perl for multiplicity?'
2742         . ./myread
2743         case "$ans" in
2744         y|Y)    val="$define" ;;
2745         *)      val="$undef" ;;
2746         esac
2747         ;;
2748 esac
2749 set usemultiplicity
2750 eval $setvar
2751
2752 : determine where manual pages are on this system
2753 echo " "
2754 case "$sysman" in
2755 '') 
2756         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2757         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2758         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2759         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2760         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2761         sysman=`./loc . /usr/man/man1 $syspath`
2762         ;;
2763 esac
2764 if $test -d "$sysman"; then
2765         echo "System manual is in $sysman." >&4
2766 else
2767         echo "Could not find manual pages in source form." >&4
2768 fi
2769
2770 : see what memory models we can support
2771 case "$models" in
2772 '')
2773         $cat >pdp11.c <<'EOP'
2774 int main() {
2775 #ifdef pdp11
2776         exit(0);
2777 #else
2778         exit(1);
2779 #endif
2780 }
2781 EOP
2782         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2783         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2784                 dflt='unsplit split'
2785         else
2786                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2787                 case "$tans" in
2788                 X) dflt='none';;
2789                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2790                                 dflt='small'
2791                         else
2792                                 dflt=''
2793                         fi
2794                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2795                                 dflt="$dflt medium"
2796                         fi
2797                         if $test -d /lib/large || $test -d /usr/lib/large; then
2798                                 dflt="$dflt large"
2799                         fi
2800                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2801                                 dflt="$dflt huge"
2802                         fi
2803                 esac
2804         fi;;
2805 *) dflt="$models";;
2806 esac
2807 $cat <<EOM
2808  
2809 Some systems have different model sizes.  On most systems they are called
2810 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2811 split.  If your system doesn't support different memory models, say "none".
2812 If you wish to force everything to one memory model, say "none" here and
2813 put the appropriate flags later when it asks you for other cc and ld flags.
2814 Venix systems may wish to put "none" and let the compiler figure things out.
2815 (In the following question multiple model names should be space separated.)
2816
2817 The default for most systems is "none".
2818
2819 EOM
2820 rp="Which memory models are supported?"
2821 . ./myread
2822 models="$ans"
2823
2824 case "$models" in
2825 none)
2826         small=''
2827         medium=''
2828         large=''
2829         huge=''
2830         unsplit=''
2831         split=''
2832         ;;
2833 *split)
2834         case "$split" in
2835         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2836                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2837                         dflt='-i'
2838                 else
2839                         dflt='none'
2840                 fi;;
2841         *) dflt="$split";;
2842         esac
2843         rp="What flag indicates separate I and D space?"
2844         . ./myread
2845         tans="$ans"
2846         case "$tans" in
2847         none) tans='';;
2848         esac
2849         split="$tans"
2850         unsplit='';;
2851 *large*|*small*|*medium*|*huge*)
2852         case "$models" in
2853         *large*)
2854                 case "$large" in
2855                 '') dflt='-Ml';;
2856                 *) dflt="$large";;
2857                 esac
2858         rp="What flag indicates large model?"
2859         . ./myread
2860         tans="$ans"
2861         case "$tans" in
2862         none) tans='';
2863         esac
2864         large="$tans";;
2865         *) large='';;
2866         esac
2867         case "$models" in
2868         *huge*) case "$huge" in
2869                 '') dflt='-Mh';;
2870                 *) dflt="$huge";;
2871                 esac
2872                 rp="What flag indicates huge model?"
2873                 . ./myread
2874                 tans="$ans"
2875                 case "$tans" in
2876                 none) tans='';
2877                 esac
2878                 huge="$tans";;
2879         *) huge="$large";;
2880         esac
2881         case "$models" in
2882         *medium*) case "$medium" in
2883                 '') dflt='-Mm';;
2884                 *) dflt="$medium";;
2885                 esac
2886                 rp="What flag indicates medium model?"
2887                 . ./myread
2888                 tans="$ans"
2889                 case "$tans" in
2890                 none) tans='';
2891                 esac
2892                 medium="$tans";;
2893         *) medium="$large";;
2894         esac
2895         case "$models" in
2896         *small*) case "$small" in
2897                 '') dflt='none';;
2898                 *) dflt="$small";;
2899                 esac
2900                 rp="What flag indicates small model?"
2901                 . ./myread
2902                 tans="$ans"
2903                 case "$tans" in
2904                 none) tans='';
2905                 esac
2906                 small="$tans";;
2907         *) small='';;
2908         esac
2909         ;;
2910 *)
2911         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2912         ;;
2913 esac
2914 $rm -f pdp11.* pdp11
2915
2916 : make some quick guesses about what we are up against
2917 echo " "
2918 $echo $n "Hmm...  $c"
2919 echo exit 1 >bsd
2920 echo exit 1 >usg
2921 echo exit 1 >v7
2922 echo exit 1 >osf1
2923 echo exit 1 >eunice
2924 echo exit 1 >xenix
2925 echo exit 1 >venix
2926 echo exit 1 >os2
2927 d_bsd="$undef"
2928 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2929 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2930 then
2931         echo "Looks kind of like an OSF/1 system, but we'll see..."
2932         echo exit 0 >osf1
2933 elif test `echo abc | tr a-z A-Z` = Abc ; then
2934         xxx=`./loc addbib blurfl $pth`
2935         if $test -f $xxx; then
2936         echo "Looks kind of like a USG system with BSD features, but we'll see..."
2937                 echo exit 0 >bsd
2938                 echo exit 0 >usg
2939         else
2940                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2941                         echo "Looks kind of like an extended USG system, but we'll see..."
2942                 else
2943                         echo "Looks kind of like a USG system, but we'll see..."
2944                 fi
2945                 echo exit 0 >usg
2946         fi
2947 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2948         echo "Looks kind of like a BSD system, but we'll see..."
2949         d_bsd="$define"
2950         echo exit 0 >bsd
2951 else
2952         echo "Looks kind of like a Version 7 system, but we'll see..."
2953         echo exit 0 >v7
2954 fi
2955 case "$eunicefix" in
2956 *unixtovms*)
2957         $cat <<'EOI'
2958 There is, however, a strange, musty smell in the air that reminds me of
2959 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2960 EOI
2961         echo exit 0 >eunice
2962         d_eunice="$define"
2963 : it so happens the Eunice I know will not run shell scripts in Unix format
2964         ;;
2965 *)
2966         echo " "
2967         echo "Congratulations.  You aren't running Eunice."
2968         d_eunice="$undef"
2969         ;;
2970 esac
2971 : Detect OS2.  The p_ variable is set above in the Head.U unit.
2972 case "$p_" in
2973 :) ;;
2974 *)
2975         $cat <<'EOI'
2976 I have the feeling something is not exactly right, however...don't tell me...
2977 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2978 EOI
2979         echo exit 0 >os2
2980         ;;
2981 esac
2982 if test -f /xenix; then
2983         echo "Actually, this looks more like a XENIX system..."
2984         echo exit 0 >xenix
2985         d_xenix="$define"
2986 else
2987         echo " "
2988         echo "It's not Xenix..."
2989         d_xenix="$undef"
2990 fi
2991 chmod +x xenix
2992 $eunicefix xenix
2993 if test -f /venix; then
2994         echo "Actually, this looks more like a VENIX system..."
2995         echo exit 0 >venix
2996 else
2997         echo " "
2998         if ./xenix; then
2999                 : null
3000         else
3001                 echo "Nor is it Venix..."
3002         fi
3003 fi
3004 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3005 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3006 $rm -f foo
3007
3008 : see if we need a special compiler
3009 echo " "
3010 if ./usg; then
3011         case "$cc" in
3012         '') case "$Mcc" in
3013                 /*) dflt='Mcc';;
3014                 *) case "$large" in
3015                         -M*) dflt='cc';;
3016                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3017                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3018                                                 dflt='cc'
3019                                         else
3020                                                 dflt='cc -M'
3021                                         fi
3022                                 else
3023                                         dflt='cc'
3024                                 fi;;
3025                         esac;;
3026                 esac;;
3027         *)  dflt="$cc";;
3028         esac
3029         case "$dflt" in
3030         *M*)    $cat <<'EOM'
3031 On some older systems the default C compiler will not resolve multiple global
3032 references that happen to have the same name.  On some such systems the "Mcc"
3033 command may be used to force these to be resolved.  On other systems a "cc -M"
3034 command is required.  (Note that the -M flag on other systems indicates a
3035 memory model to use!) If you have the Gnu C compiler, you might wish to use
3036 that instead.
3037
3038 EOM
3039         ;;
3040         esac
3041         rp="Use which C compiler?"
3042         . ./myread
3043         cc="$ans"
3044 else
3045         case "$cc" in
3046         '') dflt=cc;;
3047         *) dflt="$cc";;
3048         esac
3049         rp="Use which C compiler?"
3050         . ./myread
3051         cc="$ans"
3052 fi
3053 : Look for a hint-file generated 'call-back-unit'.  Now that the
3054 : user has specified the compiler, we may need to set or change some
3055 : other defaults.
3056 if $test -f cc.cbu; then
3057     . ./cc.cbu
3058 fi
3059 echo " "
3060 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3061 $cat >gccvers.c <<EOM
3062 #include <stdio.h>
3063 int main() {
3064 #ifdef __GNUC__
3065 #ifdef __VERSION__
3066         printf("%s\n", __VERSION__);
3067 #else
3068         printf("%s\n", "1");
3069 #endif
3070 #endif
3071         exit(0);
3072 }
3073 EOM
3074 if $cc $ldflags -o gccvers gccvers.c; then
3075         gccversion=`./gccvers`
3076         case "$gccversion" in
3077         '') echo "You are not using GNU cc." ;;
3078         *)  echo "You are using GNU cc $gccversion."
3079             ;;
3080         esac
3081 else
3082         echo " "
3083         echo "*** WHOA THERE!!! ***" >&4
3084         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3085         case "$knowitall" in
3086         '')
3087         echo "    You'd better start hunting for one and let me know about it." >&4
3088                 exit 1
3089                 ;;
3090         esac
3091 fi
3092 $rm -f gccvers*
3093 case "$gccversion" in
3094 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3095 esac
3096
3097 : decide how portable to be.  Allow command line overrides.
3098 case "$d_portable" in
3099 "$undef") ;;
3100 *)      d_portable="$define" ;;
3101 esac
3102
3103 : set up shell script to do ~ expansion
3104 cat >filexp <<EOSS
3105 $startsh
3106 : expand filename
3107 case "\$1" in
3108  ~/*|~)
3109         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3110         ;;
3111  ~*)
3112         if $test -f /bin/csh; then
3113                 /bin/csh -f -c "glob \$1"
3114                 failed=\$?
3115                 echo ""
3116                 exit \$failed
3117         else
3118                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3119                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3120                 if $test ! -d "\$dir"; then
3121                         me=\`basename \$0\`
3122                         echo "\$me: can't locate home directory for: \$name" >&2
3123                         exit 1
3124                 fi
3125                 case "\$1" in
3126                 */*)
3127                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3128                         ;;
3129                 *)
3130                         echo \$dir
3131                         ;;
3132                 esac
3133         fi
3134         ;;
3135 *)
3136         echo \$1
3137         ;;
3138 esac
3139 EOSS
3140 chmod +x filexp
3141 $eunicefix filexp
3142
3143 : now set up to get a file name
3144 cat <<EOS >getfile
3145 $startsh
3146 EOS
3147 cat <<'EOSC' >>getfile
3148 tilde=''
3149 fullpath=''
3150 already=''
3151 skip=''
3152 none_ok=''
3153 exp_file=''
3154 nopath_ok=''
3155 orig_rp="$rp"
3156 orig_dflt="$dflt"
3157 case "$gfpth" in
3158 '') gfpth='.' ;;
3159 esac
3160
3161 case "$fn" in
3162 *\(*)
3163         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3164         fn=`echo $fn | sed 's/(.*)//'`
3165         ;;
3166 esac
3167
3168 case "$fn" in
3169 *:*)
3170         loc_file=`expr $fn : '.*:\(.*\)'`
3171         fn=`expr $fn : '\(.*\):.*'`
3172         ;;
3173 esac
3174
3175 case "$fn" in
3176 *~*) tilde=true;;
3177 esac
3178 case "$fn" in
3179 */*) fullpath=true;;
3180 esac
3181 case "$fn" in
3182 *+*) skip=true;;
3183 esac
3184 case "$fn" in
3185 *n*) none_ok=true;;
3186 esac
3187 case "$fn" in
3188 *e*) exp_file=true;;
3189 esac
3190 case "$fn" in
3191 *p*) nopath_ok=true;;
3192 esac
3193
3194 case "$fn" in
3195 *f*) type='File';;
3196 *d*) type='Directory';;
3197 *l*) type='Locate';;
3198 esac
3199
3200 what="$type"
3201 case "$what" in
3202 Locate) what='File';;
3203 esac
3204
3205 case "$exp_file" in
3206 '')
3207         case "$d_portable" in
3208         "$define") ;;
3209         *) exp_file=true;;
3210         esac
3211         ;;
3212 esac
3213
3214 cd ..
3215 while test "$type"; do
3216         redo=''
3217         rp="$orig_rp"
3218         dflt="$orig_dflt"
3219         case "$tilde" in
3220         true) rp="$rp (~name ok)";;
3221         esac
3222         . UU/myread
3223         if test -f UU/getfile.ok && \
3224                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3225         then
3226                 value="$ans"
3227                 ansexp="$ans"
3228                 break
3229         fi
3230         case "$ans" in
3231         none)
3232                 value=''
3233                 ansexp=''
3234                 case "$none_ok" in
3235                 true) type='';;
3236                 esac
3237                 ;;
3238         *)
3239                 case "$tilde" in
3240                 '') value="$ans"
3241                         ansexp="$ans";;
3242                 *)
3243                         value=`UU/filexp $ans`
3244                         case $? in
3245                         0)
3246                                 if test "$ans" != "$value"; then
3247                                         echo "(That expands to $value on this system.)"
3248                                 fi
3249                                 ;;
3250                         *) value="$ans";;
3251                         esac
3252                         ansexp="$value"
3253                         case "$exp_file" in
3254                         '') value="$ans";;
3255                         esac
3256                         ;;
3257                 esac
3258                 case "$fullpath" in
3259                 true)
3260                         case "$ansexp" in
3261                         /*) value="$ansexp" ;;
3262                         *)
3263                                 redo=true
3264                                 case "$already" in
3265                                 true)
3266                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3267                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3268                                         ;;
3269                                 *)
3270                                 echo "Please give a full path name, starting with slash." >&4
3271                                         case "$tilde" in
3272                                         true)
3273                                 echo "Note that using ~name is ok provided it expands well." >&4
3274                                                 already=true
3275                                                 ;;
3276                                         esac
3277                                 esac
3278                                 ;;
3279                         esac
3280                         ;;
3281                 esac
3282                 case "$redo" in
3283                 '')
3284                         case "$type" in
3285                         File)
3286                                 for fp in $gfpth; do
3287                                         if test "X$fp" = X.; then
3288                                             pf="$ansexp"
3289                                         else    
3290                                             pf="$fp/$ansexp"
3291                                         fi
3292                                         if test -f "$pf"; then
3293                                                 type=''
3294                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3295                                         then
3296                                                 echo "($value is not a plain file, but that's ok.)"
3297                                                 type=''
3298                                         fi
3299                                         if test X"$type" = X; then
3300                                             value="$pf"
3301                                             break
3302                                         fi
3303                                 done
3304                                 ;;
3305                         Directory)
3306                                 for fp in $gfpth; do
3307                                         if test "X$fp" = X.; then
3308                                             pf="$ansexp"
3309                                         else    
3310                                             pf="$fp/$ansexp"
3311                                         fi
3312                                         if test -d "$pf"; then
3313                                                 type=''
3314                                                 value="$pf"
3315                                                 break
3316                                         fi
3317                                 done
3318                                 ;;
3319                         Locate)
3320                                 if test -d "$ansexp"; then
3321                                         echo "(Looking for $loc_file in directory $value.)"
3322                                         value="$value/$loc_file"
3323                                         ansexp="$ansexp/$loc_file"
3324                                 fi
3325                                 if test -f "$ansexp"; then
3326                                         type=''
3327                                 fi
3328                                 case "$nopath_ok" in
3329                                 true)   case "$value" in
3330                                         */*) ;;
3331                                         *)      echo "Assuming $value will be in people's path."
3332                                                 type=''
3333                                                 ;;
3334                                         esac
3335                                         ;;
3336                                 esac
3337                                 ;;
3338                         esac
3339
3340                         case "$skip" in
3341                         true) type='';
3342                         esac
3343
3344                         case "$type" in
3345                         '') ;;
3346                         *)
3347                                 if test "$fastread" = yes; then
3348                                         dflt=y
3349                                 else
3350                                         dflt=n
3351                                 fi
3352                                 rp="$what $value doesn't exist.  Use that name anyway?"
3353                                 . UU/myread
3354                                 dflt=''
3355                                 case "$ans" in
3356                                 y*) type='';;
3357                                 *) echo " ";;
3358                                 esac
3359                                 ;;
3360                         esac
3361                         ;;
3362                 esac
3363                 ;;
3364         esac
3365 done
3366 cd UU
3367 ans="$value"
3368 rp="$orig_rp"
3369 dflt="$orig_dflt"
3370 rm -f getfile.ok
3371 test "X$gfpthkeep" != Xy && gfpth=""
3372 EOSC
3373
3374 : What should the include directory be ?
3375 echo " "
3376 $echo $n "Hmm...  $c"
3377 dflt='/usr/include'
3378 incpath=''
3379 mips_type=''
3380 if $test -f /bin/mips && /bin/mips; then
3381         echo "Looks like a MIPS system..."
3382         $cat >usr.c <<'EOCP'
3383 #ifdef SYSTYPE_BSD43
3384 /bsd43
3385 #endif
3386 EOCP
3387         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3388                 dflt='/bsd43/usr/include'
3389                 incpath='/bsd43'
3390                 mips_type='BSD 4.3'
3391         else
3392                 mips_type='System V'
3393         fi
3394         $rm -f usr.c usr.out
3395         echo "and you're compiling with the $mips_type compiler and libraries."
3396         xxx_prompt=y
3397         echo "exit 0" >mips
3398 else
3399         echo "Doesn't look like a MIPS system."
3400         xxx_prompt=n
3401         echo "exit 1" >mips
3402 fi
3403 chmod +x mips
3404 $eunicefix mips
3405 case "$usrinc" in
3406 '') ;;
3407 *) dflt="$usrinc";;
3408 esac
3409 case "$xxx_prompt" in
3410 y)      fn=d/
3411         echo " "
3412         rp='Where are the include files you want to use?'
3413         . ./getfile
3414         usrinc="$ans"
3415         ;;
3416 *)      usrinc="$dflt"
3417         ;;
3418 esac
3419
3420 : see how we invoke the C preprocessor
3421 echo " "
3422 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3423 cat <<'EOT' >testcpp.c
3424 #define ABC abc
3425 #define XYZ xyz
3426 ABC.XYZ
3427 EOT
3428 cd ..
3429 if test ! -f cppstdin; then
3430         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3431                 # AIX cc -E doesn't show the absolute headerfile
3432                 # locations but we'll cheat by using the -M flag.
3433                 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
3434         else
3435                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3436         fi
3437 else
3438         echo "Keeping your $hint cppstdin wrapper."
3439 fi
3440 chmod 755 cppstdin
3441 wrapper=`pwd`/cppstdin
3442 ok='false'
3443 cd UU
3444
3445 if $test "X$cppstdin" != "X" && \
3446         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3447         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3448 then
3449         echo "You used to use $cppstdin $cppminus so we'll use that again."
3450         case "$cpprun" in
3451         '') echo "But let's see if we can live without a wrapper..." ;;
3452         *)
3453                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3454                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3455                 then
3456                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3457                         ok='true'
3458                 else
3459                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3460                 fi
3461                 ;;
3462         esac
3463 else
3464         case "$cppstdin" in
3465         '') ;;
3466         *)
3467                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3468                 ;;
3469         esac
3470 fi
3471
3472 if $ok; then
3473         : nothing
3474 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3475         $cc -E <testcpp.c >testcpp.out 2>&1; \
3476         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3477         echo "Yup, it does."
3478         x_cpp="$cc -E"
3479         x_minus='';
3480 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3481         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3482         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3483         echo "Yup, it does."
3484         x_cpp="$cc -E"
3485         x_minus='-';
3486 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3487         $cc -P <testcpp.c >testcpp.out 2>&1; \
3488         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3489         echo "Yipee, that works!"
3490         x_cpp="$cc -P"
3491         x_minus='';
3492 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3493         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3494         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3495         echo "At long last!"
3496         x_cpp="$cc -P"
3497         x_minus='-';
3498 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3499         $cpp <testcpp.c >testcpp.out 2>&1; \
3500         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3501         echo "It works!"
3502         x_cpp="$cpp"
3503         x_minus='';
3504 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3505         $cpp - <testcpp.c >testcpp.out 2>&1; \
3506         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3507         echo "Hooray, it works!  I was beginning to wonder."
3508         x_cpp="$cpp"
3509         x_minus='-';
3510 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3511         $wrapper <testcpp.c >testcpp.out 2>&1; \
3512         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3513         x_cpp="$wrapper"
3514         x_minus=''
3515         echo "Eureka!"
3516 else
3517         dflt=''
3518         rp="No dice.  I can't find a C preprocessor.  Name one:"
3519         . ./myread
3520         x_cpp="$ans"
3521         x_minus=''
3522         $x_cpp <testcpp.c >testcpp.out 2>&1
3523         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3524                 echo "OK, that will do." >&4
3525         else
3526 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3527                 exit 1
3528         fi
3529 fi
3530
3531 case "$ok" in
3532 false)
3533         cppstdin="$x_cpp"
3534         cppminus="$x_minus"
3535         cpprun="$x_cpp"
3536         cpplast="$x_minus"
3537         set X $x_cpp
3538         shift
3539         case "$1" in
3540         "$cpp")
3541                 echo "Perhaps can we force $cc -E using a wrapper..."
3542                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3543                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3544                 then
3545                         echo "Yup, we can."
3546                         cppstdin="$wrapper"
3547                         cppminus='';
3548                 else
3549                         echo "Nope, we'll have to live without it..."
3550                 fi
3551                 ;;
3552         esac
3553         case "$cpprun" in
3554         "$wrapper")
3555                 cpprun=''
3556                 cpplast=''
3557                 ;;
3558         esac
3559         ;;
3560 esac
3561
3562 case "$cppstdin" in
3563 "$wrapper"|'cppstdin') ;;
3564 *) $rm -f $wrapper;;
3565 esac
3566 $rm -f testcpp.c testcpp.out
3567
3568 : Set private lib path
3569 case "$plibpth" in
3570 '') if ./mips; then
3571                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3572         fi;;
3573 esac
3574 case "$libpth" in
3575 ' ') dlist='';;
3576 '') dlist="$loclibpth $plibpth $glibpth";;
3577 *) dlist="$libpth";;
3578 esac
3579
3580 : Now check and see which directories actually exist, avoiding duplicates
3581 libpth=''
3582 for xxx in $dlist
3583 do
3584     if $test -d $xxx; then
3585                 case " $libpth " in
3586                 *" $xxx "*) ;;
3587                 *) libpth="$libpth $xxx";;
3588                 esac
3589     fi
3590 done
3591 $cat <<'EOM'
3592
3593 Some systems have incompatible or broken versions of libraries.  Among
3594 the directories listed in the question below, please remove any you
3595 know not to be holding relevant libraries, and add any that are needed.
3596 Say "none" for none.
3597
3598 EOM
3599 case "$libpth" in
3600 '') dflt='none';;
3601 *)
3602         set X $libpth
3603         shift
3604         dflt=${1+"$@"}
3605         ;;
3606 esac
3607 rp="Directories to use for library searches?"
3608 . ./myread
3609 case "$ans" in
3610 none) libpth=' ';;
3611 *) libpth="$ans";;
3612 esac
3613
3614 : compute shared library extension
3615 case "$so" in
3616 '')
3617         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3618                 dflt='sl'
3619         else
3620                 dflt='so'
3621         fi
3622         ;;
3623 *) dflt="$so";;
3624 esac
3625 $cat <<EOM
3626
3627 On some systems, shared libraries may be available.  Answer 'none' if
3628 you want to suppress searching of shared libraries for the remainder
3629 of this configuration.
3630
3631 EOM
3632 rp='What is the file extension used for shared libraries?'
3633 . ./myread
3634 so="$ans"
3635
3636 : Define several unixisms.
3637 : Hints files or command line option can be used to override them.
3638 : The convoluted testing is in case hints files set either the old
3639 : or the new name.
3640 case "$_exe" in
3641 '')     case "$exe_ext" in
3642     '') ;;
3643         *)      _exe="$exe_ext" ;;
3644         esac
3645         ;;
3646 esac
3647 case "$_a" in
3648 '')     case "$lib_ext" in
3649     '') _a='.a';;
3650         *)      _a="$lib_ext" ;;
3651         esac
3652         ;;
3653 esac
3654 case "$_o" in
3655 '') case "$obj_ext" in
3656         '')     _o='.o';;
3657         *)      _o="$obj_ext";;
3658         esac
3659         ;;
3660 esac
3661 case "$p_" in
3662 '') case "$path_sep" in
3663         '')     p_=':';;
3664         *)      p_="$path_sep";;
3665         esac
3666         ;;
3667 esac
3668 exe_ext=$_exe
3669 lib_ext=$_a
3670 obj_ext=$_o
3671 path_sep=$p_
3672
3673 : Which makefile gets called first.  This is used by make depend.
3674 case "$firstmakefile" in
3675 '') firstmakefile='makefile';;
3676 esac
3677
3678 case "$usesocks" in
3679 $define|true|[yY]*)     dflt='y';;
3680 *) dflt='n';;
3681 esac
3682 cat <<EOM
3683
3684 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3685 Configure must be run with -Dusesocks.
3686
3687 If this doesn't make any sense to you, just accept the default '$dflt'.
3688 EOM
3689 rp='Build Perl for SOCKS?'
3690 . ./myread
3691 case "$ans" in
3692 y|Y)    val="$define" ;;     
3693 *)      val="$undef" ;;
3694 esac
3695 set usesocks
3696 eval $setvar
3697
3698 : Looking for optional libraries
3699 echo " "
3700 echo "Checking for optional libraries..." >&4
3701 case "$libs" in
3702 ' '|'') dflt='';;
3703 *) dflt="$libs";;
3704 esac
3705 case "$libswanted" in
3706 '') libswanted='c_s';;
3707 esac
3708 case "$usesocks" in
3709 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3710 esac
3711 libsfound=''
3712 libsfiles=''
3713 libsdirs=''
3714 libspath=''
3715 for thisdir in $libpth $xlibpth; do
3716   test -d $thisdir && libspath="$libspath $thisdir"
3717 done
3718 for thislib in $libswanted; do
3719         for thisdir in $libspath; do
3720             xxx=''
3721             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3722                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3723                 $test -f "$xxx" && eval $libscheck
3724                 $test -f "$xxx" && libstyle=shared
3725             fi
3726             if test ! -f "$xxx"; then
3727                 xxx=$thisdir/lib$thislib.$so
3728                 $test -f "$xxx" && eval $libscheck
3729                 $test -f "$xxx" && libstyle=shared
3730             fi  
3731             if test ! -f "$xxx"; then
3732                 xxx=$thisdir/lib$thislib$_a
3733                 $test -f "$xxx" && eval $libscheck
3734                 $test -f "$xxx" && libstyle=static
3735             fi
3736             if test ! -f "$xxx"; then
3737                 xxx=$thisdir/$thislib$_a
3738                 $test -f "$xxx" && eval $libscheck
3739                 $test -f "$xxx" && libstyle=static
3740             fi
3741             if test ! -f "$xxx"; then
3742                 xxx=$thisdir/lib${thislib}_s$_a
3743                 $test -f "$xxx" && eval $libscheck
3744                 $test -f "$xxx" && libstyle=static
3745                 $test -f "$xxx" && thislib=${thislib}_s
3746             fi
3747             if test ! -f "$xxx"; then
3748                 xxx=$thisdir/Slib$thislib$_a
3749                 $test -f "$xxx" && eval $libscheck
3750                 $test -f "$xxx" && libstyle=static
3751             fi
3752             if $test -f "$xxx"; then
3753                 case "$libstyle" in
3754                 shared) echo "Found -l$thislib (shared)." ;;
3755                 static) echo "Found -l$thislib." ;;
3756                 *)      echo "Found -l$thislib ($libstyle)." ;;
3757                 esac
3758                 case " $dflt " in
3759                 *"-l$thislib "*);;
3760                 *) dflt="$dflt -l$thislib"
3761                    libsfound="$libsfound $xxx"
3762                    yyy=`basename $xxx`
3763                    libsfiles="$libsfiles $yyy"
3764                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3765                    case " $libsdirs " in
3766                    *" $yyy "*) ;;
3767                    *) libsdirs="$libsdirs $yyy" ;;
3768                    esac
3769                    ;;
3770                 esac
3771                 break
3772             fi  
3773         done
3774         if $test ! -f "$xxx"; then
3775             echo "No -l$thislib."
3776         fi
3777 done
3778 set X $dflt
3779 shift
3780 dflt="$*"
3781 case "$libs" in
3782 '') dflt="$dflt";;
3783 *) dflt="$libs";;
3784 esac
3785 case "$dflt" in
3786 ' '|'') dflt='none';;
3787 esac
3788
3789 $cat <<EOM
3790
3791 In order to compile $package on your machine, a number of libraries
3792 are usually needed.  Include any other special libraries here as well.
3793 Say "none" for none.  The default list is almost always right.
3794 EOM
3795
3796 echo " "
3797 rp="What libraries to use?"
3798 . ./myread
3799 case "$ans" in
3800 none) libs=' ';;
3801 *) libs="$ans";;
3802 esac
3803
3804 : determine optimization, if desired, or use for debug flag also
3805 case "$optimize" in
3806 ' '|$undef) dflt='none';;
3807 '') dflt='-O';;
3808 *) dflt="$optimize";;
3809 esac
3810 $cat <<EOH
3811
3812 By default, $package compiles with the -O flag to use the optimizer.
3813 Alternately, you might want to use the symbolic debugger, which uses
3814 the -g flag (on traditional Unix systems).  Either flag can be
3815 specified here.  To use neither flag, specify the word "none".
3816
3817 EOH
3818 rp="What optimizer/debugger flag should be used?"
3819 . ./myread
3820 optimize="$ans"
3821 case "$optimize" in
3822 'none') optimize=" ";;
3823 esac
3824
3825 dflt=''
3826 : We will not override a previous value, but we might want to
3827 : augment a hint file
3828 case "$hint" in
3829 default|recommended)
3830         case "$gccversion" in
3831         1*) dflt='-fpcc-struct-return' ;;
3832         esac
3833         case "$optimize" in
3834         *-g*) dflt="$dflt -DDEBUGGING";;
3835         esac
3836         case "$gccversion" in
3837         2*) if test -d /etc/conf/kconfig.d &&
3838                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3839                 then
3840                         dflt="$dflt -posix"
3841                 fi
3842                 ;;
3843         esac
3844         case "$gccversion" in
3845         1*) ;;
3846         2.[0-8]*) ;;
3847         ?*)     echo " "
3848                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3849                 echo 'int main(void) { return 0; }' > gcctest.c
3850                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3851                         echo "Yes, it does." 2>&1
3852                         case "$ccflags" in
3853                         *strict-aliasing*) 
3854                                 echo "Leaving current flags $ccflags alone." 2>&1
3855                                 ;;
3856                         *) dflt="$dflt -fno-strict-aliasing" ;;
3857                         esac
3858                 else
3859                         echo "Nope, it doesn't, but that's ok." 2>&1
3860                 fi
3861                 ;;
3862         esac
3863         ;;
3864 esac
3865
3866 case "$mips_type" in
3867 *BSD*|'') inclwanted="$locincpth $usrinc";;
3868 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3869 esac
3870 for thisincl in $inclwanted; do
3871         if $test -d $thisincl; then
3872                 if $test x$thisincl != x$usrinc; then
3873                         case "$dflt" in
3874                         *$thisincl*);;
3875                         *) dflt="$dflt -I$thisincl";;
3876                         esac
3877                 fi
3878         fi
3879 done
3880
3881 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3882         xxx=true;
3883 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3884         xxx=true;
3885 else
3886         xxx=false;
3887 fi;
3888 if $xxx; then
3889         case "$dflt" in
3890         *$2*);;
3891         *) dflt="$dflt -D$2";;
3892         esac;
3893 fi'
3894
3895 set signal.h LANGUAGE_C; eval $inctest
3896
3897 case "$usesocks" in
3898 $define)
3899         ccflags="$ccflags -DSOCKS"
3900         ;;
3901 esac
3902
3903 case "$hint" in
3904 default|recommended) dflt="$ccflags $dflt" ;;
3905 *) dflt="$ccflags";;
3906 esac
3907
3908 case "$dflt" in
3909 ''|' ') dflt=none;;
3910 esac
3911 $cat <<EOH
3912
3913 Your C compiler may want other flags.  For this question you should include
3914 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3915 but you should NOT include libraries or ld flags like -lwhatever.  If you
3916 want $package to honor its debug switch, you should include -DDEBUGGING here.
3917 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3918
3919 To use no flags, specify the word "none".
3920
3921 EOH
3922 set X $dflt
3923 shift
3924 dflt=${1+"$@"}
3925 rp="Any additional cc flags?"
3926 . ./myread
3927 case "$ans" in
3928 none) ccflags='';;
3929 *) ccflags="$ans";;
3930 esac
3931
3932 : the following weeds options from ccflags that are of no interest to cpp
3933 cppflags="$ccflags"
3934 case "$gccversion" in
3935 1*) cppflags="$cppflags -D__GNUC__"
3936 esac
3937 case "$mips_type" in
3938 '');;
3939 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3940 esac
3941 case "$cppflags" in
3942 '');;
3943 *)
3944         echo " "
3945         echo "Let me guess what the preprocessor flags are..." >&4
3946         set X $cppflags
3947         shift
3948         cppflags=''
3949         $cat >cpp.c <<'EOM'
3950 #define BLURFL foo
3951
3952 BLURFL xx LFRULB
3953 EOM
3954         previous=''
3955         for flag in $*
3956         do
3957                 case "$flag" in
3958                 -*) ftry="$flag";;
3959                 *) ftry="$previous $flag";;
3960                 esac
3961                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3962                         >cpp1.out 2>/dev/null && \
3963                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3964                         >cpp2.out 2>/dev/null && \
3965                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3966                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3967                 then
3968                         cppflags="$cppflags $ftry"
3969                         previous=''
3970                 else
3971                         previous="$flag"
3972                 fi
3973         done
3974         set X $cppflags
3975         shift
3976         cppflags=${1+"$@"}
3977         case "$cppflags" in
3978         *-*)  echo "They appear to be: $cppflags";;
3979         esac
3980         $rm -f cpp.c cpp?.out
3981         ;;
3982 esac
3983
3984 : flags used in final linking phase
3985 case "$ldflags" in
3986 '') if ./venix; then
3987                 dflt='-i -z'
3988         else
3989                 dflt=''
3990         fi
3991         case "$ccflags" in
3992         *-posix*) dflt="$dflt -posix" ;;
3993         esac
3994         ;;
3995 *) dflt="$ldflags";;
3996 esac
3997
3998 : Try to guess additional flags to pick up local libraries.
3999 for thislibdir in $libpth; do
4000         case " $loclibpth " in
4001         *" $thislibdir "*)
4002                 case "$dflt " in 
4003                 *"-L$thislibdir "*) ;;
4004                 *)  dflt="$dflt -L$thislibdir" ;;
4005                 esac
4006                 ;;
4007         esac
4008 done
4009
4010 case "$dflt" in
4011 '') dflt='none' ;;
4012 esac
4013
4014 $cat <<EOH
4015
4016 Your C linker may need flags.  For this question you should
4017 include -L/whatever and any other flags used by the C linker, but you
4018 should NOT include libraries like -lwhatever.
4019
4020 Make sure you include the appropriate -L/path flags if your C linker
4021 does not normally search all of the directories you specified above,
4022 namely
4023         $libpth
4024 To use no flags, specify the word "none".
4025
4026 EOH
4027
4028 rp="Any additional ld flags (NOT including libraries)?"
4029 . ./myread
4030 case "$ans" in
4031 none) ldflags='';;
4032 *) ldflags="$ans";;
4033 esac
4034 rmlist="$rmlist pdp11"
4035
4036 : coherency check
4037 echo " "
4038 echo "Checking your choice of C compiler and flags for coherency..." >&4
4039 $cat > try.c <<'EOF'
4040 #include <stdio.h>
4041 int main() { printf("Ok\n"); exit(0); }
4042 EOF
4043 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4044 shift
4045 $cat >try.msg <<'EOM'
4046 I've tried to compile and run the following simple program:
4047
4048 EOM
4049 $cat try.c >> try.msg
4050
4051 $cat >> try.msg <<EOM
4052
4053 I used the command:
4054
4055         $*
4056         ./try
4057
4058 and I got the following output:
4059
4060 EOM
4061 dflt=y
4062 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4063         if sh -c './try' >>try.msg 2>&1; then
4064                 xxx=`./try`
4065                 case "$xxx" in
4066                 "Ok") dflt=n ;;
4067                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4068                         case " $libs " in
4069                         *" -lsfio "*)
4070                                 cat >> try.msg <<'EOQS'
4071 If $libs contains -lsfio, and sfio is mis-configured, then it
4072 sometimes (apparently) runs and exits with a 0 status, but with no
4073 output!  It may have to do with sfio's use of _exit vs. exit.
4074
4075 EOQS
4076                                 rp="You have a big problem.  Shall I abort Configure"
4077                                 dflt=y
4078                                 ;;
4079                         esac
4080                         ;;
4081                 esac
4082         else
4083                 echo "The program compiled OK, but exited with status $?." >>try.msg
4084                 rp="You have a problem.  Shall I abort Configure"
4085                 dflt=y
4086         fi
4087 else
4088         echo "I can't compile the test program." >>try.msg
4089         rp="You have a BIG problem.  Shall I abort Configure"
4090         dflt=y
4091 fi
4092 case "$dflt" in
4093 y)
4094         $cat try.msg >&4
4095         case "$knowitall" in
4096         '')
4097                 echo "(The supplied flags or libraries might be incorrect.)"
4098                 ;;
4099         *) dflt=n;;
4100         esac
4101         echo " "
4102         . ./myread
4103         case "$ans" in
4104         n*|N*) ;;
4105         *)      echo "Ok.  Stopping Configure." >&4
4106                 exit 1
4107                 ;;
4108         esac
4109         ;;
4110 n) echo "OK, that should do.";;
4111 esac
4112 $rm -f try try.* core
4113
4114 : define an is-a-typedef? function
4115 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4116 case "$inclist" in
4117 "") inclist="sys/types.h";;
4118 esac;
4119 eval "varval=\$$var";
4120 case "$varval" in
4121 "")
4122         $rm -f temp.c;
4123         for inc in $inclist; do
4124                 echo "#include <$inc>" >>temp.c;
4125         done;
4126         echo "#ifdef $type" >> temp.c;
4127         echo "printf(\"We have $type\");" >> temp.c;
4128         echo "#endif" >> temp.c;
4129         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4130         if $contains $type temp.E >/dev/null 2>&1; then
4131                 eval "$var=\$type";
4132         else
4133                 eval "$var=\$def";
4134         fi;
4135         $rm -f temp.?;;
4136 *) eval "$var=\$varval";;
4137 esac'
4138
4139 : define an is-a-typedef? function that prompts if the type is not available.
4140 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4141 case "$inclist" in
4142 "") inclist="sys/types.h";;
4143 esac;
4144 eval "varval=\$$var";
4145 case "$varval" in
4146 "")
4147         $rm -f temp.c;
4148         for inc in $inclist; do
4149                 echo "#include <$inc>" >>temp.c;
4150         done;
4151         echo "#ifdef $type" >> temp.c;
4152         echo "printf(\"We have $type\");" >> temp.c;
4153         echo "#endif" >> temp.c;
4154         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4155         echo " " ;
4156         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4157         if $contains $type temp.E >/dev/null 2>&1; then
4158                 echo "$type found." >&4;
4159                 eval "$var=\$type";
4160         else
4161                 echo "$type NOT found." >&4;
4162                 dflt="$def";
4163                 . ./myread ;
4164                 eval "$var=\$ans";
4165         fi;
4166         $rm -f temp.?;;
4167 *) eval "$var=\$varval";;
4168 esac'
4169
4170 : define a shorthand compile call
4171 compile='
4172 mc_file=$1;
4173 shift;
4174 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4175 : define a shorthand compile call for compilations that should be ok.
4176 compile_ok='
4177 mc_file=$1;
4178 shift;
4179 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4180
4181 : check for lengths of integral types
4182 echo " "
4183 case "$intsize" in
4184 '')
4185         echo "Checking to see how big your integers are..." >&4
4186         $cat >intsize.c <<'EOCP'
4187 #include <stdio.h>
4188 int main()
4189 {
4190         printf("intsize=%d;\n", (int)sizeof(int));
4191         printf("longsize=%d;\n", (int)sizeof(long));
4192         printf("shortsize=%d;\n", (int)sizeof(short));
4193         exit(0);
4194 }
4195 EOCP
4196         set intsize
4197         if eval $compile_ok && ./intsize > /dev/null; then
4198                 eval `./intsize`
4199                 echo "Your integers are $intsize bytes long."
4200                 echo "Your long integers are $longsize bytes long."
4201                 echo "Your short integers are $shortsize bytes long."
4202         else
4203                 $cat >&4 <<EOM
4204 !
4205 Help! I can't compile and run the intsize test program: please enlighten me!
4206 (This is probably a misconfiguration in your system or libraries, and
4207 you really ought to fix it.  Still, I'll try anyway.)
4208 !
4209 EOM
4210                 dflt=4
4211                 rp="What is the size of an integer (in bytes)?"
4212                 . ./myread
4213                 intsize="$ans"
4214                 dflt=$intsize
4215                 rp="What is the size of a long integer (in bytes)?"
4216                 . ./myread
4217                 longsize="$ans"
4218                 dflt=2
4219                 rp="What is the size of a short integer (in bytes)?"
4220                 . ./myread
4221                 shortsize="$ans"
4222         fi
4223         ;;
4224 esac
4225 $rm -f intsize intsize.*
4226
4227 : see what type lseek is declared as in the kernel
4228 rp="What is the type used for lseek's offset on this system?"
4229 set off_t lseektype long stdio.h sys/types.h
4230 eval $typedef_ask
4231
4232 echo " "
4233 echo "Checking to see how big your file offsets are..." >&4
4234 $cat >try.c <<EOCP
4235 #include <sys/types.h>
4236 #include <stdio.h>
4237 int main()
4238 {
4239     printf("%d\n", (int)sizeof($lseektype));
4240     return(0); 
4241 }
4242 EOCP
4243 set try
4244 if eval $compile_ok; then
4245         lseeksize=`./try`
4246         echo "Your file offsets are $lseeksize bytes long."
4247 else
4248         dflt=$longsize
4249         echo " "
4250         echo "(I can't seem to compile the test program.  Guessing...)"
4251         rp="What is the size of your file offsets (in bytes)?"
4252         . ./myread
4253         lseeksize="$ans"
4254 fi
4255 $rm -f try.c try
4256
4257 : see what type file positions are declared as in the library
4258 rp="What is the type for file position used by fsetpos()?"
4259 set fpos_t fpostype long stdio.h sys/types.h
4260 eval $typedef_ask
4261
4262 echo " "
4263 case "$fpostype" in
4264 *_t) zzz="$fpostype"    ;;
4265 *)   zzz="fpos_t"       ;;
4266 esac
4267 echo "Checking the size of $zzz..." >&4 
4268 cat > try.c <<EOCP
4269 #include <sys/types.h>
4270 #include <stdio.h>
4271 int main() {
4272     printf("%d\n", (int)sizeof($fpostype));
4273     exit(0);
4274 }
4275 EOCP
4276 set try
4277 if eval $compile_ok; then
4278         yyy=`./try`
4279         case "$yyy" in
4280         '')     fpossize=4
4281                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4282                 ;;
4283         *)      fpossize=$yyy
4284                 echo "Your $zzz is $fpossize bytes long."
4285                 ;;
4286         esac
4287 else
4288         dflt="$longsize"
4289         echo " " >&4
4290         echo "(I can't compile the test program.  Guessing...)" >&4
4291         rp="What is the size of your file positions (in bytes)?"
4292         . ./myread
4293         fpossize="$ans"
4294 fi
4295
4296
4297
4298 # Backward compatibility (uselfs is deprecated).
4299 case "$uselfs" in
4300 "$define"|true|[yY]*)
4301         cat <<EOM >&4
4302
4303 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4304 EOM
4305         uselargefiles="$define"
4306         ;;
4307 esac                          
4308
4309 case "$lseeksize:$fpossize" in
4310 8:8) cat <<EOM
4311
4312 You can have files larger than 2 gigabytes.
4313 EOM
4314    val="$define" ;;
4315 *)    case "$uselargefiles" in
4316    "$undef"|false|[nN]*) dflt='n' ;;
4317    *)   dflt='y' ;;
4318    esac
4319    cat <<EOM
4320
4321 Perl can be built to understand large files (files larger than 2 gigabytes)
4322 on some systems.  To do so, Configure can be run with -Duselargefiles.
4323
4324 If this doesn't make any sense to you, just accept the default '$dflt'.
4325 EOM
4326    rp='Try to understand large files, if available?'
4327    . ./myread
4328    case "$ans" in
4329    y|Y)         val="$define" ;;
4330    *)           val="$undef"  ;;
4331    esac
4332    ;;
4333 esac
4334 set uselargefiles
4335 eval $setvar
4336 case "$uselargefiles" in
4337 "$define")
4338 : Look for a hint-file generated 'call-back-unit'.  If the
4339 : user has specified that a large files perl is to be built,
4340 : we may need to set or change some other defaults.
4341         if $test -f uselargefiles.cbu; then
4342                 echo "Your platform has some specific hints for large file builds, using them..."
4343                 . ./uselargefiles.cbu
4344                 echo " "
4345                 echo "Rechecking to see how big your file offsets are..." >&4
4346                 $cat >try.c <<EOCP
4347 #include <sys/types.h>
4348 #include <stdio.h>
4349 int main()
4350 {
4351     printf("%d\n", (int)sizeof($lseektype));
4352     return(0); 
4353 }
4354 EOCP
4355                 set try
4356                 if eval $compile_ok; then
4357                         lseeksize=`./try`
4358                         $echo "Your file offsets are now $lseeksize bytes long."
4359                 else
4360                         dflt="$lseeksize"
4361                         echo " "
4362                         echo "(I can't seem to compile the test program.  Guessing...)"
4363                         rp="What is the size of your file offsets (in bytes)?"
4364                         . ./myread
4365                         lseeksize="$ans"
4366                 fi
4367                 case "$fpostype" in
4368                 *_t) zzz="$fpostype"    ;;
4369                 *)   zzz="fpos_t"       ;;
4370                 esac
4371                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4372                 $cat > try.c <<EOCP
4373 #include <sys/types.h>
4374 #include <stdio.h>
4375 int main() {
4376     printf("%d\n", (int)sizeof($fpostype));
4377     exit(0);
4378 }
4379 EOCP
4380                 set try
4381                 if eval $compile_ok; then
4382                         yyy=`./try`
4383                         dflt="$lseeksize"
4384                         case "$yyy" in
4385                         '')     echo " "
4386                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4387                                 ;;
4388                         *)      fpossize=$yyy
4389                                 echo " $fpossize bytes." >&4
4390                                 ;;
4391                         esac
4392                 else
4393                         dflt="$fpossize"
4394                         echo " "
4395                         echo "(I can't compile the test program.  Guessing...)" >&4
4396                         rp="What is the size of your file positions (in bytes)?"
4397                         . ./myread
4398                         fpossize="$ans"
4399                 fi
4400                 $rm -f try.c try
4401         fi
4402         ;;
4403 esac
4404
4405
4406 case "$usemorebits" in
4407 "$define"|true|[yY]*)
4408         use64bitint="$define"
4409         uselongdouble="$define"
4410         usemorebits="$define"
4411         ;;
4412 *)      usemorebits="$undef"
4413         ;;
4414 esac
4415
4416
4417 case "$uselonglong" in
4418 "$define"|true|[yY]*)
4419         cat <<EOM >&4
4420
4421 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4422 EOM
4423         use64bitint="$define"
4424         ;;
4425 esac                          
4426 case "$use64bits" in
4427 "$define"|true|[yY]*)
4428         cat <<EOM >&4
4429
4430 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4431 EOM
4432         use64bitint="$define"
4433         ;;
4434 esac                          
4435 case "$use64bitints" in
4436 "$define"|true|[yY]*)
4437         cat <<EOM >&4
4438
4439 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4440 EOM
4441         use64bitint="$define"
4442         ;;
4443 esac                          
4444 case "$use64bitsint" in
4445 "$define"|true|[yY]*)
4446         cat <<EOM >&4
4447
4448 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4449 EOM
4450         use64bitint="$define"
4451         ;;
4452 esac                          
4453 case "$uselonglongs" in
4454 "$define"|true|[yY]*)
4455         cat <<EOM >&4
4456
4457 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4458 EOM
4459         use64bitint="$define"
4460         ;;
4461 esac                          
4462 case "$use64bitsall" in
4463 "$define"|true|[yY]*)
4464         cat <<EOM >&4
4465
4466 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4467 EOM
4468         use64bitall="$define"
4469         ;;
4470 esac                          
4471
4472 case "$ccflags" in
4473 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4474 esac
4475 case "$use64bitall" in
4476 "$define"|true|[yY]*) use64bitint="$define" ;;
4477 esac
4478
4479 case "$longsize" in
4480 8) cat <<EOM
4481
4482 You have natively 64-bit long integers.
4483 EOM
4484    val="$define"
4485    ;;
4486 *) case "$use64bitint" in
4487    "$define"|true|[yY]*) dflt='y';;
4488    *) dflt='n';;
4489    esac
4490    cat <<EOM
4491
4492 Perl can be built to take advantage of 64-bit integer types
4493 on some systems.  To do so, Configure can be run with -Duse64bitint.
4494 Choosing this option will most probably introduce binary incompatibilities.
4495
4496 If this doesn't make any sense to you, just accept the default '$dflt'.
4497 EOM
4498    rp='Try to use 64-bit integers, if available?'
4499    . ./myread
4500    case "$ans" in
4501    [yY]*) val="$define" ;;
4502    *)     val="$undef"  ;;
4503    esac
4504    ;;
4505 esac
4506 set use64bitint
4507 eval $setvar
4508
4509 cat <<EOM
4510
4511 You may also choose to try maximal 64-bitness.  It means using as much
4512 64-bitness as possible on the platform.  This in turn means even more
4513 binary incompatibilities.  On the other hand, your platform may not
4514 have any more 64-bitness available than what you already have chosen.
4515
4516 If this doesn't make any sense to you, just accept the default '$dflt'.
4517 EOM
4518 rp='Try to use maximal 64-bit support, if available?'
4519 case "$use64bitall" in
4520 "$define"|true|[yY]*) dflt='y' ;;
4521 *) case "$longsize" in
4522    8) dflt='y' ;;
4523    *) dflt='n' ;;
4524    esac
4525    ;;
4526 esac    
4527 . ./myread
4528 case "$ans" in
4529 [yY]*) val="$define" ;;
4530 *)     val="$undef"  ;;
4531 esac
4532 set use64bitall
4533 eval $setvar
4534 case "$use64bitall" in
4535 "$define")
4536         case "$use64bitint" in
4537         "$undef")
4538                 cat <<EOM
4539
4540 Since you have chosen a maximally 64-bit build, I'm also turning on
4541 the use of 64-bit integers.
4542 EOM
4543                 use64bitint="$define" ;;
4544         esac
4545         ;;
4546 esac
4547
4548 case "$use64bitint" in
4549 "$define"|true|[yY]*)
4550 : Look for a hint-file generated 'call-back-unit'.  If the
4551 : user has specified that a 64-bit perl is to be built,
4552 : we may need to set or change some other defaults.
4553         if $test -f use64bitint.cbu; then
4554                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4555                 . ./use64bitint.cbu
4556         fi
4557         case "$longsize" in
4558         4) case "$archname64" in
4559            '') archname64=64int ;;
4560            esac
4561            ;;
4562         esac
4563         ;;
4564 esac
4565
4566 case "$use64bitall" in
4567 "$define"|true|[yY]*)
4568 : Look for a hint-file generated 'call-back-unit'.  If the
4569 : user has specified that a maximally 64-bit perl is to be built,
4570 : we may need to set or change some other defaults.
4571         if $test -f use64bitall.cbu; then
4572                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4573                 . ./use64bitall.cbu
4574         fi
4575         case "$longsize" in
4576         4) case "$archname64" in
4577            ''|64int) archname64=64all ;;
4578            esac
4579            ;;
4580         esac
4581         ;;
4582 esac
4583
4584 : determine the architecture name
4585 echo " "
4586 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4587         tarch=`arch`"-$osname"
4588 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4589         if uname -m > tmparch 2>&1 ; then
4590                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4591                         -e 's/$/'"-$osname/" tmparch`
4592         else
4593                 tarch="$osname"
4594         fi
4595         $rm -f tmparch
4596 else
4597         tarch="$osname"
4598 fi
4599 case "$myarchname" in
4600 ''|"$tarch") ;;
4601 *)
4602         echo "(Your architecture name used to be $myarchname.)"
4603         archname=''
4604         ;;
4605 esac
4606 myarchname="$tarch"
4607 case "$archname" in
4608 '') dflt="$tarch";;
4609 *) dflt="$archname";;
4610 esac
4611 rp='What is your architecture name'
4612 . ./myread
4613 archname="$ans"
4614 case "$usethreads" in
4615 $define)
4616         echo "Threads selected." >&4
4617         case "$archname" in
4618         *-thread*) echo "...and architecture name already has -thread." >&4
4619                 ;;
4620         *)      archname="$archname-thread"
4621                 echo "...setting architecture name to $archname." >&4
4622                 ;;
4623         esac
4624         ;;
4625 esac
4626 case "$usemultiplicity" in
4627 $define)
4628         echo "Multiplicity selected." >&4
4629         case "$archname" in
4630         *-multi*) echo "...and architecture name already has -multi." >&4
4631                 ;;
4632         *)      archname="$archname-multi"
4633                 echo "...setting architecture name to $archname." >&4
4634                 ;;
4635         esac
4636         ;;
4637 esac
4638 case "$use64bitint" in
4639 $define)
4640         case "$archname64" in
4641         '')
4642                 ;;
4643         *)
4644                 case "$archname" in
4645                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4646                         ;;
4647                 *)      archname="$archname-$archname64"
4648                         echo "...setting architecture name to $archname." >&4
4649                         ;;
4650                 esac
4651                 ;;
4652         esac
4653 esac
4654
4655 : determine root of directory hierarchy where package will be installed.
4656 case "$prefix" in
4657 '')
4658         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4659         ;;
4660 *)
4661         dflt="$prefix"
4662         ;;
4663 esac
4664 $cat <<EOM
4665
4666 By default, $package will be installed in $dflt/bin, manual pages
4667 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4668 installation directories. Typically this is something like /usr/local.
4669 If you wish to have binaries under /usr/bin but other parts of the
4670 installation under /usr/local, that's ok: you will be prompted
4671 separately for each of the installation directories, the prefix being
4672 only used to set the defaults.
4673
4674 EOM
4675 fn=d~
4676 rp='Installation prefix to use?'
4677 . ./getfile
4678 oldprefix=''
4679 case "$prefix" in
4680 '') ;;
4681 *)
4682         case "$ans" in
4683         "$prefix") ;;
4684         *) oldprefix="$prefix";;
4685         esac
4686         ;;
4687 esac
4688 prefix="$ans"
4689 prefixexp="$ansexp"
4690
4691 : is AFS running?
4692 echo " "
4693 case "$afs" in
4694 $define|true)   afs=true ;;
4695 $undef|false)   afs=false ;;
4696 *)      if test -d /afs; then
4697                 afs=true
4698         else
4699                 afs=false
4700         fi
4701         ;;
4702 esac
4703 if $afs; then
4704         echo "AFS may be running... I'll be extra cautious then..." >&4
4705 else
4706         echo "AFS does not seem to be running..." >&4
4707 fi
4708
4709 : determine installation prefix for where package is to be installed.
4710 if $afs; then 
4711 $cat <<EOM
4712
4713 Since you are running AFS, I need to distinguish the directory in which
4714 files will reside from the directory in which they are installed (and from
4715 which they are presumably copied to the former directory by occult means).
4716
4717 EOM
4718         case "$installprefix" in
4719         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4720         *) dflt="$installprefix";;
4721         esac
4722 else
4723 $cat <<EOM
4724
4725 In some special cases, particularly when building $package for distribution,
4726 it is convenient to distinguish between the directory in which files should 
4727 be installed from the directory ($prefix) in which they 
4728 will eventually reside.  For most users, these two directories are the same.
4729
4730 EOM
4731         case "$installprefix" in
4732         '') dflt=$prefix ;;
4733         *) dflt=$installprefix;;
4734         esac
4735 fi
4736 fn=d~
4737 rp='What installation prefix should I use for installing files?'
4738 . ./getfile
4739 installprefix="$ans"
4740 installprefixexp="$ansexp"
4741
4742 : set the prefixit variable, to compute a suitable default value
4743 prefixit='case "$3" in
4744 ""|none)
4745         case "$oldprefix" in
4746         "") eval "$1=\"\$$2\"";;
4747         *)
4748                 case "$3" in
4749                 "") eval "$1=";;
4750                 none)
4751                         eval "tp=\"\$$2\"";
4752                         case "$tp" in
4753                         ""|" ") eval "$1=\"\$$2\"";;
4754                         *) eval "$1=";;
4755                         esac;;
4756                 esac;;
4757         esac;;
4758 *)
4759         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4760         case "$tp" in
4761         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4762         /*-$oldprefix/*|\~*-$oldprefix/*)
4763                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4764         *) eval "$1=\"\$$2\"";;
4765         esac;;
4766 esac'
4767
4768
4769 : get the patchlevel
4770 echo " "
4771 echo "Getting the current patchlevel..." >&4
4772 if $test -r $rsrc/patchlevel.h;then
4773         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4774         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4775         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4776         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4777         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4778         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4779 else
4780         revision=0
4781         patchlevel=0
4782         subversion=0
4783         api_revision=0
4784         api_version=0
4785         api_subversion=0
4786 fi
4787 $echo $n "(You have $package revision $revision" $c
4788 $echo $n " patchlevel $patchlevel" $c
4789 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4790 echo ".)"
4791 case "$osname" in
4792 dos|vms)
4793         : XXX Should be a Configure test for double-dots in filenames.
4794         version=`echo $revision $patchlevel $subversion | \
4795                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4796         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4797                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4798         ;;
4799 *)
4800         version=`echo $revision $patchlevel $subversion | \
4801                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4802         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4803                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4804         ;;
4805 esac
4806 : Special case the 5.005_xx maintenance series, which used 5.005
4807 : without any subversion label as a subdirectory in $sitelib
4808 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4809         api_versionstring='5.005'
4810 fi
4811
4812 : determine installation style
4813 : For now, try to deduce it from prefix unless it is already set.
4814 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4815 case "$installstyle" in
4816 '')     case "$prefix" in
4817                 *perl*) dflt='lib';;
4818                 *) dflt='lib/perl5' ;;
4819         esac
4820         ;;
4821 *)      dflt="$installstyle" ;;
4822 esac
4823 : Probably not worth prompting for this since we prompt for all
4824 : the directories individually, and the prompt would be too long and
4825 : confusing anyway.
4826 installstyle=$dflt
4827
4828 : determine where private library files go
4829 : Usual default is /usr/local/lib/perl5/$version.
4830 : Also allow things like /opt/perl/lib/$version, since 
4831 : /opt/perl/lib/perl5... would be redundant.
4832 : The default "style" setting is made in installstyle.U
4833 case "$installstyle" in
4834 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4835 *)       set dflt privlib lib/$version ;;
4836 esac
4837 eval $prefixit
4838 $cat <<EOM
4839
4840 There are some auxiliary files for $package that need to be put into a
4841 private library directory that is accessible by everyone.
4842
4843 EOM
4844 fn=d~+
4845 rp='Pathname where the private library files will reside?'
4846 . ./getfile
4847 privlib="$ans"
4848 privlibexp="$ansexp"
4849 : Change installation prefix, if necessary.
4850 if $test X"$prefix" != X"$installprefix"; then
4851         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4852 else
4853         installprivlib="$privlibexp"
4854 fi
4855
4856 : set the prefixup variable, to restore leading tilda escape
4857 prefixup='case "$prefixexp" in
4858 "$prefix") ;;
4859 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4860 esac'
4861
4862 : determine where public architecture dependent libraries go
4863 set archlib archlib
4864 eval $prefixit
4865 : privlib default is /usr/local/lib/$package/$version
4866 : archlib default is /usr/local/lib/$package/$version/$archname
4867 : privlib may have an optional trailing /share.
4868 tdflt=`echo $privlib | $sed 's,/share$,,'`
4869 tdflt=$tdflt/$archname
4870 case "$archlib" in
4871 '')     dflt=$tdflt
4872         ;;
4873 *)      dflt="$archlib"
4874     ;;
4875 esac
4876 $cat <<EOM
4877
4878 $spackage contains architecture-dependent library files.  If you are
4879 sharing libraries in a heterogeneous environment, you might store
4880 these files in a separate location.  Otherwise, you can just include
4881 them with the rest of the public library files.
4882
4883 EOM
4884 fn=d+~
4885 rp='Where do you want to put the public architecture-dependent libraries?'
4886 . ./getfile
4887 archlib="$ans"
4888 archlibexp="$ansexp"
4889 if $test X"$archlib" = X"$privlib"; then
4890         d_archlib="$undef"
4891 else
4892         d_archlib="$define"
4893 fi
4894 : Change installation prefix, if necessary.
4895 if $test X"$prefix" != X"$installprefix"; then
4896         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4897 else
4898         installarchlib="$archlibexp"
4899 fi
4900
4901
4902 : Binary compatibility with 5.005 is not possible for builds
4903 : with advanced features
4904 case "$usethreads$usemultiplicity" in
4905 *define*)
4906         bincompat5005="$undef"
4907         d_bincompat5005="$undef"
4908         ;;
4909 *)      $cat <<EOM
4910
4911 Perl 5.006 can be compiled for binary compatibility with 5.005.
4912 If you decide to do so, you will be able to continue using most
4913 of the extensions that were compiled for Perl 5.005.
4914
4915 EOM
4916         case "$bincompat5005$d_bincompat5005" in
4917         *"$undef"*) dflt=n ;;
4918         *) dflt=y ;;
4919         esac
4920         rp='Binary compatibility with Perl 5.005?'
4921         . ./myread
4922         case "$ans" in
4923         y*) val="$define" ;;
4924         *)  val="$undef" ;;
4925         esac
4926         set d_bincompat5005
4927         eval $setvar
4928         case "$d_bincompat5005" in
4929         "$define")
4930                 bincompat5005="$define"
4931                 ;;
4932         *)      bincompat5005="$undef"
4933                 d_bincompat5005="$undef"
4934                 ;;
4935         esac
4936         ;;
4937 esac
4938
4939
4940 : see if setuid scripts can be secure
4941 $cat <<EOM
4942
4943 Some kernels have a bug that prevents setuid #! scripts from being
4944 secure.  Some sites have disabled setuid #! scripts because of this.
4945
4946 First let's decide if your kernel supports secure setuid #! scripts.
4947 (If setuid #! scripts would be secure but have been disabled anyway,
4948 don't say that they are secure if asked.)
4949
4950 EOM
4951
4952 val="$undef"
4953 if $test -d /dev/fd; then
4954         echo "#!$ls" >reflect
4955         chmod +x,u+s reflect
4956         ./reflect >flect 2>&1
4957         if $contains "/dev/fd" flect >/dev/null; then
4958                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4959                 val="$define"
4960         else
4961                 $cat <<EOM
4962 If you are not sure if they are secure, I can check but I'll need a
4963 username and password different from the one you are using right now.
4964 If you don't have such a username or don't want me to test, simply
4965 enter 'none'.
4966
4967 EOM
4968                 rp='Other username to test security of setuid scripts with?'
4969                 dflt='none'
4970                 . ./myread
4971                 case "$ans" in
4972                 n|none)
4973                         case "$d_suidsafe" in
4974                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
4975                                 dflt=n;;
4976                         "$undef")
4977                                 echo "Well, the $hint value is *not* secure." >&4
4978                                 dflt=n;;
4979                         *)      echo "Well, the $hint value *is* secure." >&4
4980                                 dflt=y;;
4981                         esac
4982                         ;;
4983                 *)
4984                         $rm -f reflect flect
4985                         echo "#!$ls" >reflect
4986                         chmod +x,u+s reflect
4987                         echo >flect
4988                         chmod a+w flect
4989                         echo '"su" will (probably) prompt you for '"$ans's password."
4990                         su $ans -c './reflect >flect'
4991                         if $contains "/dev/fd" flect >/dev/null; then
4992                                 echo "Okay, it looks like setuid scripts are secure." >&4
4993                                 dflt=y
4994                         else
4995                                 echo "I don't think setuid scripts are secure." >&4
4996                                 dflt=n
4997                         fi
4998                         ;;
4999                 esac
5000                 rp='Does your kernel have *secure* setuid scripts?'
5001                 . ./myread
5002                 case "$ans" in
5003                 [yY]*)  val="$define";;
5004                 *)      val="$undef";;
5005                 esac
5006         fi
5007 else
5008         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5009         echo "(That's for file descriptors, not floppy disks.)"
5010         val="$undef"
5011 fi
5012 set d_suidsafe
5013 eval $setvar
5014
5015 $rm -f reflect flect
5016
5017 : now see if they want to do setuid emulation
5018 echo " "
5019 val="$undef"
5020 case "$d_suidsafe" in
5021 "$define")
5022         val="$undef"
5023         echo "No need to emulate SUID scripts since they are secure here." >& 4
5024         ;;
5025 *)
5026         $cat <<EOM
5027 Some systems have disabled setuid scripts, especially systems where
5028 setuid scripts cannot be secure.  On systems where setuid scripts have
5029 been disabled, the setuid/setgid bits on scripts are currently
5030 useless.  It is possible for $package to detect those bits and emulate
5031 setuid/setgid in a secure fashion.  This emulation will only work if
5032 setuid scripts have been disabled in your kernel.
5033
5034 EOM
5035         case "$d_dosuid" in
5036         "$define") dflt=y ;;
5037         *) dflt=n ;;
5038         esac
5039         rp="Do you want to do setuid/setgid emulation?"
5040         . ./myread
5041         case "$ans" in
5042         [yY]*)  val="$define";;
5043         *)      val="$undef";;
5044         esac
5045         ;;
5046 esac
5047 set d_dosuid
5048 eval $setvar
5049
5050 : determine filename position in cpp output
5051 echo " "
5052 echo "Computing filename position in cpp output for #include directives..." >&4
5053 echo '#include <stdio.h>' > foo.c
5054 $cat >fieldn <<EOF
5055 $startsh
5056 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5057 $grep '^[       ]*#.*stdio\.h' | \
5058 while read cline; do
5059         pos=1
5060         set \$cline
5061         while $test \$# -gt 0; do
5062                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5063                         echo "\$pos"
5064                         exit 0
5065                 fi
5066                 shift
5067                 pos=\`expr \$pos + 1\`
5068         done
5069 done
5070 EOF
5071 chmod +x fieldn
5072 fieldn=`./fieldn`
5073 $rm -f foo.c fieldn
5074 case $fieldn in
5075 '') pos='???';;
5076 1) pos=first;;
5077 2) pos=second;;
5078 3) pos=third;;
5079 *) pos="${fieldn}th";;
5080 esac
5081 echo "Your cpp writes the filename in the $pos field of the line."
5082
5083 : locate header file
5084 $cat >findhdr <<EOF
5085 $startsh
5086 wanted=\$1
5087 name=''
5088 for usrincdir in $usrinc
5089 do
5090         if test -f \$usrincdir/\$wanted; then
5091                 echo "\$usrincdir/\$wanted"
5092                 exit 0
5093         fi
5094 done
5095 awkprg='{ print \$$fieldn }'
5096 echo "#include <\$wanted>" > foo\$\$.c
5097 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5098 $grep "^[       ]*#.*\$wanted" | \
5099 while read cline; do
5100         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5101         case "\$name" in
5102         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5103         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5104         *) exit 2;;
5105         esac;
5106 done;
5107 #
5108 # status = 0: grep returned 0 lines, case statement not executed
5109 # status = 1: headerfile found
5110 # status = 2: while loop executed, no headerfile found
5111 #
5112 status=\$?
5113 $rm -f foo\$\$.c;
5114 if test \$status -eq 1; then
5115         exit 0;
5116 fi
5117 exit 1
5118 EOF
5119 chmod +x findhdr
5120
5121 : define an alternate in-header-list? function
5122 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5123 cont=true; xxf="echo \"<\$1> found.\" >&4";
5124 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5125 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5126 esac;
5127 case $# in 4) instead=instead;; *) instead="at last";; esac;
5128 while $test "$cont"; do
5129         xxx=`./findhdr $1`
5130         var=$2; eval "was=\$$2";
5131         if $test "$xxx" && $test -r "$xxx";
5132         then eval $xxf;
5133         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5134                 cont="";
5135         else eval $xxnf;
5136         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5137         set $yyy; shift; shift; yyy=$@;
5138         case $# in 0) cont="";;
5139         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5140                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5141         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5142                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5143         esac;
5144 done;
5145 while $test "$yyy";
5146 do set $yyy; var=$2; eval "was=\$$2";
5147         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5148         set $yyy; shift; shift; yyy=$@;
5149 done'
5150
5151 : see if this is a malloc.h system
5152 set malloc.h i_malloc
5153 eval $inhdr
5154
5155 : see if stdlib is available
5156 set stdlib.h i_stdlib
5157 eval $inhdr
5158
5159 : determine which malloc to compile in
5160 echo " "
5161 case "$usemymalloc" in
5162 ''|[yY]*|true|$define)  dflt='y' ;;
5163 *)      dflt='n' ;;
5164 esac
5165 rp="Do you wish to attempt to use the malloc that comes with $package?"
5166 . ./myread
5167 usemymalloc="$ans"
5168 case "$ans" in
5169 y*|true)
5170         usemymalloc='y'
5171         mallocsrc='malloc.c'
5172         mallocobj="malloc$_o"
5173         d_mymalloc="$define"
5174         case "$libs" in
5175         *-lmalloc*)
5176                 : Remove malloc from list of libraries to use
5177                 echo "Removing unneeded -lmalloc from library list" >&4
5178                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5179                 shift
5180                 libs="$*"
5181                 echo "libs = $libs" >&4
5182                 ;;
5183         esac
5184         ;;
5185 *)
5186         usemymalloc='n'
5187         mallocsrc=''
5188         mallocobj=''
5189         d_mymalloc="$undef"
5190         ;;
5191 esac
5192
5193 : compute the return types of malloc and free
5194 echo " "
5195 $cat >malloc.c <<END
5196 #$i_malloc I_MALLOC
5197 #$i_stdlib I_STDLIB
5198 #include <stdio.h>
5199 #include <sys/types.h>
5200 #ifdef I_MALLOC
5201 #include <malloc.h>
5202 #endif
5203 #ifdef I_STDLIB
5204 #include <stdlib.h>
5205 #endif
5206 #ifdef TRY_MALLOC
5207 void *malloc();
5208 #endif
5209 #ifdef TRY_FREE
5210 void free();
5211 #endif
5212 END
5213 case "$malloctype" in
5214 '')
5215         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5216                 malloctype='void *'
5217         else
5218                 malloctype='char *'
5219         fi
5220         ;;
5221 esac
5222 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5223
5224 case "$freetype" in
5225 '')
5226         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5227                 freetype='void'
5228         else
5229                 freetype='int'
5230         fi
5231         ;;
5232 esac
5233 echo "Your system uses $freetype free(), it would seem." >&4
5234 $rm -f malloc.[co]
5235 $cat <<EOM
5236
5237 The installation process will also create a directory for
5238 vendor-supplied add-ons.  Vendors who supply perl with their system
5239 may find it convenient to place all vendor-supplied files in this
5240 directory rather than in the main distribution directory.  This will
5241 ease upgrades between binary-compatible maintenance versions of perl.
5242
5243 Of course you may also use these directories in whatever way you see
5244 fit.  For example, you might use them to access modules shared over a
5245 company-wide network.
5246
5247 The default answer should be fine for most people.
5248 This causes further questions about vendor add-ons to be skipped
5249 and no vendor-specific directories will be configured for perl.
5250
5251 EOM
5252 rp='Do you want to configure vendor-specific add-on directories?'
5253 case "$usevendorprefix" in
5254 define|true|[yY]*) dflt=y ;;
5255 *)      : User may have set vendorprefix directly on Configure command line.
5256         case "$vendorprefix" in
5257         ''|' ') dflt=n ;;
5258         *)      dflt=y ;;
5259         esac
5260         ;;
5261 esac
5262 . ./myread
5263 case "$ans" in
5264 [yY]*)  fn=d~+
5265         rp='Installation prefix to use for vendor-supplied add-ons?'
5266         case "$vendorprefix" in
5267         '') dflt='' ;;
5268         *)  dflt=$vendorprefix ;;
5269         esac
5270         . ./getfile
5271         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5272         oldvendorprefix=''
5273         case "$vendorprefix" in
5274         '') ;;
5275         *)      case "$ans" in
5276                 "$prefix") ;;
5277                 *) oldvendorprefix="$prefix";;
5278                 esac
5279                 ;;
5280         esac
5281         usevendorprefix="$define"
5282         vendorprefix="$ans"
5283         vendorprefixexp="$ansexp"
5284         ;;
5285 *)      usevendorprefix="$undef"
5286         vendorprefix=''
5287         vendorprefixexp=''
5288         ;;
5289 esac
5290
5291 case "$vendorprefix" in
5292 '')     d_vendorlib="$undef"
5293         vendorlib=''
5294         vendorlibexp=''
5295         ;;
5296 *)      d_vendorlib="$define"
5297         : determine where vendor-supplied modules go.
5298         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5299         case "$vendorlib" in
5300         '')
5301                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5302                 case "$installstyle" in
5303                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5304                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5305                 esac
5306                 ;;
5307         *)      dflt="$vendorlib"
5308                 ;;
5309         esac
5310         fn=d~+
5311         rp='Pathname for the vendor-supplied library files?'
5312         . ./getfile
5313         vendorlib="$ans"
5314         vendorlibexp="$ansexp"
5315         ;;
5316 esac
5317 : Change installation prefix, if necessary.
5318 if $test X"$prefix" != X"$installprefix"; then
5319         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5320 else
5321         installvendorlib="$vendorlibexp"
5322 fi
5323
5324 : Cruising for prototypes
5325 echo " "
5326 echo "Checking out function prototypes..." >&4
5327 $cat >prototype.c <<'EOCP'
5328 int main(int argc, char *argv[]) {
5329         exit(0);}
5330 EOCP
5331 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5332         echo "Your C compiler appears to support function prototypes."
5333         val="$define"
5334 else
5335         echo "Your C compiler doesn't seem to understand function prototypes."
5336         val="$undef"
5337 fi
5338 set prototype
5339 eval $setvar
5340 $rm -f prototype*
5341
5342 case "$prototype" in
5343 "$define") ;;
5344 *)      ansi2knr='ansi2knr'
5345         echo " "
5346         cat <<EOM >&4
5347
5348 $me:  FATAL ERROR:
5349 This version of $package can only be compiled by a compiler that 
5350 understands function prototypes.  Unfortunately, your C compiler 
5351         $cc $ccflags
5352 doesn't seem to understand them.  Sorry about that.
5353
5354 If GNU cc is available for your system, perhaps you could try that instead.  
5355
5356 Eventually, we hope to support building Perl with pre-ANSI compilers.
5357 If you would like to help in that effort, please contact <perlbug@perl.org>.
5358
5359 Aborting Configure now.
5360 EOM
5361         exit 2
5362         ;;
5363 esac
5364
5365 : determine where public executables go
5366 echo " "
5367 set dflt bin bin
5368 eval $prefixit
5369 fn=d~
5370 rp='Pathname where the public executables will reside?'
5371 . ./getfile
5372 if $test "X$ansexp" != "X$binexp"; then
5373         installbin=''
5374 fi
5375 bin="$ans"
5376 binexp="$ansexp"
5377 : Change installation prefix, if necessary.
5378 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5379 if $test X"$prefix" != X"$installprefix"; then
5380         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5381 else
5382         installbin="$binexp"
5383 fi
5384
5385 : Find perl5.005 or later.
5386 echo "Looking for a previously installed perl5.005 or later... "
5387 case "$perl5" in
5388 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
5389                 : Check if this perl is recent and can load a simple module
5390                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5391                         perl5=$tdir/perl
5392                         break;
5393                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5394                         perl5=$tdir/perl
5395                         break;
5396                 fi
5397         done
5398         ;;
5399 *)      perl5="$perl5"
5400         ;;
5401 esac
5402 case "$perl5" in
5403 '')     echo "None found.  That's ok.";;
5404 *)      echo "Using $perl5." ;;
5405 esac
5406
5407 $cat <<EOM
5408
5409 After $package is installed, you may wish to install various
5410 add-on modules and utilities.  Typically, these add-ons will
5411 be installed under $prefix with the rest
5412 of this package.  However, you may wish to install such add-ons
5413 elsewhere under a different prefix.
5414
5415 If you do not wish to put everything under a single prefix, that's
5416 ok.  You will be prompted for the individual locations; this siteprefix
5417 is only used to suggest the defaults.
5418
5419 The default should be fine for most people.
5420
5421 EOM
5422 fn=d~+
5423 rp='Installation prefix to use for add-on modules and utilities?'
5424 : XXX Here might be another good place for an installstyle setting.
5425 case "$siteprefix" in
5426 '') dflt=$prefix ;;
5427 *)  dflt=$siteprefix ;;
5428 esac
5429 . ./getfile
5430 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5431 oldsiteprefix=''
5432 case "$siteprefix" in
5433 '') ;;
5434 *)      case "$ans" in
5435         "$prefix") ;;
5436         *) oldsiteprefix="$prefix";;
5437         esac
5438         ;;
5439 esac
5440 siteprefix="$ans"
5441 siteprefixexp="$ansexp"
5442
5443 : determine where site specific libraries go.
5444 : Usual default is /usr/local/lib/perl5/site_perl/$version
5445 : The default "style" setting is made in installstyle.U
5446 : XXX No longer works with Prefixit stuff.
5447 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5448 case "$sitelib" in
5449 '') case "$installstyle" in
5450         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5451         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5452         esac
5453         ;;
5454 *)      dflt="$sitelib"
5455         ;;
5456 esac
5457 $cat <<EOM
5458
5459 The installation process will create a directory for
5460 site-specific extensions and modules.  Most users find it convenient
5461 to place all site-specific files in this directory rather than in the
5462 main distribution directory.
5463
5464 EOM
5465 fn=d~+
5466 rp='Pathname for the site-specific library files?'
5467 . ./getfile
5468 sitelib="$ans"
5469 sitelibexp="$ansexp"
5470 : Change installation prefix, if necessary.
5471 if $test X"$prefix" != X"$installprefix"; then
5472         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5473 else
5474         installsitelib="$sitelibexp"
5475 fi
5476
5477 : Determine list of previous versions to include in @INC
5478 $cat > getverlist <<EOPL
5479 #!$perl5 -w
5480 use File::Basename;
5481 \$api_versionstring = "$api_versionstring";
5482 \$version = "$version";
5483 \$sitelib = "$sitelib";
5484 \$archname = "$archname";
5485 EOPL
5486         $cat >> getverlist <<'EOPL'
5487 # Can't have leading @ because metaconfig interprets it as a command!
5488 ;@inc_version_list=();
5489 $stem=dirname($sitelib);
5490 # XXX Redo to do opendir/readdir? 
5491 if (-d $stem) {
5492     chdir($stem);
5493     ;@candidates = glob("5.*");
5494 }
5495 else {
5496     ;@candidates = ();
5497 }
5498
5499 # XXX ToDo:  These comparisons must be reworked when two-digit
5500 # subversions come along, so that 5.7.10 compares as greater than
5501 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
5502 # widespread that we can use the built-in version vectors rather
5503 # than reinventing them here.  For 5.6.0, however, we must
5504 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
5505 foreach $d (@candidates) {
5506     if ($d lt $version) {
5507         if ($d ge $api_versionstring) {
5508             unshift(@inc_version_list, "$d/$archname", $d);
5509         }
5510         elsif ($d ge "5.005") {
5511             unshift(@inc_version_list, $d);
5512         }
5513     }
5514     else {
5515         # Skip newer version.  I.e. don't look in
5516         # 5.7.0 if we're installing 5.6.1.
5517     }
5518 }
5519
5520 if (@inc_version_list) {
5521     print join(' ', @inc_version_list);
5522 }
5523 else {
5524     # Blank space to preserve value for next Configure run.
5525     print " ";
5526 }
5527 EOPL
5528 chmod +x getverlist
5529 case "$inc_version_list" in
5530 '')     if test -x "$perl5"; then
5531                 dflt=`$perl5 getverlist`
5532         else
5533                 dflt='none'
5534         fi
5535         ;;
5536 $undef) dflt='none' ;;
5537 *)  dflt="$inc_version_list" ;;
5538 esac
5539 case "$dflt" in
5540 ''|' ') dflt=none ;;
5541 esac
5542 $cat <<'EOM'
5543
5544 In order to ease the process of upgrading, this version of perl 
5545 can be configured to use modules built and installed with earlier 
5546 versions of perl that were installed under $prefix.  Specify here
5547 the list of earlier versions that this version of perl should check.
5548 If Configure detected no earlier versions of perl installed under
5549 $prefix, then the list will be empty.  Answer 'none' to tell perl
5550 to not search earlier versions.
5551
5552 The default should almost always be sensible, so if you're not sure,
5553 just accept the default.
5554 EOM
5555
5556 rp='List of earlier versions to include in @INC?'
5557 . ./myread
5558 case "$ans" in
5559 [Nn]one|''|' ') inc_version_list=' ' ;;
5560 *) inc_version_list="$ans" ;;
5561 esac
5562 case "$inc_version_list" in
5563 ''|' ') 
5564         inc_version_list_init='0';;
5565 *)      inc_version_list_init=`echo $inc_version_list |
5566                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5567         ;;
5568 esac
5569 $rm -f getverlist
5570
5571 : determine whether to install perl also as /usr/bin/perl
5572
5573 echo " "
5574 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5575         $cat <<EOM
5576 Many scripts expect to perl to be installed as /usr/bin/perl.
5577 I can install the perl you are about to compile also as /usr/bin/perl
5578 (in addition to $installbin/perl).
5579 EOM
5580         case "$installusrbinperl" in
5581         "$undef"|[nN]*) dflt='n';;
5582         *)              dflt='y';;
5583         esac
5584         rp="Do you want to install perl as /usr/bin/perl?"
5585         . ./myread
5586         case "$ans" in
5587         [yY]*)  val="$define";;
5588         *)      val="$undef" ;;
5589         esac
5590 else
5591         val="$undef"
5592 fi
5593 set installusrbinperl
5594 eval $setvar
5595
5596 echo " "
5597 echo "Checking for GNU C Library..." >&4
5598 cat >gnulibc.c <<EOM
5599 #include <stdio.h>
5600 int main()
5601 {
5602 #ifdef __GLIBC__
5603     exit(0);
5604 #else
5605     exit(1);
5606 #endif
5607 }
5608 EOM
5609 set gnulibc
5610 if eval $compile_ok && ./gnulibc; then
5611         val="$define"
5612         echo "You are using the GNU C Library"
5613 else
5614         val="$undef"
5615         echo "You are not using the GNU C Library"
5616 fi
5617 $rm -f gnulibc*
5618 set d_gnulibc
5619 eval $setvar
5620
5621 : see if nm is to be used to determine whether a symbol is defined or not
5622 case "$usenm" in
5623 '')
5624         dflt=''
5625         case "$d_gnulibc" in
5626         "$define")
5627                 echo " "
5628                 echo "nm probably won't work on the GNU C Library." >&4
5629                 dflt=n
5630                 ;;
5631         esac
5632         case "$dflt" in
5633         '') 
5634                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5635                         echo " "
5636                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5637                         echo "'nm' won't be sufficient on this sytem." >&4
5638                         dflt=n
5639                 fi
5640                 ;;
5641         esac
5642         case "$dflt" in
5643         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5644                 if $test $dflt -gt 20; then
5645                         dflt=y
5646                 else
5647                         dflt=n
5648                 fi
5649                 ;;
5650         esac
5651         ;;
5652 *)
5653         case "$usenm" in
5654         true|$define) dflt=y;;
5655         *) dflt=n;;
5656         esac
5657         ;;
5658 esac
5659 $cat <<EOM
5660
5661 I can use $nm to extract the symbols from your C libraries. This
5662 is a time consuming task which may generate huge output on the disk (up
5663 to 3 megabytes) but that should make the symbols extraction faster. The
5664 alternative is to skip the 'nm' extraction part and to compile a small
5665 test program instead to determine whether each symbol is present. If
5666 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5667 this may be the best solution.
5668
5669 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5670
5671 EOM
5672 rp="Shall I use $nm to extract C symbols from the libraries?"
5673 . ./myread
5674 case "$ans" in
5675 [Nn]*) usenm=false;;
5676 *) usenm=true;;
5677 esac
5678
5679 runnm=$usenm
5680 case "$reuseval" in
5681 true) runnm=false;;
5682 esac
5683
5684 : nm options which may be necessary
5685 case "$nm_opt" in
5686 '') if $test -f /mach_boot; then
5687                 nm_opt=''       # Mach
5688         elif $test -d /usr/ccs/lib; then
5689                 nm_opt='-p'     # Solaris (and SunOS?)
5690         elif $test -f /dgux; then
5691                 nm_opt='-p'     # DG-UX
5692         elif $test -f /lib64/rld; then
5693                 nm_opt='-p'     # 64-bit Irix
5694         else
5695                 nm_opt=''
5696         fi;;
5697 esac
5698
5699 : nm options which may be necessary for shared libraries but illegal
5700 : for archive libraries.  Thank you, Linux.
5701 case "$nm_so_opt" in
5702 '')     case "$myuname" in
5703         *linux*)
5704                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5705                         nm_so_opt='--dynamic'
5706                 fi
5707                 ;;
5708         esac
5709         ;;
5710 esac
5711
5712 case "$runnm" in
5713 true)
5714 : get list of predefined functions in a handy place
5715 echo " "
5716 case "$libc" in
5717 '') libc=unknown
5718         case "$libs" in
5719         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5720         esac
5721         ;;
5722 esac
5723 libnames='';
5724 case "$libs" in
5725 '') ;;
5726 *)  for thislib in $libs; do
5727         case "$thislib" in
5728         -lc|-lc_s)
5729                 : Handle C library specially below.
5730                 ;;
5731         -l*)
5732                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5733                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5734                         :
5735                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5736                         :
5737                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5738                         :
5739                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5740                         :
5741                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5742                         :
5743                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5744                         :
5745                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5746                         :
5747                 else
5748                         try=''
5749                 fi
5750                 libnames="$libnames $try"
5751                 ;;
5752         *) libnames="$libnames $thislib" ;;
5753         esac
5754         done
5755         ;;
5756 esac
5757 xxx=normal
5758 case "$libc" in
5759 unknown)
5760         set /lib/libc.$so
5761         for xxx in $libpth; do
5762                 $test -r $1 || set $xxx/libc.$so
5763                 : The messy sed command sorts on library version numbers.
5764                 $test -r $1 || \
5765                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5766                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5767                                 h
5768                                 s/[0-9][0-9]*/0000&/g
5769                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5770                                 G
5771                                 s/\n/ /' | \
5772                          sort | $sed -e 's/^.* //'`
5773                 eval set \$$#
5774         done
5775         $test -r $1 || set /usr/ccs/lib/libc.$so
5776         $test -r $1 || set /lib/libsys_s$_a
5777         ;;
5778 *)
5779         set blurfl
5780         ;;
5781 esac
5782 if $test -r "$1"; then
5783         echo "Your (shared) C library seems to be in $1."
5784         libc="$1"
5785 elif $test -r /lib/libc && $test -r /lib/clib; then
5786         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5787         xxx=apollo
5788         libc='/lib/clib /lib/libc'
5789         if $test -r /lib/syslib; then
5790                 echo "(Your math library is in /lib/syslib.)"
5791                 libc="$libc /lib/syslib"
5792         fi
5793 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5794         echo "Your C library seems to be in $libc, as you said before."
5795 elif $test -r $incpath/usr/lib/libc$_a; then
5796         libc=$incpath/usr/lib/libc$_a;
5797         echo "Your C library seems to be in $libc.  That's fine."
5798 elif $test -r /lib/libc$_a; then
5799         libc=/lib/libc$_a;
5800         echo "Your C library seems to be in $libc.  You're normal."
5801 else
5802         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5803                 :
5804         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5805                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5806         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5807                 :
5808         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5809                 :
5810         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5811                 :
5812         else
5813                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5814         fi
5815         if $test -r "$tans"; then
5816                 echo "Your C library seems to be in $tans, of all places."
5817                 libc=$tans
5818         else
5819                 libc='blurfl'
5820         fi
5821 fi
5822 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5823         dflt="$libc"
5824         cat <<EOM
5825
5826 If the guess above is wrong (which it might be if you're using a strange
5827 compiler, or your machine supports multiple models), you can override it here.
5828
5829 EOM
5830 else
5831         dflt=''
5832         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5833         cat >&4 <<EOM
5834 I can't seem to find your C library.  I've looked in the following places:
5835
5836 EOM
5837         $sed 's/^/      /' libpath
5838         cat <<EOM
5839
5840 None of these seems to contain your C library. I need to get its name...
5841
5842 EOM
5843 fi
5844 fn=f
5845 rp='Where is your C library?'
5846 . ./getfile
5847 libc="$ans"
5848
5849 echo " "
5850 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5851 set X `cat libnames`
5852 shift
5853 xxx=files
5854 case $# in 1) xxx=file; esac
5855 echo "Extracting names from the following $xxx for later perusal:" >&4
5856 echo " "
5857 $sed 's/^/      /' libnames >&4
5858 echo " "
5859 $echo $n "This may take a while...$c" >&4
5860
5861 for file in $*; do
5862         case $file in
5863         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5864         *) $nm $nm_opt $file 2>/dev/null;;
5865         esac
5866 done >libc.tmp
5867
5868 $echo $n ".$c"
5869 $grep fprintf libc.tmp > libc.ptf
5870 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5871 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5872 xxx='[ADTSIW]'
5873 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5874         eval $xscan;\
5875         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5876                 eval $xrun
5877 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5878         eval $xscan;\
5879         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5880                 eval $xrun
5881 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5882         eval $xscan;\
5883         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5884                 eval $xrun
5885 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5886         eval $xscan;\
5887         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5888                 eval $xrun
5889 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5890         eval $xscan;\
5891         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5892                 eval $xrun
5893 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5894         eval $xscan;\
5895         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5896                 eval $xrun
5897 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5898                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5899         eval $xscan;\
5900         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5901                 eval $xrun
5902 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5903         eval $xscan;\
5904         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5905                 eval $xrun
5906 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5907         eval $xscan;\
5908         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5909                 eval $xrun
5910 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5911         eval $xscan;\
5912         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5913                 eval $xrun
5914 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5915         eval $xscan;\
5916         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5917                 eval $xrun
5918 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5919         eval $xscan;\
5920         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5921                 eval $xrun
5922 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5923         eval $xscan;\
5924         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5925                 eval $xrun
5926 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5927         eval $xscan;\
5928         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5929                 eval $xrun
5930 else
5931         $nm -p $* 2>/dev/null >libc.tmp
5932         $grep fprintf libc.tmp > libc.ptf
5933         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5934                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5935         then
5936                 nm_opt='-p'
5937                 eval $xrun
5938         else
5939                 echo " "
5940                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5941                 com=''
5942                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5943                         for thisname in $libnames $libc; do
5944                                 $ar t $thisname >>libc.tmp
5945                         done
5946                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5947                         echo "Ok." >&4
5948                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5949                         # Repeat libc to extract forwarders to DLL entries too
5950                         for thisname in $libnames $libc; do
5951                                 $ar tv $thisname >>libc.tmp
5952                                 # Revision 50 of EMX has bug in $ar.
5953                                 # it will not extract forwarders to DLL entries
5954                                 # Use emximp which will extract exactly them.
5955                                 emximp -o tmp.imp $thisname \
5956                                     2>/dev/null && \
5957                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5958                                     < tmp.imp >>libc.tmp
5959                                 $rm tmp.imp
5960                         done
5961                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5962                         echo "Ok." >&4
5963                 else
5964                         echo "$ar didn't seem to work right." >&4
5965                         echo "Maybe this is a Cray...trying bld instead..." >&4
5966                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5967                         then
5968                                 for thisname in $libnames; do
5969                                         bld t $libnames | \
5970                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5971                                         $ar t $thisname >>libc.tmp
5972                                 done
5973                                 echo "Ok." >&4
5974                         else
5975                                 echo "That didn't work either.  Giving up." >&4
5976                                 exit 1
5977                         fi
5978                 fi
5979         fi
5980 fi
5981 nm_extract="$com"
5982 if $test -f /lib/syscalls.exp; then
5983         echo " "
5984         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5985         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5986 fi
5987 ;;
5988 esac
5989 $rm -f libnames libpath
5990
5991 : see if dld is available
5992 set dld.h i_dld
5993 eval $inhdr
5994
5995 : is a C symbol defined?
5996 csym='tlook=$1;
5997 case "$3" in
5998 -v) tf=libc.tmp; tc=""; tdc="";;
5999 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
6000 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
6001 esac;
6002 tx=yes;
6003 case "$reuseval-$4" in
6004 true-) ;;
6005 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
6006 esac;
6007 case "$tx" in
6008 yes)
6009         case "$runnm" in
6010         true)
6011                 if $contains $tlook $tf >/dev/null 2>&1;
6012                 then tval=true;
6013                 else tval=false;
6014                 fi;;
6015         *)
6016                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
6017                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
6018                 then tval=true;
6019                 else tval=false;
6020                 fi;
6021                 $rm -f t t.c;;
6022         esac;;
6023 *)
6024         case "$tval" in
6025         $define) tval=true;;
6026         *) tval=false;;
6027         esac;;
6028 esac;
6029 eval "$2=$tval"'
6030
6031 : define an is-in-libc? function
6032 inlibc='echo " "; td=$define; tu=$undef;
6033 sym=$1; var=$2; eval "was=\$$2";
6034 tx=yes;
6035 case "$reuseval$was" in
6036 true) ;;
6037 true*) tx=no;;
6038 esac;
6039 case "$tx" in
6040 yes)
6041         set $sym tres -f;
6042         eval $csym;
6043         case "$tres" in
6044         true)
6045                 echo "$sym() found." >&4;
6046                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
6047         *)
6048                 echo "$sym() NOT found." >&4;
6049                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
6050         esac;;
6051 *)
6052         case "$was" in
6053         $define) echo "$sym() found." >&4;;
6054         *) echo "$sym() NOT found." >&4;;
6055         esac;;
6056 esac'
6057
6058 : see if dlopen exists
6059 xxx_runnm="$runnm"
6060 runnm=false
6061 set dlopen d_dlopen
6062 eval $inlibc
6063 runnm="$xxx_runnm"
6064
6065 : determine which dynamic loading, if any, to compile in
6066 echo " "
6067 dldir="ext/DynaLoader"
6068 case "$usedl" in
6069 $define|y|true)
6070         dflt='y'
6071         usedl="$define"
6072         ;;
6073 $undef|n|false)
6074         dflt='n'
6075         usedl="$undef"
6076         ;;
6077 *) 
6078         dflt='n'
6079         case "$d_dlopen" in
6080             $define) dflt='y' ;;
6081         esac
6082         case "$i_dld" in
6083             $define) dflt='y' ;;
6084         esac
6085         : Does a dl_xxx.xs file exist for this operating system
6086         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6087         ;;
6088 esac
6089 rp="Do you wish to use dynamic loading?"
6090 . ./myread
6091 usedl="$ans"
6092 case "$ans" in
6093 y*) usedl="$define"
6094         case "$dlsrc" in
6095         '')
6096                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6097                         dflt="$dldir/dl_${osname}.xs"
6098                 elif $test "$d_dlopen" = "$define" ; then
6099                         dflt="$dldir/dl_dlopen.xs"
6100                 elif $test "$i_dld" = "$define" ; then
6101                         dflt="$dldir/dl_dld.xs"
6102                 else
6103                         dflt=''
6104                 fi
6105                 ;;
6106         *)      dflt="$dldir/$dlsrc"
6107                 ;;
6108         esac
6109     echo "The following dynamic loading files are available:"
6110         : Can not go over to $dldir because getfile has path hard-coded in.
6111         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6112         rp="Source file to use for dynamic loading"
6113         fn="fne"
6114         gfpth="$src"
6115         . ./getfile
6116         usedl="$define"
6117         : emulate basename
6118         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6119
6120         $cat << EOM
6121
6122 Some systems may require passing special flags to $cc -c to
6123 compile modules that will be used to create a shared library.
6124 To use no flags, say "none".
6125
6126 EOM
6127     case "$cccdlflags" in
6128     '') case "$gccversion" in
6129                 '') case "$osname" in
6130                         hpux)   dflt='+z' ;;
6131                         next)   dflt='none' ;;
6132                         irix*)  dflt='-KPIC' ;;
6133                         svr4*|esix*|solaris) dflt='-KPIC' ;;
6134                         sunos)  dflt='-pic' ;;
6135                         *)      dflt='none' ;;
6136                     esac
6137                         ;;
6138                 *)  case "$osname" in
6139                         svr4*|esix*|solaris) dflt='-fPIC' ;;
6140                         *)      dflt='-fpic' ;;
6141                     esac ;;
6142             esac ;;
6143         ' ') dflt='none' ;;
6144     *)  dflt="$cccdlflags" ;;
6145     esac
6146     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6147     . ./myread
6148     case "$ans" in
6149     none) cccdlflags=' ' ;;
6150     *) cccdlflags="$ans" ;;
6151     esac
6152
6153     cat << EOM
6154
6155 Some systems use ld to create libraries that can be dynamically loaded,
6156 while other systems (such as those using ELF) use $cc.
6157
6158 EOM
6159         case "$ld" in
6160         '')     $cat >try.c <<'EOM'
6161 /* Test for whether ELF binaries are produced */
6162 #include <fcntl.h>
6163 #include <stdlib.h>
6164 int main() {
6165         char b[4];
6166         int i = open("a.out",O_RDONLY);
6167         if(i == -1) 
6168                 exit(1); /* fail */
6169         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6170                 exit(0); /* succeed (yes, it's ELF) */
6171         else
6172                 exit(1); /* fail */
6173 }
6174 EOM
6175                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6176                         cat <<EOM
6177 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6178 EOM
6179                         dflt="$cc"
6180                 else
6181                         echo "I'll use ld to build dynamic libraries."
6182                         dflt='ld'
6183                 fi
6184                 rm -f try.c a.out
6185                 ;;
6186         *)      dflt="$ld"
6187                 ;;
6188         esac
6189
6190     rp="What command should be used to create dynamic libraries?"
6191     . ./myread
6192         ld="$ans"
6193
6194     cat << EOM
6195
6196 Some systems may require passing special flags to $ld to create a
6197 library that can be dynamically loaded.  If your ld flags include
6198 -L/other/path options to locate libraries outside your loader's normal
6199 search path, you may need to specify those -L options here as well.  To
6200 use no flags, say "none".
6201
6202 EOM
6203     case "$lddlflags" in
6204     '') case "$osname" in
6205                         beos) dflt='-nostart' ;;
6206                         hpux) dflt='-b';
6207                               case "$gccversion" in
6208                               '') dflt="$dflt +vnocompatwarnings" ;;
6209                               esac
6210                               ;;        
6211                         linux|irix*)    dflt='-shared' ;;
6212                         next)  dflt='none' ;;
6213                         solaris) dflt='-G' ;;
6214                         sunos) dflt='-assert nodefinitions' ;;
6215                         svr4*|esix*) dflt="-G $ldflags" ;;
6216                 *)     dflt='none' ;;
6217                         esac
6218                         ;;
6219     *) dflt="$lddlflags" ;;
6220     esac
6221
6222         : Try to guess additional flags to pick up local libraries.
6223         : Be careful not to append to a plain 'none'
6224         case "$dflt" in
6225         none) dflt='' ;;
6226         esac
6227         for thisflag in $ldflags; do
6228                 case "$thisflag" in
6229                 -L*)
6230                         case " $dflt " in
6231                         *" $thisflag "*) ;;
6232                         *) dflt="$dflt $thisflag" ;;
6233                         esac
6234                         ;;
6235                 esac
6236         done
6237
6238         case "$dflt" in
6239         ''|' ') dflt='none' ;;
6240         esac
6241
6242     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6243     . ./myread
6244     case "$ans" in
6245     none) lddlflags=' ' ;;
6246     *) lddlflags="$ans" ;;
6247     esac
6248
6249         cat <<EOM
6250
6251 Some systems may require passing special flags to $cc to indicate that
6252 the resulting executable will use dynamic linking.  To use no flags,
6253 say "none".
6254
6255 EOM
6256     case "$ccdlflags" in
6257     '') case "$osname" in
6258                 hpux)   dflt='-Wl,-E' ;;
6259                 linux)  dflt='-rdynamic' ;;
6260                 next)   dflt='none' ;;
6261                 sunos)  dflt='none' ;;
6262                 *)      dflt='none' ;;
6263             esac ;;
6264     ' ')  dflt='none' ;;
6265     *)  dflt="$ccdlflags" ;;
6266     esac
6267     rp="Any special flags to pass to $cc to use dynamic linking?"
6268     . ./myread
6269     case "$ans" in
6270     none) ccdlflags=' ' ;;
6271     *) ccdlflags="$ans" ;;
6272     esac
6273     ;;
6274 *)  usedl="$undef"
6275         ld='ld'
6276     dlsrc='dl_none.xs'
6277     lddlflags=''
6278     ccdlflags=''
6279     ;;
6280 esac
6281
6282 also=''
6283 case "$usedl" in
6284 $undef)
6285         # No dynamic loading being used, so don't bother even to prompt.
6286         useshrplib='false'
6287         ;;
6288 *)      case "$useshrplib" in
6289         '')     case "$osname" in
6290                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6291                         dflt=y
6292                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6293                         ;;
6294                 next*)
6295                         case "$osvers" in
6296                         4*)     dflt=y
6297                                 also='Building a shared libperl is needed for MAB support.'
6298                                 ;;
6299                         *)      dflt=n
6300                                 ;;
6301                         esac
6302                         ;;
6303                 *)      dflt=n
6304                         ;;
6305                 esac
6306                 ;;
6307         $define|true|[Yy]*)
6308                 dflt=y
6309                 ;;
6310         *)      dflt=n
6311                 ;;
6312         esac
6313         $cat << EOM
6314
6315 The perl executable is normally obtained by linking perlmain.c with
6316 libperl${_a}, any static extensions (usually just DynaLoader), and
6317 any other libraries needed on this system (such as -lm, etc.).  Since
6318 your system supports dynamic loading, it is probably possible to build
6319 a shared libperl.$so.  If you will have more than one executable linked
6320 to libperl.$so, this will significantly reduce the size of each
6321 executable, but it may have a noticeable affect on performance.  The
6322 default is probably sensible for your system.
6323 $also
6324
6325 EOM
6326         rp="Build a shared libperl.$so (y/n)"
6327         . ./myread
6328         case "$ans" in
6329         true|$define|[Yy]*)
6330                 useshrplib='true'  ;;
6331         *)      useshrplib='false' ;;
6332         esac
6333         ;;
6334 esac
6335
6336 case "$useshrplib" in
6337 true)
6338         case "$libperl" in
6339         '')
6340                 # Figure out a good name for libperl.so.  Since it gets stored in
6341                 # a version-specific architecture-dependent library, the version
6342                 # number isn't really that important, except for making cc/ld happy.
6343                 #
6344                 # A name such as libperl.so.3.1
6345                 majmin="libperl.$so.$patchlevel.$subversion"
6346                 # A name such as libperl.so.301
6347                 majonly=`echo $patchlevel $subversion |
6348                         $awk '{printf "%d%02d", $1, $2}'`
6349                 majonly=libperl.$so.$majonly
6350                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6351                 # rely on figuring it out from the naming of libc.
6352                 case "${osname}${osvers}" in
6353                 next4*)
6354                         dflt=libperl.5.$so
6355                         # XXX How handle the --version stuff for MAB?
6356                         ;;
6357                 linux*)  # ld won't link with a bare -lperl otherwise.
6358                         dflt=libperl.$so
6359                         ;;
6360                 cygwin*) # include version
6361                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6362                         ;;
6363                 *)      # Try to guess based on whether libc has major.minor.
6364                         case "$libc" in
6365                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6366                         *libc.$so.[0-9]*) dflt=$majonly ;;
6367                         *)      dflt=libperl.$so ;;
6368                         esac
6369                         ;;
6370                 esac
6371                 ;;
6372         *)      dflt=$libperl
6373                 ;;
6374         esac
6375         cat << EOM
6376
6377 I need to select a good name for the shared libperl.  If your system uses
6378 library names with major and minor numbers, then you might want something
6379 like $majmin.  Alternatively, if your system uses a single version
6380 number for shared libraries, then you might want to use $majonly.
6381 Or, your system might be quite happy with a simple libperl.$so.
6382
6383 Since the shared libperl will get installed into a version-specific
6384 architecture-dependent directory, the version number of the shared perl
6385 library probably isn't important, so the default should be o.k.
6386
6387 EOM
6388         rp='What name do you want to give to the shared libperl?'
6389         . ./myread
6390         libperl=$ans
6391         echo "Ok, I'll use $libperl"
6392         ;;
6393 *)
6394         libperl="libperl${_a}"
6395         ;;
6396 esac
6397
6398 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6399 case "$shrpdir" in
6400 '') ;;
6401 *)      $cat >&4 <<EOM
6402 WARNING:  Use of the shrpdir variable for the installation location of
6403 the shared $libperl is not supported.  It was never documented and
6404 will not work in this version.  Let me (perlbug@perl.com)
6405 know of any problems this may cause.
6406
6407 EOM
6408         case "$shrpdir" in
6409         "$archlibexp/CORE")
6410                 $cat >&4 <<EOM
6411 But your current setting of $shrpdir is
6412 the default anyway, so it's harmless.
6413 EOM
6414                 ;;
6415         *)
6416                 $cat >&4 <<EOM
6417 Further, your current attempted setting of $shrpdir
6418 conflicts with the value of $archlibexp/CORE
6419 that installperl will use.
6420 EOM
6421                 ;;
6422         esac
6423         ;;
6424 esac
6425
6426 # How will the perl executable find the installed shared $libperl?
6427 # Add $xxx to ccdlflags.
6428 # If we can't figure out a command-line option, use $shrpenv to
6429 # set env LD_RUN_PATH.  The main perl makefile uses this.
6430 shrpdir=$archlibexp/CORE
6431 xxx=''
6432 tmp_shrpenv=''
6433 if "$useshrplib"; then
6434     case "$osname" in 
6435         aix)
6436                 # We'll set it in Makefile.SH...
6437                 ;;
6438         solaris|netbsd)
6439                 xxx="-R $shrpdir"
6440                 ;;
6441         freebsd)
6442                 xxx="-Wl,-R$shrpdir"
6443                 ;;
6444         linux|irix*|dec_osf)
6445                 xxx="-Wl,-rpath,$shrpdir"
6446                 ;;
6447         next)
6448                 # next doesn't like the default...
6449                 ;;
6450         beos)
6451                 # beos doesn't like the default, either.
6452                 ;;
6453         hpux*)
6454                 # hpux doesn't like the default, either.
6455                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6456                 ;;
6457         *)
6458                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6459                 ;;
6460         esac
6461         case "$xxx" in
6462         '') ;;
6463         *)      
6464                 # Only add $xxx if it isn't already in ccdlflags.
6465                 case " $ccdlflags " in
6466                 *" $xxx "*)     ;;
6467                 *)      ccdlflags="$ccdlflags $xxx"
6468                         cat <<EOM >&4
6469
6470 Adding $xxx to the flags
6471 passed to $ld so that the perl executable will find the 
6472 installed shared $libperl.
6473
6474 EOM
6475                         ;;
6476                 esac
6477                 ;;
6478         esac
6479 fi
6480 # Fix ccdlflags in AIX for building external extensions.
6481 # (For building Perl itself bare -bE:perl.exp is needed,
6482 #  Makefile.SH takes care of this.)
6483 case "$osname" in
6484 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6485 esac
6486 # Respect a hint or command-line value.
6487 case "$shrpenv" in
6488 '') shrpenv="$tmp_shrpenv" ;;
6489 esac
6490 case "$ldlibpthname" in
6491 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6492 none)   ldlibpthname='' ;;
6493 esac
6494
6495 : determine where manual pages go
6496 set man1dir man1dir none
6497 eval $prefixit
6498 $cat <<EOM
6499
6500 $spackage has manual pages available in source form.
6501 EOM
6502 case "$nroff" in
6503 nroff)
6504         echo "However, you don't have nroff, so they're probably useless to you."
6505         case "$man1dir" in
6506         '') man1dir="none";;
6507         esac;;
6508 esac
6509 echo "If you don't want the manual sources installed, answer 'none'."
6510 case "$man1dir" in
6511 ' ') dflt=none
6512         ;;
6513 '')
6514         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6515         lookpath="$lookpath $prefixexp/man/p_man/man1"
6516         lookpath="$lookpath $prefixexp/man/u_man/man1"
6517         lookpath="$lookpath $prefixexp/man/man.1"
6518         case "$sysman" in
6519         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6520         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6521         esac
6522         set dflt
6523         eval $prefixup
6524         ;;
6525 *)  dflt="$man1dir"
6526         ;;
6527 esac
6528 echo " "
6529 fn=dn+~
6530 rp="Where do the main $spackage manual pages (source) go?"
6531 . ./getfile
6532 if $test "X$man1direxp" != "X$ansexp"; then
6533         installman1dir=''
6534 fi
6535 man1dir="$ans"
6536 man1direxp="$ansexp"
6537 case "$man1dir" in
6538 '')     man1dir=' '
6539         installman1dir='';;
6540 esac
6541
6542 : Change installation prefix, if necessary.
6543 if $test X"$prefix" != X"$installprefix"; then
6544         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6545 else
6546         installman1dir="$man1direxp"
6547 fi
6548
6549 : What suffix to use on installed man pages
6550
6551 case "$man1dir" in
6552 ' ')
6553         man1ext='0'
6554         ;;
6555 *)
6556         rp="What suffix should be used for the main $spackage man pages?"
6557         case "$man1ext" in
6558         '')     case "$man1dir" in
6559                 *1)  dflt=1 ;;
6560                 *1p) dflt=1p ;;
6561                 *1pm) dflt=1pm ;;
6562                 *l) dflt=l;;
6563                 *n) dflt=n;;
6564                 *o) dflt=o;;
6565                 *p) dflt=p;;
6566                 *C) dflt=C;;
6567                 *L) dflt=L;;
6568                 *L1) dflt=L1;;
6569                 *) dflt=1;;
6570                 esac
6571                 ;;
6572         *)      dflt="$man1ext";;
6573         esac
6574         . ./myread
6575         man1ext="$ans"
6576         ;;
6577 esac
6578
6579 : see if we can have long filenames
6580 echo " "
6581 rmlist="$rmlist /tmp/cf$$"
6582 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
6583 first=123456789abcdef
6584 second=/tmp/cf$$/$first
6585 $rm -f $first $second
6586 if (echo hi >$first) 2>/dev/null; then
6587         if $test -f 123456789abcde; then
6588                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6589                 val="$undef"
6590         else
6591                 if (echo hi >$second) 2>/dev/null; then
6592                         if $test -f /tmp/cf$$/123456789abcde; then
6593                                 $cat <<'EOM'
6594 That's peculiar... You can have filenames longer than 14 characters, but only
6595 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
6596 I shall consider your system cannot support long filenames at all.
6597 EOM
6598                                 val="$undef"
6599                         else
6600                                 echo 'You can have filenames longer than 14 characters.' >&4
6601                                 val="$define"
6602                         fi
6603                 else
6604                         $cat <<'EOM'
6605 How confusing! Some of your filesystems are sane enough to allow filenames
6606 longer than 14 characters but some others like /tmp can't even think about them.
6607 So, for now on, I shall assume your kernel does not allow them at all.
6608 EOM
6609                         val="$undef"
6610                 fi
6611         fi
6612 else
6613         $cat <<'EOM'
6614 You can't have filenames longer than 14 chars.  You can't even think about them!
6615 EOM
6616         val="$undef"
6617 fi 
6618 set d_flexfnam
6619 eval $setvar
6620 $rm -rf /tmp/cf$$ 123456789abcde*
6621
6622 : determine where library module manual pages go
6623 set man3dir man3dir none
6624 eval $prefixit
6625 $cat <<EOM
6626
6627 $spackage has manual pages for many of the library modules.
6628 EOM
6629
6630 case "$nroff" in
6631 nroff)
6632         $cat <<'EOM'
6633 However, you don't have nroff, so they're probably useless to you.
6634 EOM
6635         case "$man3dir" in
6636         '') man3dir="none";;
6637         esac;;
6638 esac
6639
6640 case "$d_flexfnam" in
6641 undef)
6642         $cat <<'EOM'
6643 However, your system can't handle the long file names like File::Basename.3. 
6644 EOM
6645         case "$man3dir" in
6646         '') man3dir="none";;
6647         esac;;
6648 esac
6649
6650 echo "If you don't want the manual sources installed, answer 'none'."
6651 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6652 case "$man3dir" in
6653 '')     dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6654         if $test -d "$privlib/man/man3"; then
6655                 cat <<EOM >&4
6656
6657 WARNING:  Previous versions of perl installed man3 pages into
6658 $privlib/man/man3.  This version will suggest a 
6659 new default of $dflt.  
6660 EOM
6661                 tdflt=$dflt
6662                 dflt='n'
6663                 rp='Do you wish to preserve the old behavior?(y/n)'
6664                 . ./myread
6665                 case "$ans" in
6666                 y*) dflt="$privlib/man/man3" ;;
6667                 *)  dflt=$tdflt ;;
6668                 esac
6669     fi
6670         ;;
6671 ' ') dflt=none;;
6672 *)      dflt="$man3dir" ;;
6673 esac
6674 echo " "
6675 fn=dn+~
6676 rp="Where do the $package library man pages (source) go?"
6677 . ./getfile
6678 man3dir="$ans"
6679 man3direxp="$ansexp"
6680 case "$man1dir" in
6681 '')     man3dir=' '
6682         installman3dir='';;
6683 esac
6684
6685 : Change installation prefix, if necessary.
6686 if $test X"$prefix" != X"$installprefix"; then
6687         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6688 else
6689         installman3dir="$man3direxp"
6690 fi
6691
6692 : What suffix to use on installed man pages
6693 case "$man3dir" in
6694 ' ')
6695         man3ext='0'
6696         ;;
6697 *)
6698         rp="What suffix should be used for the $package library man pages?"
6699         case "$man3ext" in
6700         '')     case "$man3dir" in
6701                 *3)  dflt=3 ;;
6702                 *3p) dflt=3p ;;
6703                 *3pm) dflt=3pm ;;
6704                 *l) dflt=l;;
6705                 *n) dflt=n;;
6706                 *o) dflt=o;;
6707                 *p) dflt=p;;
6708                 *C) dflt=C;;
6709                 *L) dflt=L;;
6710                 *L3) dflt=L3;;
6711                 *) dflt=3;;
6712                 esac
6713                 ;;
6714         *)      dflt="$man3ext";;
6715         esac
6716         . ./myread
6717         man3ext="$ans"
6718         ;;
6719 esac
6720
6721 : see if we have to deal with yellow pages, now NIS.
6722 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6723         if $test -f /usr/etc/nibindd; then
6724                 echo " "
6725                 echo "I'm fairly confident you're on a NeXT."
6726                 echo " "
6727                 rp='Do you get the hosts file via NetInfo?'
6728                 dflt=y
6729                 case "$hostcat" in
6730                 nidump*) ;;
6731                 '') ;;
6732                 *) dflt=n;;
6733                 esac
6734                 . ./myread
6735                 case "$ans" in
6736                 y*) hostcat='nidump hosts .';;
6737                 *)      case "$hostcat" in
6738                         nidump*) hostcat='';;
6739                         esac
6740                         ;;
6741                 esac
6742         fi
6743         case "$hostcat" in
6744         nidump*) ;;
6745         *)
6746                 case "$hostcat" in
6747                 *ypcat*) dflt=y;;
6748                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6749                                 dflt=y
6750                         else
6751                                 dflt=n
6752                         fi;;
6753                 *) dflt=n;;
6754                 esac
6755                 echo " "
6756                 rp='Are you getting the hosts file via yellow pages?'
6757                 . ./myread
6758                 case "$ans" in
6759                 y*) hostcat='ypcat hosts';;
6760                 *) hostcat='cat /etc/hosts';;
6761                 esac
6762                 ;;
6763         esac
6764 fi
6765 case "$hostcat" in
6766 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6767 esac
6768 case "$groupcat" in
6769 '') test -f /etc/group && groupcat='cat /etc/group';;
6770 esac
6771 case "$passcat" in
6772 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6773 esac
6774
6775 : now get the host name
6776 echo " "
6777 echo "Figuring out host name..." >&4
6778 case "$myhostname" in
6779 '') cont=true
6780         echo 'Maybe "hostname" will work...'
6781         if tans=`sh -c hostname 2>&1` ; then
6782                 myhostname=$tans
6783                 phostname=hostname
6784                 cont=''
6785         fi
6786         ;;
6787 *) cont='';;
6788 esac
6789 if $test "$cont"; then
6790         if ./xenix; then
6791                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
6792                 if tans=`cat /etc/systemid 2>&1` ; then
6793                         myhostname=$tans
6794                         phostname='cat /etc/systemid'
6795                         echo "Whadyaknow.  Xenix always was a bit strange..."
6796                         cont=''
6797                 fi
6798         elif $test -r /etc/systemid; then
6799                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6800         fi
6801 fi
6802 if $test "$cont"; then
6803         echo 'No, maybe "uuname -l" will work...'
6804         if tans=`sh -c 'uuname -l' 2>&1` ; then
6805                 myhostname=$tans
6806                 phostname='uuname -l'
6807         else
6808                 echo 'Strange.  Maybe "uname -n" will work...'
6809                 if tans=`sh -c 'uname -n' 2>&1` ; then
6810                         myhostname=$tans
6811                         phostname='uname -n'
6812                 else
6813                         echo 'Oh well, maybe I can mine it out of whoami.h...'
6814                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6815                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6816                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6817                         else
6818                                 case "$myhostname" in
6819                                 '') echo "Does this machine have an identity crisis or something?"
6820                                         phostname='';;
6821                                 *)
6822                                         echo "Well, you said $myhostname before..."
6823                                         phostname='echo $myhostname';;
6824                                 esac
6825                         fi
6826                 fi
6827         fi
6828 fi
6829 : you do not want to know about this
6830 set $myhostname
6831 myhostname=$1
6832
6833 : verify guess
6834 if $test "$myhostname" ; then
6835         dflt=y
6836         rp='Your host name appears to be "'$myhostname'".'" Right?"
6837         . ./myread
6838         case "$ans" in
6839         y*) ;;
6840         *) myhostname='';;
6841         esac
6842 fi
6843
6844 : bad guess or no guess
6845 while $test "X$myhostname" = X ; do
6846         dflt=''
6847         rp="Please type the (one word) name of your host:"
6848         . ./myread
6849         myhostname="$ans"
6850 done
6851
6852 : translate upper to lower if necessary
6853 case "$myhostname" in
6854 *[A-Z]*)
6855         echo "(Normalizing case in your host name)"
6856         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6857         ;;
6858 esac
6859
6860 case "$myhostname" in
6861 *.*)
6862         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6863         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6864         echo "(Trimming domain name from host name--host name is now $myhostname)"
6865         ;;
6866 *) case "$mydomain" in
6867         '')
6868                 {
6869                         test "X$hostcat" = "Xypcat hosts" &&
6870                         ypmatch "$myhostname" hosts 2>/dev/null |\
6871                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
6872                         $test -s hosts
6873                 } || {
6874                         test "X$hostcat" != "X" &&
6875                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
6876                                         /[       ]$myhostname[  . ]/p" > hosts
6877                 }
6878                 tmp_re="[       . ]"
6879                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
6880                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
6881                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6882                         hosts | $sort | $uniq | \
6883                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6884                 case `$echo X$dflt` in
6885                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
6886                         dflt=.
6887                         ;;
6888                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6889                         ;;
6890                 esac
6891                 case "$dflt" in
6892                 .)
6893                         tans=`./loc resolv.conf X /etc /usr/etc`
6894                         if $test -f "$tans"; then
6895                                 echo "(Attempting domain name extraction from $tans)"
6896                                 dflt=.`$sed -n -e 's/   / /g' \
6897                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
6898                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6899                                 case "$dflt" in
6900                                 .) dflt=.`$sed -n -e 's/        / /g' \
6901                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
6902                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6903                                         ;;
6904                                 esac
6905                         fi
6906                         ;;
6907                 esac
6908                 case "$dflt" in
6909                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6910                         dflt=.`sh -c domainname 2>/dev/null`
6911                         case "$dflt" in
6912                         '') dflt='.';;
6913                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6914                         esac
6915                         ;;
6916                 esac
6917                 case "$dflt" in
6918                 .) echo "(Lost all hope -- silly guess then)"
6919                         dflt='.uucp'
6920                         ;;
6921                 esac
6922                 $rm -f hosts
6923                 ;;
6924         *) dflt="$mydomain";;
6925         esac;;
6926 esac
6927 echo " "
6928 rp="What is your domain name?"
6929 . ./myread
6930 tans="$ans"
6931 case "$ans" in
6932 '') ;;
6933 .*) ;;
6934 *) tans=".$tans";;
6935 esac
6936 mydomain="$tans"
6937
6938 : translate upper to lower if necessary
6939 case "$mydomain" in
6940 *[A-Z]*)
6941         echo "(Normalizing case in your domain name)"
6942         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6943         ;;
6944 esac
6945
6946 : a little sanity check here
6947 case "$phostname" in
6948 '') ;;
6949 *)
6950         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6951         $myhostname$mydomain|$myhostname) ;;
6952         *)
6953                 case "$phostname" in
6954                 sed*)
6955                         echo "(That doesn't agree with your whoami.h file, by the way.)"
6956                         ;;
6957                 *)
6958                         echo "(That doesn't agree with your $phostname command, by the way.)"
6959                         ;;
6960                 esac
6961         ;;
6962         esac
6963         ;;
6964 esac
6965
6966 $cat <<EOM
6967
6968 I need to get your e-mail address in Internet format if possible, i.e.
6969 something like user@host.domain. Please answer accurately since I have
6970 no easy means to double check it. The default value provided below
6971 is most probably close to reality but may not be valid from outside
6972 your organization...
6973
6974 EOM
6975 cont=x
6976 while test "$cont"; do
6977         case "$cf_email" in
6978         '') dflt="$cf_by@$myhostname$mydomain";;
6979         *) dflt="$cf_email";;
6980         esac
6981         rp='What is your e-mail address?'
6982         . ./myread
6983         cf_email="$ans"
6984         case "$cf_email" in
6985         *@*.*) cont='' ;;
6986         *)
6987                 rp='Address does not look like an Internet one.  Use it anyway?'
6988                 case "$fastread" in
6989                 yes) dflt=y ;;
6990                 *) dflt=n ;;
6991                 esac
6992                 . ./myread
6993                 case "$ans" in
6994                 y*) cont='' ;;
6995                 *) echo " " ;;
6996                 esac
6997                 ;;
6998         esac
6999 done
7000
7001 $cat <<EOM
7002
7003 If you or somebody else will be maintaining perl at your site, please
7004 fill in the correct e-mail address here so that they may be contacted
7005 if necessary. Currently, the "perlbug" program included with perl
7006 will send mail to this address in addition to perlbug@perl.com. You may
7007 enter "none" for no administrator.
7008
7009 EOM
7010 case "$perladmin" in
7011 '') dflt="$cf_email";;
7012 *) dflt="$perladmin";;
7013 esac
7014 rp='Perl administrator e-mail address'
7015 . ./myread
7016 perladmin="$ans"
7017
7018 : figure out how to guarantee perl startup
7019 case "$startperl" in
7020 '')
7021         case "$sharpbang" in
7022         *!)
7023                 $cat <<EOH
7024
7025 I can use the #! construct to start perl on your system. This will
7026 make startup of perl scripts faster, but may cause problems if you
7027 want to share those scripts and perl is not in a standard place
7028 ($binexp/perl) on all your platforms. The alternative is to force
7029 a shell by starting the script with a single ':' character.
7030
7031 EOH
7032                 dflt="$binexp/perl"
7033                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7034                 . ./myread
7035                 case "$ans" in
7036                 none)   startperl=": # use perl";;
7037                 *)      startperl="#!$ans"
7038                         if $test 30 -lt `echo "$ans" | wc -c`; then
7039                                 $cat >&4 <<EOM
7040
7041 WARNING:  Some systems limit the #! command to 32 characters.
7042 If you experience difficulty running Perl scripts with #!, try
7043 installing Perl in a directory with a shorter pathname.
7044
7045 EOM
7046                         fi ;;
7047                 esac
7048                 ;;
7049         *) startperl=": # use perl"
7050                 ;;
7051         esac
7052         ;;
7053 esac
7054 echo "I'll use $startperl to start perl scripts."
7055
7056 : figure best path for perl in scripts
7057 case "$perlpath" in
7058 '')
7059         perlpath="$binexp/perl"
7060         case "$startperl" in
7061         *!*) ;;
7062         *)
7063                 $cat <<EOH
7064
7065 I will use the "eval 'exec'" idiom to start Perl on your system.
7066 I can use the full path of your Perl binary for this purpose, but
7067 doing so may cause problems if you want to share those scripts and
7068 Perl is not always in a standard place ($binexp/perl).
7069
7070 EOH
7071                 dflt="$binexp/perl"
7072                 rp="What path shall I use in \"eval 'exec'\"?"
7073                 . ./myread
7074                 perlpath="$ans"
7075                 ;;
7076         esac
7077         ;;
7078 esac
7079 case "$startperl" in
7080 *!*)    ;;
7081 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7082 esac
7083
7084 : determine where public executable scripts go
7085 set scriptdir scriptdir
7086 eval $prefixit
7087 case "$scriptdir" in
7088 '')
7089         dflt="$bin"
7090         : guess some guesses
7091         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7092         $test -d /usr/share/bin     && dflt=/usr/share/bin
7093         $test -d /usr/local/script  && dflt=/usr/local/script
7094         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7095         $test -d $prefixexp/script  && dflt=$prefixexp/script
7096         set dflt
7097         eval $prefixup
7098         ;;
7099 *)  dflt="$scriptdir"
7100         ;;
7101 esac
7102 $cat <<EOM
7103  
7104 Some installations have a separate directory just for executable scripts so
7105 that they can mount it across multiple architectures but keep the scripts in
7106 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7107 Or you might just lump your scripts in with all your other executables.
7108  
7109 EOM
7110 fn=d~
7111 rp='Where do you keep publicly executable scripts?'
7112 . ./getfile
7113 if $test "X$ansexp" != "X$scriptdirexp"; then
7114         installscript=''
7115 fi
7116 scriptdir="$ans"
7117 scriptdirexp="$ansexp"
7118 : Change installation prefix, if necessary.
7119 if $test X"$prefix" != X"$installprefix"; then
7120         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7121 else
7122         installscript="$scriptdirexp"
7123 fi
7124
7125 : determine where site specific architecture-dependent libraries go.
7126 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
7127 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
7128 : sitelib may have an optional trailing /share.
7129 case "$sitearch" in
7130 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
7131         dflt="$dflt/$archname"
7132         ;;
7133 *)      dflt="$sitearch"
7134         ;;
7135 esac
7136 set sitearch sitearch none
7137 eval $prefixit
7138 $cat <<EOM
7139
7140 The installation process will also create a directory for
7141 architecture-dependent site-specific extensions and modules.
7142
7143 EOM
7144 fn=d~+
7145 rp='Pathname for the site-specific architecture-dependent library files?'
7146 . ./getfile
7147 sitearch="$ans"
7148 sitearchexp="$ansexp"
7149 : Change installation prefix, if necessary.
7150 if $test X"$prefix" != X"$installprefix"; then
7151         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
7152 else
7153         installsitearch="$sitearchexp"
7154 fi
7155
7156 : determine where add-on public executables go
7157 case "$sitebin" in
7158 '')     dflt=$siteprefix/bin ;;
7159 *)      dflt=$sitebin ;;
7160 esac
7161 fn=d~
7162 rp='Pathname where the add-on public executables should be installed?'
7163 . ./getfile
7164 sitebin="$ans"
7165 sitebinexp="$ansexp"
7166 : Change installation prefix, if necessary.
7167 if $test X"$prefix" != X"$installprefix"; then
7168         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7169 else
7170         installsitebin="$sitebinexp"
7171 fi
7172
7173 : see if sqrtl exists
7174 set sqrtl d_sqrtl
7175 eval $inlibc
7176
7177 case "$ccflags" in
7178 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7179 esac
7180
7181 case "$uselongdouble" in
7182 $define|true|[yY]*)     dflt='y';;
7183 *) dflt='n';;
7184 esac
7185 cat <<EOM
7186
7187 Perl can be built to take advantage of long doubles which
7188 (if available) may give more accuracy and range for floating point numbers.
7189
7190 If this doesn't make any sense to you, just accept the default '$dflt'.
7191 EOM
7192 rp='Try to use long doubles if available?'
7193 . ./myread
7194 case "$ans" in
7195 y|Y)    val="$define"   ;;
7196 *)      val="$undef"    ;;
7197 esac
7198 set uselongdouble
7199 eval $setvar
7200
7201 case "$uselongdouble" in
7202 true|[yY]*) uselongdouble="$define" ;;
7203 esac
7204
7205 case "$uselongdouble" in
7206 $define)
7207 : Look for a hint-file generated 'call-back-unit'.  If the
7208 : user has specified that long doubles should be used,
7209 : we may need to set or change some other defaults.
7210         if $test -f uselongdouble.cbu; then
7211                 echo "Your platform has some specific hints for long doubles, using them..."
7212                 . ./uselongdouble.cbu
7213         else
7214                 $cat <<EOM
7215 (Your platform doesn't have any specific hints for long doubles.)
7216 EOM
7217         fi
7218         ;;
7219 esac
7220
7221 case "$uselongdouble:$d_sqrtl" in
7222 $define:$undef)
7223                 $cat <<EOM >&4
7224
7225 *** You requested the use of long doubles but you do not seem to have
7226 *** the mathematic functions for long doubles.  I'm disabling the use
7227 *** of long doubles.
7228
7229 EOM
7230         uselongdouble=$undef
7231         ;;
7232 esac
7233
7234 case "$useperlio" in
7235 $define|true|[yY]*)     dflt='y';;
7236 *) dflt='n';;
7237 esac
7238 cat <<EOM
7239
7240 Previous version of $package used the standard IO mechanisms as defined
7241 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7242 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7243 the default.  This abstraction layer can use AT&T's sfio (if you already
7244 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7245 problems with some extension modules.  Using PerlIO with stdio is safe,
7246 but it is slower than plain stdio and therefore is not the default.
7247
7248 If this doesn't make any sense to you, just accept the default '$dflt'.
7249 EOM
7250 rp='Use the experimental PerlIO abstraction layer?'
7251 . ./myread
7252 case "$ans" in
7253 y|Y) 
7254         val="$define"
7255         ;;     
7256 *)      
7257         echo "Ok, doing things the stdio way"
7258         val="$undef"
7259         ;;
7260 esac
7261 set useperlio
7262 eval $setvar 
7263
7264 case "$vendorprefix" in
7265 '')     d_vendorbin="$undef"
7266         vendorbin=''
7267         vendorbinexp=''
7268         ;;
7269 *)      d_vendorbin="$define"
7270         : determine where vendor-supplied executables go.
7271         case "$vendorbin" in
7272         '') dflt=$vendorprefix/bin ;;
7273         *)      dflt="$vendorbin" ;;
7274         esac
7275         fn=d~+
7276         rp='Pathname for the vendor-supplied executables directory?'
7277         . ./getfile
7278         vendorbin="$ans"
7279         vendorbinexp="$ansexp"
7280         ;;
7281 esac
7282 : Change installation prefix, if necessary.
7283 if $test X"$prefix" != X"$installprefix"; then
7284         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7285 else
7286         installvendorbin="$vendorbinexp"
7287 fi
7288
7289 : see if qgcvt exists
7290 set qgcvt d_qgcvt
7291 eval $inlibc
7292
7293 : check for length of double
7294 echo " "
7295 case "$doublesize" in
7296 '')
7297         echo "Checking to see how big your double precision numbers are..." >&4
7298         $cat >try.c <<'EOCP'
7299 #include <stdio.h>
7300 int main()
7301 {
7302     printf("%d\n", (int)sizeof(double));
7303     exit(0);
7304 }
7305 EOCP
7306         set try
7307         if eval $compile_ok; then
7308                 doublesize=`./try`
7309                 echo "Your double is $doublesize bytes long."
7310         else
7311                 dflt='8'
7312                 echo "(I can't seem to compile the test program.  Guessing...)"
7313                 rp="What is the size of a double precision number (in bytes)?"
7314                 . ./myread
7315                 doublesize="$ans"
7316         fi
7317         ;;
7318 esac
7319 $rm -f try.c try
7320
7321 : check for long doubles
7322 echo " "
7323 echo "Checking to see if you have long double..." >&4
7324 echo 'int main() { long double x = 7.0; }' > try.c
7325 set try
7326 if eval $compile; then
7327         val="$define"
7328         echo "You have long double."
7329 else
7330         val="$undef"
7331         echo "You do not have long double."
7332 fi
7333 $rm try.*
7334 set d_longdbl
7335 eval $setvar
7336
7337 : check for length of long double
7338 case "${d_longdbl}${longdblsize}" in
7339 $define)
7340         echo " "
7341         echo "Checking to see how big your long doubles are..." >&4
7342         $cat >try.c <<'EOCP'
7343 #include <stdio.h>
7344 int main()
7345 {
7346         printf("%d\n", sizeof(long double));
7347 }
7348 EOCP
7349         set try
7350         set try
7351         if eval $compile; then
7352                 longdblsize=`./try$exe_ext`
7353                 echo "Your long doubles are $longdblsize bytes long."
7354         else
7355                 dflt='8'
7356                 echo " "
7357                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7358                 rp="What is the size of a long double (in bytes)?"
7359                 . ./myread
7360                 longdblsize="$ans"
7361         fi
7362         if $test "X$doublesize" = "X$longdblsize"; then
7363                 echo "(That isn't any different from an ordinary double.)"
7364         fi      
7365         ;;
7366 esac
7367 $rm -f try.* try
7368
7369 echo " "
7370
7371 if $test X"$d_longdbl" = X"$define"; then
7372
7373 echo "Checking how to print long doubles..." >&4
7374
7375 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7376         $cat >try.c <<'EOCP'
7377 #include <sys/types.h>
7378 #include <stdio.h>
7379 int main() {
7380   double d = 123.456;
7381   printf("%.3f\n", d);
7382 }
7383 EOCP
7384         set try
7385         if eval $compile; then
7386                 yyy=`./try$exe_ext`
7387                 case "$yyy" in
7388                 123.456)
7389                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7390                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7391                         echo "We will use %f."
7392                         ;;
7393                 esac
7394         fi
7395 fi
7396
7397 if $test X"$sPRIfldbl" = X; then
7398         $cat >try.c <<'EOCP'
7399 #include <sys/types.h>
7400 #include <stdio.h>
7401 int main() {
7402   long double d = 123.456;
7403   printf("%.3llf\n", d);
7404 }
7405 EOCP
7406         set try
7407         if eval $compile; then
7408                 yyy=`./try$exe_ext`
7409                 case "$yyy" in
7410                 123.456)
7411                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7412                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7413                         echo "We will use %llf."
7414                         ;;
7415                 esac
7416         fi
7417 fi
7418
7419 if $test X"$sPRIfldbl" = X; then
7420         $cat >try.c <<'EOCP'
7421 #include <sys/types.h>
7422 #include <stdio.h>
7423 int main() {
7424   long double d = 123.456;
7425   printf("%.3Lf\n", d);
7426 }
7427 EOCP
7428         set try
7429         if eval $compile; then
7430                 yyy=`./try$exe_ext`
7431                 case "$yyy" in
7432                 123.456)
7433                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7434                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7435                         echo "We will use %Lf."
7436                         ;;
7437                 esac
7438         fi
7439 fi
7440
7441 if $test X"$sPRIfldbl" = X; then
7442         $cat >try.c <<'EOCP'
7443 #include <sys/types.h>
7444 #include <stdio.h>
7445 int main() {
7446   long double d = 123.456;
7447   printf("%.3lf\n", d);
7448 }
7449 EOCP
7450         set try
7451         if eval $compile; then
7452                 yyy=`./try$exe_ext`
7453                 case "$yyy" in
7454                 123.456)
7455                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7456                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7457                         echo "We will use %lf."
7458                         ;;
7459                 esac
7460         fi
7461 fi
7462
7463 if $test X"$sPRIfldbl" = X; then
7464         echo "Cannot figure out how to print long doubles." >&4
7465 fi
7466
7467 $rm -f try try.*
7468
7469 fi # d_longdbl
7470
7471 case "$sPRIfldbl" in
7472 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7473         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7474         ;;
7475 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7476         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7477         ;;
7478 esac
7479
7480 : Check how to convert floats to strings.
7481 if test "X$d_Gconvert" = X; then
7482         echo " "
7483         echo "Checking for an efficient way to convert floats to strings."
7484         echo " " > try.c
7485         case "$uselongdouble" in
7486         "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7487         esac
7488         case "$d_longdbl" in
7489         "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7490         esac
7491         case "$d_PRIgldbl" in
7492         "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7493         esac
7494         $cat >>try.c <<EOP
7495 #ifdef TRY_gconvert
7496 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7497 char *myname = "gconvert";
7498 #endif
7499 #ifdef TRY_gcvt
7500 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7501 char *myname = "gcvt";
7502 #endif
7503 #ifdef TRY_qgcvt
7504 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7505 char *myname = "qgcvt";
7506 #define DOUBLETYPE long double
7507 #endif
7508 #ifdef TRY_sprintf
7509 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7510 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7511 #else
7512 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7513 #endif
7514 char *myname = "sprintf";
7515 #endif
7516
7517 #ifndef DOUBLETYPE
7518 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7519 #define DOUBLETYPE long double
7520 #else
7521 #define DOUBLETYPE double
7522 #endif
7523 #endif
7524
7525 #include <stdio.h>
7526
7527 #define I_STDLIB $i_stdlib
7528 #ifdef I_STDLIB
7529 #include <stdlib.h>
7530 #endif
7531
7532 int
7533 checkit(expect, got)
7534 char *expect;
7535 char *got;
7536 {
7537     if (strcmp(expect, got)) {
7538                 printf("%s oddity:  Expected %s, got %s\n",
7539                         myname, expect, got);
7540                 exit(1);
7541         }
7542 }
7543
7544 int main()
7545
7546         char buf[64]; 
7547         buf[63] = '\0';
7548
7549         /* This must be 1st test on (which?) platform */
7550         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7551         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7552         checkit("0.1", buf);
7553
7554         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7555         checkit("1", buf);
7556
7557         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7558         checkit("1.1", buf);
7559
7560         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7561         checkit("1.01", buf);
7562
7563         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7564         checkit("1.001", buf);
7565
7566         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7567         checkit("1.0001", buf);
7568
7569         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7570         checkit("1.00001", buf);
7571
7572         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7573         checkit("1.000001", buf);
7574
7575         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7576         checkit("0", buf);
7577
7578         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7579         checkit("-1", buf);
7580
7581         /* Some Linux gcvt's give 1.e+5 here. */
7582         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7583         checkit("100000", buf);
7584         
7585         /* Some Linux gcvt's give -1.e+5 here. */
7586         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7587         checkit("-100000", buf);
7588
7589         exit(0);
7590 }
7591 EOP
7592         case "$d_Gconvert" in
7593         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7594         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7595         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7596         *) xxx_list='gconvert gcvt sprintf' ;;
7597         esac
7598
7599         case "$d_longdbl$uselongdouble$d_qgcvt" in
7600         "$define$define$define") xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7601         esac
7602
7603         for xxx_convert in $xxx_list; do
7604                 echo "Trying $xxx_convert..."
7605                 $rm -f try try$_o
7606                 set try -DTRY_$xxx_convert
7607                 if eval $compile; then
7608                         echo "$xxx_convert() found." >&4
7609                         if ./try; then
7610                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
7611                                 break;
7612                         else
7613                                 echo "...But $xxx_convert didn't work as I expected."
7614                         fi
7615                 else
7616                         echo "$xxx_convert NOT found." >&4
7617                 fi
7618         done
7619                 
7620         case "$xxx_convert" in
7621         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7622         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7623         qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7624         *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7625            "$define$define$define")
7626               d_Gconvert="sprintf((b),\"%.*$sPRIgldbl\",(n),(x))" ;;
7627            *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7628            esac
7629            ;;  
7630         esac
7631 fi
7632
7633 : Initialize h_fcntl
7634 h_fcntl=false
7635
7636 : Initialize h_sysfile
7637 h_sysfile=false
7638
7639 : access call always available on UNIX
7640 set access d_access
7641 eval $inlibc
7642
7643 : locate the flags for 'access()'
7644 case "$d_access" in
7645 "$define")
7646         echo " "
7647         $cat >access.c <<'EOCP'
7648 #include <sys/types.h>
7649 #ifdef I_FCNTL
7650 #include <fcntl.h>
7651 #endif
7652 #ifdef I_SYS_FILE
7653 #include <sys/file.h>
7654 #endif
7655 #ifdef I_UNISTD
7656 #include <unistd.h>
7657 #endif
7658 int main() {
7659         exit(R_OK);
7660 }
7661 EOCP
7662         : check sys/file.h first, no particular reason here
7663         if $test `./findhdr sys/file.h` && \
7664                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7665                 h_sysfile=true;
7666                 echo "<sys/file.h> defines the *_OK access constants." >&4
7667         elif $test `./findhdr fcntl.h` && \
7668                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7669                 h_fcntl=true;
7670                 echo "<fcntl.h> defines the *_OK access constants." >&4
7671         elif $test `./findhdr unistd.h` && \
7672                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7673                 echo "<unistd.h> defines the *_OK access constants." >&4
7674         else
7675                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7676         fi
7677         ;;
7678 esac
7679 $rm -f access*
7680
7681 : see if accessx exists
7682 set accessx d_accessx
7683 eval $inlibc
7684
7685 : see if alarm exists
7686 set alarm d_alarm
7687 eval $inlibc
7688
7689 : see if atolf exists
7690 set atolf d_atolf
7691 eval $inlibc
7692
7693 : see if atoll exists
7694 set atoll d_atoll
7695 eval $inlibc
7696
7697 : Look for GNU-cc style attribute checking
7698 echo " "
7699 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7700 $cat >attrib.c <<'EOCP'
7701 #include <stdio.h>
7702 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7703 EOCP
7704 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7705         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7706                 echo "Your C compiler doesn't fully support __attribute__."
7707                 val="$undef"
7708         else
7709                 echo "Your C compiler supports __attribute__."
7710                 val="$define"
7711         fi
7712 else
7713         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7714         val="$undef"
7715 fi
7716 set d_attribut
7717 eval $setvar
7718 $rm -f attrib*
7719
7720 : see if bcmp exists
7721 set bcmp d_bcmp
7722 eval $inlibc
7723
7724 : see if bcopy exists
7725 set bcopy d_bcopy
7726 eval $inlibc
7727
7728 : see if this is a unistd.h system
7729 set unistd.h i_unistd
7730 eval $inhdr
7731
7732 : see if getpgrp exists
7733 set getpgrp d_getpgrp
7734 eval $inlibc
7735
7736 case "$d_getpgrp" in
7737 "$define")
7738         echo " "
7739         echo "Checking to see which flavor of getpgrp is in use..."
7740         $cat >set.c <<EOP
7741 #$i_unistd I_UNISTD
7742 #include <sys/types.h>
7743 #ifdef I_UNISTD
7744 #  include <unistd.h>
7745 #endif
7746 int main()
7747 {
7748         if (getuid() == 0) {
7749                 printf("(I see you are running Configure as super-user...)\n");
7750                 setuid(1);
7751         }
7752 #ifdef TRY_BSD_PGRP
7753         if (getpgrp(1) == 0)
7754                 exit(0);
7755 #else
7756         if (getpgrp() > 0)
7757                 exit(0);
7758 #endif
7759         exit(1);
7760 }
7761 EOP
7762         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7763                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7764                 val="$define"
7765         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7766                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7767                 val="$undef"
7768         else
7769                 echo "I can't seem to compile and run the test program."
7770                 if ./usg; then
7771                         xxx="a USG one, i.e. you use getpgrp()."
7772                 else
7773                         # SVR4 systems can appear rather BSD-ish.
7774                         case "$i_unistd" in
7775                         $undef)
7776                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7777                                 val="$define"
7778                                 ;;
7779                         $define)
7780                                 xxx="probably a USG one, i.e. you use getpgrp()."
7781                                 val="$undef"
7782                                 ;;
7783                         esac
7784                 fi
7785                 echo "Assuming your getpgrp is $xxx" >&4
7786         fi
7787         ;;
7788 *) val="$undef";;
7789 esac
7790 set d_bsdgetpgrp
7791 eval $setvar
7792 $rm -f set set.c
7793
7794 : see if setpgrp exists
7795 set setpgrp d_setpgrp
7796 eval $inlibc
7797
7798 case "$d_setpgrp" in
7799 "$define")
7800         echo " "
7801         echo "Checking to see which flavor of setpgrp is in use..."
7802         $cat >set.c <<EOP
7803 #$i_unistd I_UNISTD
7804 #include <sys/types.h>
7805 #ifdef I_UNISTD
7806 #  include <unistd.h>
7807 #endif
7808 int main()
7809 {
7810         if (getuid() == 0) {
7811                 printf("(I see you are running Configure as super-user...)\n");
7812                 setuid(1);
7813         }
7814 #ifdef TRY_BSD_PGRP
7815         if (-1 == setpgrp(1, 1))
7816                 exit(0);
7817 #else
7818         if (setpgrp() != -1)
7819                 exit(0);
7820 #endif
7821         exit(1);
7822 }
7823 EOP
7824         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7825                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7826                 val="$define"
7827         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7828                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7829                 val="$undef"
7830         else
7831                 echo "(I can't seem to compile and run the test program.)"
7832                 if ./usg; then
7833                         xxx="a USG one, i.e. you use setpgrp()."
7834                 else
7835                         # SVR4 systems can appear rather BSD-ish.
7836                         case "$i_unistd" in
7837                         $undef)
7838                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7839                                 val="$define"
7840                                 ;;
7841                         $define)
7842                                 xxx="probably a USG one, i.e. you use setpgrp()."
7843                                 val="$undef"
7844                                 ;;
7845                         esac
7846                 fi
7847                 echo "Assuming your setpgrp is $xxx" >&4
7848         fi
7849         ;;
7850 *) val="$undef";;
7851 esac
7852 set d_bsdsetpgrp
7853 eval $setvar
7854 $rm -f set set.c
7855 : see if bzero exists
7856 set bzero d_bzero
7857 eval $inlibc
7858
7859 : see if signal is declared as pointer to function returning int or void
7860 echo " "
7861 xxx=`./findhdr signal.h`
7862 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7863 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7864         echo "You have int (*signal())() instead of void." >&4
7865         val="$undef"
7866 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
7867         echo "You have void (*signal())()." >&4
7868         val="$define"
7869 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7870         echo "You have int (*signal())() instead of void." >&4
7871         val="$undef"
7872 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7873         echo "You have void (*signal())()." >&4
7874         val="$define"
7875 else
7876         case "$d_voidsig" in
7877         '')
7878         echo "I can't determine whether signal handler returns void or int..." >&4
7879                 dflt=void
7880                 rp="What type does your signal handler return?"
7881                 . ./myread
7882                 case "$ans" in
7883                 v*) val="$define";;
7884                 *) val="$undef";;
7885                 esac;;
7886         "$define")
7887                 echo "As you already told me, signal handler returns void." >&4
7888                 val="$define"
7889                 ;;
7890         *)      echo "As you already told me, signal handler returns int." >&4
7891                 val="$undef"
7892                 ;;
7893         esac
7894 fi
7895 set d_voidsig
7896 eval $setvar
7897 case "$d_voidsig" in
7898 "$define") signal_t="void";;
7899 *) signal_t="int";;
7900 esac
7901 $rm -f $$.tmp
7902
7903 : check for ability to cast large floats to 32-bit ints.
7904 echo " "
7905 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7906 if $test "$intsize" -ge 4; then
7907         xxx=int
7908 else
7909         xxx=long
7910 fi
7911 $cat >try.c <<EOCP
7912 #include <stdio.h>
7913 #include <sys/types.h>
7914 #include <signal.h>
7915 $signal_t blech(s) int s; { exit(3); }
7916 int main()
7917 {
7918         $xxx i32;
7919         double f, g;
7920         int result = 0;
7921         char str[16];
7922         signal(SIGFPE, blech);
7923
7924         /* Don't let compiler optimize the test away.  Store the number 
7925            in a writable string for gcc to pass to sscanf under HP/UX.
7926         */
7927         sprintf(str, "2147483647");
7928         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7929         g = 10 * f;
7930         i32  = ($xxx) g;
7931
7932         /* x86 processors will probably give 0x8000 0000, which is a
7933        sign change.  We don't want that.  We want to mimic SPARC
7934            behavior here, which is to preserve the sign and give
7935            back 0x7fff ffff.
7936         */
7937         if (i32 != ($xxx) f)
7938                 result |= 1;
7939         exit(result);
7940 }
7941 EOCP
7942 set try
7943 if eval $compile_ok; then
7944         ./try
7945         yyy=$?
7946 else
7947         echo "(I can't seem to compile the test program--assuming it can't)"
7948         yyy=1
7949 fi
7950 case "$yyy" in
7951 0)      val="$define"
7952         echo "Yup, it can."
7953         ;;
7954 *)      val="$undef"
7955         echo "Nope, it can't."
7956         ;;
7957 esac
7958 set d_casti32
7959 eval $setvar
7960 $rm -f try try.*
7961
7962 : check for ability to cast negative floats to unsigned
7963 echo " "
7964 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7965 $cat >try.c <<EOCP
7966 #include <stdio.h>
7967 #include <sys/types.h>
7968 #include <signal.h>
7969 $signal_t blech(s) int s; { exit(7); }
7970 $signal_t blech_in_list(s) int s; { exit(4); }
7971 unsigned long dummy_long(p) unsigned long p; { return p; }
7972 unsigned int dummy_int(p) unsigned int p; { return p; }
7973 unsigned short dummy_short(p) unsigned short p; { return p; }
7974 int main()
7975 {
7976         double f;
7977         unsigned long along;
7978         unsigned int aint;
7979         unsigned short ashort;
7980         int result = 0;
7981         char str[16];
7982         
7983         /* Frustrate gcc-2.7.2's optimizer which failed this test with
7984            a direct f = -123. assignment.  gcc-2.8.0 reportedly
7985            optimized the whole file away
7986         */
7987         /* Store the number in a writable string for gcc to pass to 
7988            sscanf under HP/UX.
7989         */
7990         sprintf(str, "-123");
7991         sscanf(str, "%lf", &f);  /* f = -123.; */
7992
7993         signal(SIGFPE, blech);
7994         along = (unsigned long)f;
7995         aint = (unsigned int)f;
7996         ashort = (unsigned short)f;
7997         if (along != (unsigned long)-123)
7998                 result |= 1;
7999         if (aint != (unsigned int)-123)
8000                 result |= 1;
8001         if (ashort != (unsigned short)-123)
8002                 result |= 1;
8003         sprintf(str, "1073741824.");
8004         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8005         f = f + f;
8006         along = 0;
8007         along = (unsigned long)f;
8008         if (along != 0x80000000)
8009                 result |= 2;
8010         f -= 1.;
8011         along = 0;
8012         along = (unsigned long)f;
8013         if (along != 0x7fffffff)
8014                 result |= 1;
8015         f += 2.;
8016         along = 0;
8017         along = (unsigned long)f;
8018         if (along != 0x80000001)
8019                 result |= 2;
8020         if (result)
8021                 exit(result);
8022         signal(SIGFPE, blech_in_list);
8023         sprintf(str, "123.");
8024         sscanf(str, "%lf", &f);  /* f = 123.; */
8025         along = dummy_long((unsigned long)f);
8026         aint = dummy_int((unsigned int)f);
8027         ashort = dummy_short((unsigned short)f);
8028         if (along != (unsigned long)123)
8029                 result |= 4;
8030         if (aint != (unsigned int)123)
8031                 result |= 4;
8032         if (ashort != (unsigned short)123)
8033                 result |= 4;
8034         exit(result);
8035
8036 }
8037 EOCP
8038 set try
8039 if eval $compile_ok; then
8040         ./try
8041         castflags=$?
8042 else
8043         echo "(I can't seem to compile the test program--assuming it can't)"
8044         castflags=7
8045 fi
8046 case "$castflags" in
8047 0)      val="$define"
8048         echo "Yup, it can."
8049         ;;
8050 *)      val="$undef"
8051         echo "Nope, it can't."
8052         ;;
8053 esac
8054 set d_castneg
8055 eval $setvar
8056 $rm -f try.*
8057
8058 : see if vprintf exists
8059 echo " "
8060 if set vprintf val -f d_vprintf; eval $csym; $val; then
8061         echo 'vprintf() found.' >&4
8062         val="$define"
8063         $cat >vprintf.c <<'EOF'
8064 #include <varargs.h>
8065
8066 int main() { xxx("foo"); }
8067
8068 xxx(va_alist)
8069 va_dcl
8070 {
8071         va_list args;
8072         char buf[10];
8073
8074         va_start(args);
8075         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8076 }
8077 EOF
8078         set vprintf
8079         if eval $compile && ./vprintf; then
8080                 echo "Your vsprintf() returns (int)." >&4
8081                 val2="$undef"
8082         else
8083                 echo "Your vsprintf() returns (char*)." >&4
8084                 val2="$define"
8085         fi
8086 else
8087         echo 'vprintf() NOT found.' >&4
8088                 val="$undef"
8089                 val2="$undef"
8090 fi
8091 set d_vprintf
8092 eval $setvar
8093 val=$val2
8094 set d_charvspr
8095 eval $setvar
8096
8097 : see if chown exists
8098 set chown d_chown
8099 eval $inlibc
8100
8101 : see if chroot exists
8102 set chroot d_chroot
8103 eval $inlibc
8104
8105 : see if chsize exists
8106 set chsize d_chsize
8107 eval $inlibc
8108
8109 : check for const keyword
8110 echo " "
8111 echo 'Checking to see if your C compiler knows about "const"...' >&4
8112 $cat >const.c <<'EOCP'
8113 typedef struct spug { int drokk; } spug;
8114 int main()
8115 {
8116         const char *foo;
8117         const spug y;
8118 }
8119 EOCP
8120 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8121         val="$define"
8122         echo "Yup, it does."
8123 else
8124         val="$undef"
8125         echo "Nope, it doesn't."
8126 fi
8127 set d_const
8128 eval $setvar
8129
8130 : see if crypt exists
8131 echo " "
8132 if set crypt val -f d_crypt; eval $csym; $val; then
8133         echo 'crypt() found.' >&4
8134         val="$define"
8135         cryptlib=''
8136 else
8137         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8138         if $test -z "$cryptlib"; then
8139                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8140         else
8141                 cryptlib=-lcrypt
8142         fi
8143         if $test -z "$cryptlib"; then
8144                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8145         else
8146                 cryptlib=-lcrypt
8147         fi
8148         if $test -z "$cryptlib"; then
8149                 cryptlib=`./loc libcrypt$_a "" $libpth`
8150         else
8151                 cryptlib=-lcrypt
8152         fi
8153         if $test -z "$cryptlib"; then
8154                 echo 'crypt() NOT found.' >&4
8155                 val="$undef"
8156         else
8157                 val="$define"
8158         fi
8159 fi
8160 set d_crypt
8161 eval $setvar
8162
8163 : get csh whereabouts
8164 case "$csh" in
8165 'csh') val="$undef" ;;
8166 *) val="$define" ;;
8167 esac
8168 set d_csh
8169 eval $setvar
8170 : Respect a hint or command line value for full_csh.
8171 case "$full_csh" in
8172 '') full_csh=$csh ;;
8173 esac
8174
8175 : see if cuserid exists
8176 set cuserid d_cuserid
8177 eval $inlibc
8178
8179 : see if this is a limits.h system
8180 set limits.h i_limits
8181 eval $inhdr
8182
8183 : see if this is a float.h system
8184 set float.h i_float
8185 eval $inhdr
8186
8187 : See if number of significant digits in a double precision number is known
8188 echo " "
8189 $cat >dbl_dig.c <<EOM
8190 #$i_limits I_LIMITS
8191 #$i_float I_FLOAT
8192 #ifdef I_LIMITS
8193 #include <limits.h>
8194 #endif
8195 #ifdef I_FLOAT
8196 #include <float.h>
8197 #endif
8198 #ifdef DBL_DIG
8199 printf("Contains DBL_DIG");
8200 #endif
8201 EOM
8202 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8203 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8204         echo "DBL_DIG found." >&4
8205         val="$define"
8206 else
8207         echo "DBL_DIG NOT found." >&4
8208         val="$undef"
8209 fi
8210 $rm -f dbl_dig.?
8211 set d_dbl_dig
8212 eval $setvar
8213
8214 : see if difftime exists
8215 set difftime d_difftime
8216 eval $inlibc
8217
8218 : see if this is a dirent system
8219 echo " "
8220 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8221         val="$define"
8222         echo "<dirent.h> found." >&4
8223 else
8224         val="$undef"
8225         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8226                 echo "<sys/dir.h> found." >&4
8227                 echo " "
8228         else
8229                 xinc=`./findhdr sys/ndir.h`
8230         fi
8231         echo "<dirent.h> NOT found." >&4
8232 fi
8233 set i_dirent
8234 eval $setvar
8235
8236 : Look for type of directory structure.
8237 echo " "
8238 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8239
8240 case "$direntrytype" in
8241 ''|' ')
8242         case "$i_dirent" in
8243         $define) guess1='struct dirent' ;;
8244         *) guess1='struct direct'  ;;
8245         esac
8246         ;;
8247 *)      guess1="$direntrytype"
8248         ;;
8249 esac
8250
8251 case "$guess1" in
8252 'struct dirent') guess2='struct direct' ;;
8253 *) guess2='struct dirent' ;;
8254 esac
8255                 
8256 if $contains "$guess1" try.c >/dev/null 2>&1; then
8257         direntrytype="$guess1"
8258         echo "Your directory entries are $direntrytype." >&4
8259 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8260         direntrytype="$guess2"
8261         echo "Your directory entries seem to be $direntrytype." >&4
8262 else
8263         echo "I don't recognize your system's directory entries." >&4
8264         rp="What type is used for directory entries on this system?"
8265         dflt="$guess1"
8266         . ./myread
8267         direntrytype="$ans"
8268 fi
8269 $rm -f try.c
8270
8271
8272 : see if the directory entry stores field length
8273 echo " "
8274 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8275 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8276         echo "Good, your directory entry keeps length information in d_namlen." >&4
8277         val="$define"
8278 else
8279         echo "Your directory entry does not know about the d_namlen field." >&4
8280         val="$undef"
8281 fi
8282 set d_dirnamlen
8283 eval $setvar
8284 $rm -f try.c
8285
8286 : see if dlerror exists
8287 xxx_runnm="$runnm"
8288 runnm=false
8289 set dlerror d_dlerror
8290 eval $inlibc
8291 runnm="$xxx_runnm"
8292
8293 : see if dlfcn is available
8294 set dlfcn.h i_dlfcn
8295 eval $inhdr
8296
8297 case "$usedl" in
8298 $define|y|true)
8299         $cat << EOM
8300
8301 On a few systems, the dynamically loaded modules that perl generates and uses
8302 will need a different extension than shared libs. The default will probably
8303 be appropriate.
8304
8305 EOM
8306         case "$dlext" in
8307         '')     dflt="$so" ;;
8308         *)      dflt="$dlext" ;;
8309         esac
8310         rp='What is the extension of dynamically loaded modules'
8311         . ./myread
8312         dlext="$ans"
8313         ;;
8314 *)
8315         dlext="none"
8316         ;;
8317 esac
8318
8319 : Check if dlsym need a leading underscore
8320 echo " "
8321 val="$undef"
8322
8323 case "$dlsrc" in
8324 dl_dlopen.xs)
8325         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8326         $cat >dyna.c <<'EOM'
8327 fred () { }
8328 EOM
8329
8330 $cat >fred.c<<EOM
8331
8332 #include <stdio.h>
8333 #$i_dlfcn I_DLFCN
8334 #ifdef I_DLFCN
8335 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8336 #else
8337 #include <sys/types.h>
8338 #include <nlist.h>
8339 #include <link.h>
8340 #endif
8341
8342 extern int fred() ;
8343
8344 int main()
8345 {
8346     void * handle ;
8347     void * symbol ;
8348 #ifndef RTLD_LAZY
8349     int mode = 1 ;
8350 #else
8351     int mode = RTLD_LAZY ;
8352 #endif
8353     handle = dlopen("./dyna.$dlext", mode) ;
8354     if (handle == NULL) {
8355         printf ("1\n") ;
8356         fflush (stdout) ;
8357         exit(0);
8358     }
8359     symbol = dlsym(handle, "fred") ;
8360     if (symbol == NULL) {
8361         /* try putting a leading underscore */
8362         symbol = dlsym(handle, "_fred") ;
8363         if (symbol == NULL) {
8364             printf ("2\n") ;
8365             fflush (stdout) ;
8366             exit(0);
8367         }
8368         printf ("3\n") ;
8369     }
8370     else
8371         printf ("4\n") ;
8372     fflush (stdout) ;
8373     exit(0);
8374 }
8375 EOM
8376         : Call the object file tmp-dyna.o in case dlext=o.
8377         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8378                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8379                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8380                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8381                 xxx=`./fred`
8382                 case $xxx in
8383                 1)      echo "Test program failed using dlopen." >&4
8384                         echo "Perhaps you should not use dynamic loading." >&4;;
8385                 2)      echo "Test program failed using dlsym." >&4
8386                         echo "Perhaps you should not use dynamic loading." >&4;;
8387                 3)      echo "dlsym needs a leading underscore" >&4
8388                         val="$define" ;;
8389                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8390                 esac
8391         else
8392                 echo "I can't compile and run the test program." >&4
8393                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8394         fi
8395         ;;
8396 esac
8397                 
8398 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8399
8400 set d_dlsymun
8401 eval $setvar
8402
8403 hasproto='varname=$1; func=$2; shift; shift;
8404 while $test $# -ge 2; do
8405         case "$1" in
8406         $define) echo "#include <$2>";;
8407         esac ;
8408     shift 2;
8409 done > try.c;
8410 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8411 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8412         echo "$func() prototype found.";
8413         val="$define";
8414 else
8415         echo "$func() prototype NOT found.";
8416         val="$undef";
8417 fi;
8418 set $varname;
8419 eval $setvar;
8420 $rm -f try.c tryout.c'
8421
8422 : see if prototype for drand48 is available
8423 echo " "
8424 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8425 eval $hasproto
8426
8427 : see if dup2 exists
8428 set dup2 d_dup2
8429 eval $inlibc
8430
8431 : see if eaccess exists
8432 set eaccess d_eaccess
8433 eval $inlibc
8434
8435 : see if endgrent exists
8436 set endgrent d_endgrent
8437 eval $inlibc
8438
8439 : see if endhostent exists
8440 set endhostent d_endhent
8441 eval $inlibc
8442
8443 : see if endnetent exists
8444 set endnetent d_endnent
8445 eval $inlibc
8446
8447 : see if endprotoent exists
8448 set endprotoent d_endpent
8449 eval $inlibc
8450
8451 : see if endpwent exists
8452 set endpwent d_endpwent
8453 eval $inlibc
8454
8455 : see if endservent exists
8456 set endservent d_endsent
8457 eval $inlibc
8458
8459 : see if endspent exists
8460 set endspent d_endspent
8461 eval $inlibc
8462
8463 : Locate the flags for 'open()'
8464 echo " "
8465 $cat >open3.c <<'EOCP'
8466 #include <sys/types.h>
8467 #ifdef I_FCNTL
8468 #include <fcntl.h>
8469 #endif
8470 #ifdef I_SYS_FILE
8471 #include <sys/file.h>
8472 #endif
8473 int main() {
8474         if(O_RDONLY);
8475 #ifdef O_TRUNC
8476         exit(0);
8477 #else
8478         exit(1);
8479 #endif
8480 }
8481 EOCP
8482 : check sys/file.h first to get FREAD on Sun
8483 if $test `./findhdr sys/file.h` && \
8484                 set open3 -DI_SYS_FILE && eval $compile; then
8485         h_sysfile=true;
8486         echo "<sys/file.h> defines the O_* constants..." >&4
8487         if ./open3; then
8488                 echo "and you have the 3 argument form of open()." >&4
8489                 val="$define"
8490         else
8491                 echo "but not the 3 argument form of open().  Oh, well." >&4
8492                 val="$undef"
8493         fi
8494 elif $test `./findhdr fcntl.h` && \
8495                 set open3 -DI_FCNTL && eval $compile; then
8496         h_fcntl=true;
8497         echo "<fcntl.h> defines the O_* constants..." >&4
8498         if ./open3; then
8499                 echo "and you have the 3 argument form of open()." >&4
8500                 val="$define"
8501         else
8502                 echo "but not the 3 argument form of open().  Oh, well." >&4
8503                 val="$undef"
8504         fi
8505 else
8506         val="$undef"
8507         echo "I can't find the O_* constant definitions!  You got problems." >&4
8508 fi
8509 set d_open3
8510 eval $setvar
8511 $rm -f open3*
8512
8513 : see which of string.h or strings.h is needed
8514 echo " "
8515 strings=`./findhdr string.h`
8516 if $test "$strings" && $test -r "$strings"; then
8517         echo "Using <string.h> instead of <strings.h>." >&4
8518         val="$define"
8519 else
8520         val="$undef"
8521         strings=`./findhdr strings.h`
8522         if $test "$strings" && $test -r "$strings"; then
8523                 echo "Using <strings.h> instead of <string.h>." >&4
8524         else
8525                 echo "No string header found -- You'll surely have problems." >&4
8526         fi
8527 fi
8528 set i_string
8529 eval $setvar
8530 case "$i_string" in
8531 "$undef") strings=`./findhdr strings.h`;;
8532 *)        strings=`./findhdr string.h`;;
8533 esac
8534
8535 : check for non-blocking I/O stuff
8536 case "$h_sysfile" in
8537 true) echo "#include <sys/file.h>" > head.c;;
8538 *)
8539         case "$h_fcntl" in
8540         true) echo "#include <fcntl.h>" > head.c;;
8541         *) echo "#include <sys/fcntl.h>" > head.c;;
8542         esac
8543         ;;
8544 esac
8545 echo " "
8546 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8547 case "$o_nonblock" in
8548 '')
8549         $cat head.c > try.c
8550         $cat >>try.c <<'EOCP'
8551 #include <stdio.h>
8552 int main() {
8553 #ifdef O_NONBLOCK
8554         printf("O_NONBLOCK\n");
8555         exit(0);
8556 #endif
8557 #ifdef O_NDELAY
8558         printf("O_NDELAY\n");
8559         exit(0);
8560 #endif
8561 #ifdef FNDELAY
8562         printf("FNDELAY\n");
8563         exit(0);
8564 #endif
8565         exit(0);
8566 }
8567 EOCP
8568         set try
8569         if eval $compile_ok; then
8570                 o_nonblock=`./try`
8571                 case "$o_nonblock" in
8572                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8573                 *) echo "Seems like we can use $o_nonblock.";;
8574                 esac
8575         else
8576                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8577         fi
8578         ;;
8579 *) echo "Using $hint value $o_nonblock.";;
8580 esac
8581 $rm -f try try.* .out core
8582
8583 echo " "
8584 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8585 case "$eagain" in
8586 '')
8587         $cat head.c > try.c
8588         $cat >>try.c <<EOCP
8589 #include <errno.h>
8590 #include <sys/types.h>
8591 #include <signal.h>
8592 #include <stdio.h> 
8593 #define MY_O_NONBLOCK $o_nonblock
8594 #ifndef errno  /* XXX need better Configure test */
8595 extern int errno;
8596 #endif
8597 #$i_unistd I_UNISTD
8598 #ifdef I_UNISTD
8599 #include <unistd.h>
8600 #endif
8601 #ifdef $i_string
8602 #include <string.h>
8603 #else
8604 #include <strings.h>
8605 #endif
8606 $signal_t blech(x) int x; { exit(3); }
8607 EOCP
8608         $cat >> try.c <<'EOCP'
8609 int main()
8610 {
8611         int pd[2];
8612         int pu[2];
8613         char buf[1];
8614         char string[100];
8615
8616         pipe(pd);       /* Down: child -> parent */
8617         pipe(pu);       /* Up: parent -> child */
8618         if (0 != fork()) {
8619                 int ret;
8620                 close(pd[1]);   /* Parent reads from pd[0] */
8621                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8622                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8623                         exit(1);
8624                 signal(SIGALRM, blech);
8625                 alarm(5);
8626                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8627                         exit(2);
8628                 sprintf(string, "%d\n", ret);
8629                 write(2, string, strlen(string));
8630                 alarm(0);
8631 #ifdef EAGAIN
8632                 if (errno == EAGAIN) {
8633                         printf("EAGAIN\n");
8634                         goto ok;
8635                 }
8636 #endif
8637 #ifdef EWOULDBLOCK
8638                 if (errno == EWOULDBLOCK)
8639                         printf("EWOULDBLOCK\n");
8640 #endif
8641         ok:
8642                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8643                 sleep(2);                               /* Give it time to close our pipe */
8644                 alarm(5);
8645                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8646                 alarm(0);
8647                 sprintf(string, "%d\n", ret);
8648                 write(3, string, strlen(string));
8649                 exit(0);
8650         }
8651
8652         close(pd[0]);                   /* We write to pd[1] */
8653         close(pu[1]);                   /* We read from pu[0] */
8654         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8655         close(pd[1]);                   /* Pipe pd is now fully closed! */
8656         exit(0);                                /* Bye bye, thank you for playing! */
8657 }
8658 EOCP
8659         set try
8660         if eval $compile_ok; then
8661                 echo "$startsh" >mtry
8662                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8663                 chmod +x mtry
8664                 ./mtry >/dev/null 2>&1
8665                 case $? in
8666                 0) eagain=`$cat try.out`;;
8667                 1) echo "Could not perform non-blocking setting!";;
8668                 2) echo "I did a successful read() for something that was not there!";;
8669                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8670                 *) echo "Something terribly wrong happened during testing.";;
8671                 esac
8672                 rd_nodata=`$cat try.ret`
8673                 echo "A read() system call with no data present returns $rd_nodata."
8674                 case "$rd_nodata" in
8675                 0|-1) ;;
8676                 *)
8677                         echo "(That's peculiar, fixing that to be -1.)"
8678                         rd_nodata=-1
8679                         ;;
8680                 esac
8681                 case "$eagain" in
8682                 '')
8683                         echo "Forcing errno EAGAIN on read() with no data available."
8684                         eagain=EAGAIN
8685                         ;;
8686                 *)
8687                         echo "Your read() sets errno to $eagain when no data is available."
8688                         ;;
8689                 esac
8690                 status=`$cat try.err`
8691                 case "$status" in
8692                 0) echo "And it correctly returns 0 to signal EOF.";;
8693                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8694                 *) echo "However, your read() returns '$status' on EOF??";;
8695                 esac
8696                 val="$define"
8697                 if test "$status" = "$rd_nodata"; then
8698                         echo "WARNING: you can't distinguish between EOF and no data!"
8699                         val="$undef"
8700                 fi
8701         else
8702                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8703                 eagain=EAGAIN
8704         fi
8705         set d_eofnblk
8706         eval $setvar
8707         ;;
8708 *)
8709         echo "Using $hint value $eagain."
8710         echo "Your read() returns $rd_nodata when no data is present."
8711         case "$d_eofnblk" in
8712         "$define") echo "And you can see EOF because read() returns 0.";;
8713         "$undef") echo "But you can't see EOF status from read() returned value.";;
8714         *)
8715                 echo "(Assuming you can't see EOF status from read anyway.)"
8716                 d_eofnblk=$undef
8717                 ;;
8718         esac
8719         ;;
8720 esac
8721 $rm -f try try.* .out core head.c mtry
8722
8723 : see if fchmod exists
8724 set fchmod d_fchmod
8725 eval $inlibc
8726
8727 : see if fchown exists
8728 set fchown d_fchown
8729 eval $inlibc
8730
8731 : see if this is an fcntl system
8732 set fcntl d_fcntl
8733 eval $inlibc
8734
8735 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8736 while $test $# -ge 2; do
8737         case "$1" in
8738         $define) echo "#include <$2>";;
8739         esac ;
8740     shift 2;
8741 done > try.c;
8742 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8743 set try;
8744 if eval $compile; then
8745         val="$define";
8746 else
8747         val="$undef";
8748 fi;
8749 set $varname;
8750 eval $setvar;
8751 $rm -f try.c try.o'
8752
8753 socketlib=''
8754 sockethdr=''
8755 : see whether socket exists
8756 echo " "
8757 $echo $n "Hmm... $c" >&4
8758 if set socket val -f d_socket; eval $csym; $val; then
8759         echo "Looks like you have Berkeley networking support." >&4
8760         d_socket="$define"
8761         if set setsockopt val -f; eval $csym; $val; then
8762                 d_oldsock="$undef"
8763         else
8764                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8765                 d_oldsock="$define"
8766         fi
8767 else
8768         if $contains socklib libc.list >/dev/null 2>&1; then
8769                 echo "Looks like you have Berkeley networking support." >&4
8770                 d_socket="$define"
8771                 : we will have to assume that it supports the 4.2 BSD interface
8772                 d_oldsock="$undef"
8773         else
8774                 echo "You don't have Berkeley networking in libc$_a..." >&4
8775                 if test "X$d_socket" = "X$define"; then
8776                    echo "...but you seem to believe that you have sockets." >&4
8777                 else
8778                         for net in net socket
8779                         do
8780                                 if test -f /usr/lib/lib$net$_a; then
8781                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8782                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8783                                         if $contains socket libc.list >/dev/null 2>&1; then
8784                                                 d_socket="$define"
8785                                                 socketlib="-l$net"
8786                                                 case "$net" in
8787                                                 net)
8788                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8789                                                         sockethdr="-I/usr/netinclude"
8790                                                         ;;
8791                                                 esac
8792                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8793                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8794                                                         d_oldsock="$undef"
8795                                                 else
8796                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8797                                                         d_oldsock="$define"
8798                                                 fi
8799                                                 break
8800                                         fi
8801                                 fi
8802                         done
8803                         if test "X$d_socket" != "X$define"; then
8804                            echo "or anywhere else I see." >&4
8805                            d_socket="$undef"
8806                            d_oldsock="$undef"
8807                         fi
8808                 fi
8809         fi
8810 fi
8811
8812 : see if socketpair exists
8813 set socketpair d_sockpair
8814 eval $inlibc
8815
8816
8817 echo " "
8818 echo "Checking the availability of certain socket constants..." >& 4
8819 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8820         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8821         $cat >try.c <<EOF
8822 #include <sys/types.h>
8823 #include <sys/socket.h>
8824 int main() {
8825     int i = $ENUM;
8826 }
8827 EOF
8828         val="$undef"
8829         set try; if eval $compile; then
8830                 val="$define"
8831         fi
8832         set d_${enum}; eval $setvar
8833         $rm -f try.c try
8834 done
8835
8836 : see if sys/select.h has to be included
8837 set sys/select.h i_sysselct
8838 eval $inhdr
8839
8840 : see if we should include time.h, sys/time.h, or both
8841 echo " "
8842 if test "X$timeincl" = X; then
8843         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8844         $echo $n "I'm now running the test program...$c"
8845         $cat >try.c <<'EOCP'
8846 #include <sys/types.h>
8847 #ifdef I_TIME
8848 #include <time.h>
8849 #endif
8850 #ifdef I_SYSTIME
8851 #ifdef SYSTIMEKERNEL
8852 #define KERNEL
8853 #endif
8854 #include <sys/time.h>
8855 #endif
8856 #ifdef I_SYSSELECT
8857 #include <sys/select.h>
8858 #endif
8859 int main()
8860 {
8861         struct tm foo;
8862 #ifdef S_TIMEVAL
8863         struct timeval bar;
8864 #endif
8865 #ifdef S_TIMEZONE
8866         struct timezone tzp;
8867 #endif
8868         if (foo.tm_sec == foo.tm_sec)
8869                 exit(0);
8870 #ifdef S_TIMEVAL
8871         if (bar.tv_sec == bar.tv_sec)
8872                 exit(0);
8873 #endif
8874         exit(1);
8875 }
8876 EOCP
8877         flags=''
8878         for s_timezone in '-DS_TIMEZONE' ''; do
8879         sysselect=''
8880         for s_timeval in '-DS_TIMEVAL' ''; do
8881         for i_systimek in '' '-DSYSTIMEKERNEL'; do
8882         for i_time in '' '-DI_TIME'; do
8883         for i_systime in '-DI_SYSTIME' ''; do
8884                 case "$flags" in
8885                 '') $echo $n ".$c"
8886                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8887                         if eval $compile; then
8888                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8889                                 shift
8890                                 flags="$*"
8891                                 echo " "
8892                                 $echo $n "Succeeded with $flags$c"
8893                         fi
8894                         ;;
8895                 esac
8896         done
8897         done
8898         done
8899         done
8900         done
8901         timeincl=''
8902         echo " "
8903         case "$flags" in
8904         *SYSTIMEKERNEL*) i_systimek="$define"
8905                 timeincl=`./findhdr sys/time.h`
8906                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8907         *) i_systimek="$undef";;
8908         esac
8909         case "$flags" in
8910         *I_TIME*) i_time="$define"
8911                 timeincl=`./findhdr time.h`" $timeincl"
8912                 echo "We'll include <time.h>." >&4;;
8913         *) i_time="$undef";;
8914         esac
8915         case "$flags" in
8916         *I_SYSTIME*) i_systime="$define"
8917                 timeincl=`./findhdr sys/time.h`" $timeincl"
8918                 echo "We'll include <sys/time.h>." >&4;;
8919         *) i_systime="$undef";;
8920         esac
8921         $rm -f try.c try
8922 fi
8923
8924 : check for fd_set items
8925 $cat <<EOM
8926
8927 Checking to see how well your C compiler handles fd_set and friends ...
8928 EOM
8929 $cat >fd_set.c <<EOCP
8930 #$i_systime I_SYS_TIME
8931 #$i_sysselct I_SYS_SELECT
8932 #$d_socket HAS_SOCKET
8933 #include <sys/types.h>
8934 #ifdef HAS_SOCKET
8935 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8936 #endif
8937 #ifdef I_SYS_TIME
8938 #include <sys/time.h>
8939 #endif
8940 #ifdef I_SYS_SELECT
8941 #include <sys/select.h>
8942 #endif
8943 int main() {
8944         fd_set fds;
8945
8946 #ifdef TRYBITS
8947         if(fds.fds_bits);
8948 #endif
8949
8950 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8951         exit(0);
8952 #else
8953         exit(1);
8954 #endif
8955 }
8956 EOCP
8957 set fd_set -DTRYBITS
8958 if eval $compile; then
8959         d_fds_bits="$define"
8960         d_fd_set="$define"
8961         echo "Well, your system knows about the normal fd_set typedef..." >&4
8962         if ./fd_set; then
8963                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8964                 d_fd_macros="$define"
8965         else
8966                 $cat >&4 <<'EOM'
8967 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
8968 EOM
8969                 d_fd_macros="$undef"
8970         fi
8971 else
8972         $cat <<'EOM'
8973 Hmm, your compiler has some difficulty with fd_set.  Checking further...
8974 EOM
8975         set fd_set
8976         if eval $compile; then
8977                 d_fds_bits="$undef"
8978                 d_fd_set="$define"
8979                 echo "Well, your system has some sort of fd_set available..." >&4
8980                 if ./fd_set; then
8981                         echo "and you have the normal fd_set macros." >&4
8982                         d_fd_macros="$define"
8983                 else
8984                         $cat <<'EOM'
8985 but not the normal fd_set macros!  Gross!  More work for me...
8986 EOM
8987                         d_fd_macros="$undef"
8988                 fi
8989         else
8990         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
8991                 d_fd_set="$undef"
8992                 d_fds_bits="$undef"
8993                 d_fd_macros="$undef"
8994         fi
8995 fi
8996 $rm -f fd_set*
8997
8998 : see if fgetpos exists
8999 set fgetpos d_fgetpos
9000 eval $inlibc
9001
9002 : see if flock exists
9003 set flock d_flock
9004 eval $inlibc
9005
9006 : see if fork exists
9007 set fork d_fork
9008 eval $inlibc
9009
9010 : see if pathconf exists
9011 set pathconf d_pathconf
9012 eval $inlibc
9013
9014 : see if fpathconf exists
9015 set fpathconf d_fpathconf
9016 eval $inlibc
9017
9018
9019 : check for fpos64_t
9020 echo " "
9021 echo "Checking to see if you have fpos64_t..." >&4
9022 $cat >try.c <<EOCP
9023 #include <stdio.h>
9024 int main() { fpos64_t x = 7; }
9025 EOCP
9026 set try
9027 if eval $compile; then
9028         val="$define"
9029         echo "You have fpos64_t."
9030 else
9031         val="$undef"
9032         echo "You do not have fpos64_t."
9033         case "$fpossize" in
9034         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9035         esac
9036 fi
9037 $rm -f try.* try
9038 set d_fpos64_t
9039 eval $setvar
9040
9041 hasstruct='varname=$1; struct=$2; shift; shift;
9042 while $test $# -ge 2; do
9043         case "$1" in
9044         $define) echo "#include <$2>";;
9045         esac ;
9046     shift 2;
9047 done > try.c;
9048 echo "int main () { struct $struct foo; }" >> try.c;
9049 set try;
9050 if eval $compile; then
9051         val="$define";
9052 else
9053         val="$undef";
9054 fi;
9055 set $varname;
9056 eval $setvar;
9057 $rm -f try.c try.o'
9058
9059 : see if this is a sys/param system
9060 set sys/param.h i_sysparam
9061 eval $inhdr
9062
9063 : see if this is a sys/mount.h system
9064 set sys/mount.h i_sysmount
9065 eval $inhdr
9066
9067 : see if sys/types.h has to be included
9068 set sys/types.h i_systypes
9069 eval $inhdr
9070
9071
9072 echo " "
9073 echo "Checking to see if your system supports struct fs_data..." >&4
9074 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9075 eval $hasstruct
9076 case "$d_fs_data_s" in
9077 "$define")      echo "Yes, it does."   ;;
9078 *)              echo "No, it doesn't." ;;
9079 esac
9080
9081 : see if fseeko exists
9082 set fseeko d_fseeko
9083 eval $inlibc
9084 case "$longsize" in
9085 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9086 esac
9087
9088 : see if fsetpos exists
9089 set fsetpos d_fsetpos
9090 eval $inlibc
9091
9092
9093 : see if fstatfs exists
9094 set fstatfs d_fstatfs
9095 eval $inlibc
9096
9097
9098 : see if statvfs exists
9099 set statvfs d_statvfs
9100 eval $inlibc
9101
9102 : see if fstatvfs exists
9103 set fstatvfs d_fstatvfs
9104 eval $inlibc
9105
9106
9107 : see if ftello exists
9108 set ftello d_ftello
9109 eval $inlibc
9110 case "$longsize" in
9111 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9112 esac
9113
9114 : see if getcwd exists
9115 set getcwd d_getcwd
9116 eval $inlibc
9117
9118
9119 : see if getfsstat exists
9120 set getfsstat d_getfsstat
9121 eval $inlibc
9122
9123 : see if getgrent exists
9124 set getgrent d_getgrent
9125 eval $inlibc
9126
9127 : see if gethostbyaddr exists
9128 set gethostbyaddr d_gethbyaddr
9129 eval $inlibc
9130
9131 : see if gethostbyname exists
9132 set gethostbyname d_gethbyname
9133 eval $inlibc
9134
9135 : see if gethostent exists
9136 set gethostent d_gethent
9137 eval $inlibc
9138
9139 : see how we will look up host name
9140 echo " "
9141 call=''
9142 if set gethostname val -f d_gethname; eval $csym; $val; then
9143         echo 'gethostname() found.' >&4
9144         d_gethname="$define"
9145         call=gethostname
9146 fi
9147 if set uname val -f d_uname; eval $csym; $val; then
9148         if ./xenix; then
9149                 $cat <<'EOM'
9150 uname() was found, but you're running xenix, and older versions of xenix
9151 have a broken uname(). If you don't really know whether your xenix is old
9152 enough to have a broken system call, use the default answer.
9153
9154 EOM
9155                 dflt=y
9156                 case "$d_uname" in
9157                 "$define") dflt=n;;
9158                 esac
9159                 rp='Is your uname() broken?'
9160                 . ./myread
9161                 case "$ans" in
9162                 n*) d_uname="$define"; call=uname;;
9163                 esac
9164         else
9165                 echo 'uname() found.' >&4
9166                 d_uname="$define"
9167                 case "$call" in
9168                 '') call=uname ;;
9169                 esac
9170         fi
9171 fi
9172 case "$d_gethname" in
9173 '') d_gethname="$undef";;
9174 esac
9175 case "$d_uname" in
9176 '') d_uname="$undef";;
9177 esac
9178 case "$d_uname$d_gethname" in
9179 *define*)
9180         dflt=n
9181         cat <<EOM
9182  
9183 Every now and then someone has a $call() that lies about the hostname
9184 but can't be fixed for political or economic reasons.  If you wish, I can
9185 pretend $call() isn't there and maybe compute hostname at run-time
9186 thanks to the '$phostname' command.
9187
9188 EOM
9189         rp="Shall I ignore $call() from now on?"
9190         . ./myread
9191         case "$ans" in
9192         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9193         esac;;
9194 esac
9195 case "$phostname" in
9196 '') aphostname='';;
9197 *) case "$aphostname" in
9198         /*) ;;
9199         *) set X $phostname
9200                 shift
9201                 file=$1
9202                 shift
9203                 file=`./loc $file $file $pth`
9204                 aphostname=`echo $file $*`
9205                 ;;
9206         esac
9207         ;;
9208 esac
9209 case "$d_uname$d_gethname" in
9210 *define*) ;;
9211 *)
9212         case "$phostname" in
9213         '')
9214                 echo "There will be no way for $package to get your hostname." >&4;;
9215         *)
9216         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9217                 ;;
9218         esac;;
9219 esac
9220 case "$d_phostname" in
9221 '') d_phostname="$undef";;
9222 esac
9223
9224 : see if this is a netdb.h system
9225 set netdb.h i_netdb
9226 eval $inhdr
9227
9228 : see if prototypes for various gethostxxx netdb.h functions are available
9229 echo " "
9230 set d_gethostprotos gethostent $i_netdb netdb.h
9231 eval $hasproto
9232
9233 : see if getlogin exists
9234 set getlogin d_getlogin
9235 eval $inlibc
9236
9237 : see if getmnt exists
9238 set getmnt d_getmnt
9239 eval $inlibc
9240
9241 : see if getmntent exists
9242 set getmntent d_getmntent
9243 eval $inlibc
9244
9245 : see if getnetbyaddr exists
9246 set getnetbyaddr d_getnbyaddr
9247 eval $inlibc
9248
9249 : see if getnetbyname exists
9250 set getnetbyname d_getnbyname
9251 eval $inlibc
9252
9253 : see if getnetent exists
9254 set getnetent d_getnent
9255 eval $inlibc
9256
9257 : see if prototypes for various getnetxxx netdb.h functions are available
9258 echo " "
9259 set d_getnetprotos getnetent $i_netdb netdb.h
9260 eval $hasproto
9261
9262
9263 : see if getprotobyname exists
9264 set getprotobyname d_getpbyname
9265 eval $inlibc
9266
9267 : see if getprotobynumber exists
9268 set getprotobynumber d_getpbynumber
9269 eval $inlibc
9270
9271 : see if getprotoent exists
9272 set getprotoent d_getpent
9273 eval $inlibc
9274
9275 : see if getpgid exists
9276 set getpgid d_getpgid
9277 eval $inlibc
9278
9279 : see if getpgrp2 exists
9280 set getpgrp2 d_getpgrp2
9281 eval $inlibc
9282
9283 : see if getppid exists
9284 set getppid d_getppid
9285 eval $inlibc
9286
9287 : see if getpriority exists
9288 set getpriority d_getprior
9289 eval $inlibc
9290
9291 : see if prototypes for various getprotoxxx netdb.h functions are available
9292 echo " "
9293 set d_getprotoprotos getprotoent $i_netdb netdb.h
9294 eval $hasproto
9295
9296 : see if getpwent exists
9297 set getpwent d_getpwent
9298 eval $inlibc
9299
9300
9301 : see if getservbyname exists
9302 set getservbyname d_getsbyname
9303 eval $inlibc
9304
9305 : see if getservbyport exists
9306 set getservbyport d_getsbyport
9307 eval $inlibc
9308
9309 : see if getservent exists
9310 set getservent d_getsent
9311 eval $inlibc
9312
9313 : see if prototypes for various getservxxx netdb.h functions are available
9314 echo " "
9315 set d_getservprotos getservent $i_netdb netdb.h
9316 eval $hasproto
9317
9318 : see if getspent exists
9319 set getspent d_getspent
9320 eval $inlibc
9321
9322 : see if getspnam exists
9323 set getspnam d_getspnam
9324 eval $inlibc
9325
9326 : see if gettimeofday or ftime exists
9327 set gettimeofday d_gettimeod
9328 eval $inlibc
9329 case "$d_gettimeod" in
9330 "$undef")
9331         set ftime d_ftime 
9332         eval $inlibc
9333         ;;
9334 *)
9335         val="$undef"; set d_ftime; eval $setvar
9336         ;;
9337 esac
9338 case "$d_gettimeod$d_ftime" in
9339 "$undef$undef")
9340         echo " "
9341         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9342         ;;
9343 esac
9344
9345 : see if this is an grp system
9346 set grp.h i_grp
9347 eval $inhdr
9348
9349 case "$i_grp" in
9350 $define)
9351         xxx=`./findhdr grp.h`
9352         $cppstdin $cppflags $cppminus < $xxx >$$.h
9353
9354         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9355                 val="$define"
9356         else
9357                 val="$undef"
9358         fi
9359         set d_grpasswd
9360         eval $setvar
9361
9362         $rm -f $$.h
9363         ;;
9364 *)
9365         val="$undef";
9366         set d_grpasswd; eval $setvar
9367         ;;
9368 esac
9369
9370 : see if hasmntopt exists
9371 set hasmntopt d_hasmntopt
9372 eval $inlibc
9373
9374 : see if this is a netinet/in.h or sys/in.h system
9375 set netinet/in.h i_niin sys/in.h i_sysin
9376 eval $inhdr
9377
9378 : see if arpa/inet.h has to be included
9379 set arpa/inet.h i_arpainet
9380 eval $inhdr
9381
9382 : see if htonl --and friends-- exists
9383 val=''
9384 set htonl val
9385 eval $inlibc
9386
9387 : Maybe they are macros.
9388 case "$val" in
9389 $undef)
9390         $cat >htonl.c <<EOM
9391 #include <stdio.h>
9392 #include <sys/types.h>
9393 #$i_niin I_NETINET_IN
9394 #$i_sysin I_SYS_IN
9395 #$i_arpainet I_ARPA_INET
9396 #ifdef I_NETINET_IN
9397 #include <netinet/in.h>
9398 #endif
9399 #ifdef I_SYS_IN
9400 #include <sys/in.h>
9401 #endif
9402 #ifdef I_ARPA_INET
9403 #include <arpa/inet.h>
9404 #endif
9405 #ifdef htonl
9406 printf("Defined as a macro.");
9407 #endif
9408 EOM
9409         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9410         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9411                 val="$define"
9412                 echo "But it seems to be defined as a macro." >&4
9413         fi
9414         $rm -f htonl.?
9415         ;;
9416 esac
9417 set d_htonl
9418 eval $setvar
9419
9420 : see if iconv exists
9421 set iconv d_iconv
9422 eval $inlibc
9423
9424 : index or strchr
9425 echo " "
9426 if set index val -f; eval $csym; $val; then
9427         if set strchr val -f d_strchr; eval $csym; $val; then
9428                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9429                         val="$define"
9430                         vali="$undef"
9431                         echo "strchr() found." >&4
9432                 else
9433                         val="$undef"
9434                         vali="$define"
9435                         echo "index() found." >&4
9436                 fi
9437         else
9438                 val="$undef"
9439                 vali="$define"
9440                 echo "index() found." >&4
9441         fi
9442 else
9443         if set strchr val -f d_strchr; eval $csym; $val; then
9444                 val="$define"
9445                 vali="$undef"
9446                 echo "strchr() found." >&4
9447         else
9448                 echo "No index() or strchr() found!" >&4
9449                 val="$undef"
9450                 vali="$undef"
9451         fi
9452 fi
9453 set d_strchr; eval $setvar
9454 val="$vali"
9455 set d_index; eval $setvar
9456
9457 : check whether inet_aton exists
9458 set inet_aton d_inetaton
9459 eval $inlibc
9460
9461 : see if inttypes.h is available
9462 : we want a real compile instead of Inhdr because some systems
9463 : have an inttypes.h which includes non-existent headers
9464 echo " "
9465 $cat >try.c <<EOCP
9466 #include <inttypes.h>
9467 int main() {
9468         static int32_t foo32 = 0x12345678;
9469 }
9470 EOCP
9471 set try
9472 if eval $compile; then
9473         echo "<inttypes.h> found." >&4
9474         val="$define"
9475 else
9476         echo "<inttypes.h> NOT found." >&4
9477         val="$undef"
9478 fi
9479 $rm -f try.c try
9480 set i_inttypes
9481 eval $setvar
9482
9483 : check for int64_t
9484 echo " "
9485 echo "Checking to see if you have int64_t..." >&4
9486 $cat >try.c <<EOCP
9487 #include <sys/types.h>
9488 #$i_inttypes I_INTTYPES
9489 #ifdef I_INTTYPES
9490 #include <inttypes.h>
9491 #endif
9492 int main() { int64_t x = 7; }
9493 EOCP
9494 set try
9495 if eval $compile; then
9496         val="$define"
9497         echo "You have int64_t."
9498 else
9499         val="$undef"
9500         echo "You do not have int64_t."
9501 fi
9502 $rm -f try try.*
9503 set d_int64_t
9504 eval $setvar
9505
9506 : Look for isascii
9507 echo " "
9508 $cat >isascii.c <<'EOCP'
9509 #include <stdio.h>
9510 #include <ctype.h>
9511 int main() {
9512         int c = 'A';
9513         if (isascii(c))
9514                 exit(0);
9515         else
9516                 exit(1);
9517 }
9518 EOCP
9519 set isascii
9520 if eval $compile; then
9521         echo "isascii() found." >&4
9522         val="$define"
9523 else
9524         echo "isascii() NOT found." >&4
9525         val="$undef"
9526 fi
9527 set d_isascii
9528 eval $setvar
9529 $rm -f isascii*
9530
9531 : see if killpg exists
9532 set killpg d_killpg
9533 eval $inlibc
9534
9535 : see if lchown exists
9536 echo " "
9537 $cat > try.c <<'EOCP'
9538 /* System header to define __stub macros and hopefully few prototypes,
9539     which can conflict with char lchown(); below.  */
9540 #include <assert.h>
9541 /* Override any gcc2 internal prototype to avoid an error.  */
9542 /* We use char because int might match the return type of a gcc2
9543    builtin and then its argument prototype would still apply.  */
9544 char lchown();
9545 int main() {
9546     /*  The GNU C library defines this for functions which it implements
9547         to always fail with ENOSYS.  Some functions are actually named
9548         something starting with __ and the normal name is an alias.  */
9549 #if defined (__stub_lchown) || defined (__stub___lchown)
9550 choke me
9551 #else
9552 lchown();
9553 #endif
9554 ; return 0; }
9555 EOCP
9556 set try
9557 if eval $compile; then
9558     $echo "lchown() found." >&4
9559     val="$define"
9560 else
9561     $echo "lchown() NOT found." >&4
9562     val="$undef"
9563 fi
9564 set d_lchown
9565 eval $setvar
9566
9567 : See if number of significant digits in a double precision number is known
9568 echo " "
9569 $cat >ldbl_dig.c <<EOM
9570 #$i_limits I_LIMITS
9571 #$i_float I_FLOAT
9572 #ifdef I_LIMITS
9573 #include <limits.h>
9574 #endif
9575 #ifdef I_FLOAT
9576 #include <float.h>
9577 #endif
9578 #ifdef LDBL_DIG
9579 printf("Contains LDBL_DIG");
9580 #endif
9581 EOM
9582 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9583 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9584         echo "LDBL_DIG found." >&4
9585         val="$define"
9586 else
9587         echo "LDBL_DIG NOT found." >&4
9588         val="$undef"
9589 fi
9590 $rm -f ldbl_dig.?
9591 set d_ldbl_dig
9592 eval $setvar
9593
9594 : see if link exists
9595 set link d_link
9596 eval $inlibc
9597
9598 : see if localeconv exists
9599 set localeconv d_locconv
9600 eval $inlibc
9601
9602 : see if lockf exists
9603 set lockf d_lockf
9604 eval $inlibc
9605
9606 : check for long long
9607 echo " "
9608 echo "Checking to see if you have long long..." >&4
9609 echo 'int main() { long long x = 7; return 0; }' > try.c
9610 set try
9611 if eval $compile; then
9612         val="$define"
9613         echo "You have have long long."
9614 else
9615         val="$undef"
9616         echo "You do not have long long."
9617 fi
9618 $rm try.*
9619 set d_longlong
9620 eval $setvar
9621
9622 : check for length of long long
9623 case "${d_longlong}${longlongsize}" in
9624 $define)
9625         echo " "
9626         echo "Checking to see how big your long longs are..." >&4
9627         $cat >try.c <<'EOCP'
9628 #include <stdio.h>
9629 int main()
9630 {
9631     printf("%d\n", (int)sizeof(long long));
9632     return(0);
9633 }
9634 EOCP
9635         set try
9636         if eval $compile_ok; then
9637                 longlongsize=`./try$exe_ext`
9638                 echo "Your long longs are $longlongsize bytes long."
9639         else
9640                 dflt='8'
9641                 echo " "
9642                 echo "(I can't seem to compile the test program.  Guessing...)"
9643                 rp="What is the size of a long long (in bytes)?"
9644                 . ./myread
9645                 longlongsize="$ans"
9646         fi
9647         if $test "X$longsize" = "X$longlongsize"; then
9648                 echo "(That isn't any different from an ordinary long.)"
9649         fi      
9650         ;;
9651 esac
9652 $rm -f try.* try
9653
9654 : see if prototype for lseek is available
9655 echo " "
9656 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9657 eval $hasproto
9658
9659 : see if lstat exists
9660 set lstat d_lstat
9661 eval $inlibc
9662
9663 : see if madvise exists
9664 set madvise d_madvise
9665 eval $inlibc
9666
9667 : see if mblen exists
9668 set mblen d_mblen
9669 eval $inlibc
9670
9671 : see if mbstowcs exists
9672 set mbstowcs d_mbstowcs
9673 eval $inlibc
9674
9675 : see if mbtowc exists
9676 set mbtowc d_mbtowc
9677 eval $inlibc
9678
9679 : see if memchr exists
9680 set memchr d_memchr
9681 eval $inlibc
9682
9683 : see if memcmp exists
9684 set memcmp d_memcmp
9685 eval $inlibc
9686
9687 : see if memcpy exists
9688 set memcpy d_memcpy
9689 eval $inlibc
9690
9691 : see if memmove exists
9692 set memmove d_memmove
9693 eval $inlibc
9694
9695 : see if memset exists
9696 set memset d_memset
9697 eval $inlibc
9698
9699 : see if mkdir exists
9700 set mkdir d_mkdir
9701 eval $inlibc
9702
9703 : see if mkdtemp exists
9704 set mkdtemp d_mkdtemp
9705 eval $inlibc
9706
9707 : see if mkfifo exists
9708 set mkfifo d_mkfifo
9709 eval $inlibc
9710
9711 : see if mkstemp exists
9712 set mkstemp d_mkstemp
9713 eval $inlibc
9714
9715 : see if mkstemps exists
9716 set mkstemps d_mkstemps
9717 eval $inlibc
9718
9719 : see if mktime exists
9720 set mktime d_mktime
9721 eval $inlibc
9722
9723 : see if this is a sys/mman.h system
9724 set sys/mman.h i_sysmman
9725 eval $inhdr
9726
9727 : see if mmap exists
9728 set mmap d_mmap
9729 eval $inlibc
9730 : see what shmat returns
9731 : default to something harmless
9732 mmaptype='void *'
9733 case "$i_sysmman$d_mmap" in
9734 "$define$define")
9735         $cat >mmap.c <<'END'
9736 #include <sys/mman.h>
9737 void *mmap();
9738 END
9739         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9740                 mmaptype='void *'
9741         else
9742                 mmaptype='caddr_t'
9743         fi
9744         echo "and it returns ($mmaptype)." >&4
9745         ;;
9746 esac
9747
9748
9749
9750 : see if mprotect exists
9751 set mprotect d_mprotect
9752 eval $inlibc
9753
9754 : see if msgctl exists
9755 set msgctl d_msgctl
9756 eval $inlibc
9757
9758 : see if msgget exists
9759 set msgget d_msgget
9760 eval $inlibc
9761
9762 : see if msgsnd exists
9763 set msgsnd d_msgsnd
9764 eval $inlibc
9765
9766 : see if msgrcv exists
9767 set msgrcv d_msgrcv
9768 eval $inlibc
9769
9770 : see how much of the 'msg*(2)' library is present.
9771 h_msg=true
9772 echo " "
9773 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9774 *"$undef"*) h_msg=false;;
9775 esac
9776 case "$osname" in
9777 freebsd)
9778     case "`ipcs 2>&1`" in
9779     "SVID messages"*"not configured"*)
9780         echo "Your $osname does not have the msg*(2) configured." >&4
9781         h_msg=false
9782         val="$undef"
9783         set msgctl d_msgctl
9784         eval $setvar
9785         set msgget d_msgget
9786         eval $setvar
9787         set msgsnd d_msgsnd
9788         eval $setvar
9789         set msgrcv d_msgrcv
9790         eval $setvar
9791         ;;
9792     esac
9793     ;;
9794 esac
9795 : we could also check for sys/ipc.h ...
9796 if $h_msg && $test `./findhdr sys/msg.h`; then
9797         echo "You have the full msg*(2) library." >&4
9798         val="$define"
9799 else
9800         echo "You don't have the full msg*(2) library." >&4
9801         val="$undef"
9802 fi
9803 set d_msg
9804 eval $setvar
9805
9806 : see if msync exists
9807 set msync d_msync
9808 eval $inlibc
9809
9810 : see if munmap exists
9811 set munmap d_munmap
9812 eval $inlibc
9813
9814 : see if nice exists
9815 set nice d_nice
9816 eval $inlibc
9817
9818
9819 echo " "
9820 echo "Checking which 64-bit integer type we could use..." >&4
9821
9822 case "$intsize" in
9823 8) val=int
9824    set quadtype
9825    eval $setvar
9826    val='"unsigned int"'
9827    set uquadtype
9828    eval $setvar
9829    quadkind=1
9830    ;;
9831 *) case "$longsize" in
9832    8) val=long
9833       set quadtype
9834       eval $setvar
9835       val='"unsigned long"'
9836       set uquadtype
9837       eval $setvar
9838       quadkind=2
9839       ;;
9840    *) case "$d_longlong:$longlongsize" in
9841       define:8)
9842         val='"long long"'
9843         set quadtype
9844         eval $setvar
9845         val='"unsigned long long"'
9846         set uquadtype
9847         eval $setvar
9848         quadkind=3
9849         ;;
9850       *) case "$d_int64_t" in
9851          define)
9852            val=int64_t
9853            set quadtype
9854            eval $setvar
9855            val=uint64_t
9856            set uquadtype
9857            eval $setvar
9858            quadkind=4
9859            ;;
9860          esac
9861          ;;
9862       esac
9863       ;;
9864    esac
9865    ;;
9866 esac
9867
9868 case "$quadtype" in
9869 '')     echo "Alas, no 64-bit integer types in sight." >&4
9870         d_quad="$undef"
9871         ;;
9872 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
9873             verb="will"
9874         else
9875             verb="could"
9876         fi
9877         echo "We $verb use '$quadtype' for 64-bit integers." >&4
9878         d_quad="$define"
9879         ;;
9880 esac
9881
9882 : check for length of character
9883 echo " "
9884 case "$charsize" in
9885 '')
9886         echo "Checking to see how big your characters are (hey, you never know)..." >&4
9887         $cat >try.c <<'EOCP'
9888 #include <stdio.h>
9889 int main()
9890 {
9891     printf("%d\n", (int)sizeof(char));
9892     exit(0);
9893 }
9894 EOCP
9895         set try
9896         if eval $compile_ok; then
9897                 dflt=`./try`
9898         else
9899                 dflt='1'
9900                 echo "(I can't seem to compile the test program.  Guessing...)"
9901         fi
9902         ;;
9903 *)
9904         dflt="$charsize"
9905         ;;
9906 esac
9907 rp="What is the size of a character (in bytes)?"
9908 . ./myread
9909 charsize="$ans"
9910 $rm -f try.c try
9911
9912
9913 echo " "
9914 $echo "Choosing the C types to be used for Perl's internal types..." >&4
9915
9916 case "$use64bitint:$d_quad:$quadtype" in
9917 define:define:?*)
9918         ivtype="$quadtype"
9919         uvtype="$uquadtype"
9920         ivsize=8
9921         uvsize=8
9922         ;;
9923 *)      ivtype="long"
9924         uvtype="unsigned long"
9925         ivsize=$longsize
9926         uvsize=$longsize
9927         ;;
9928 esac
9929
9930 case "$uselongdouble:$d_longdbl" in
9931 define:define)
9932         nvtype="long double"
9933         nvsize=$longdblsize
9934         ;;
9935 *)      nvtype=double
9936         nvsize=$doublesize
9937         ;;
9938 esac
9939
9940 $echo "(IV will be "$ivtype", $ivsize bytes)"
9941 $echo "(UV will be "$uvtype", $uvsize bytes)"
9942 $echo "(NV will be "$nvtype", $nvsize bytes)"
9943
9944 $cat >try.c <<EOCP
9945 #$i_inttypes I_INTTYPES
9946 #ifdef I_INTTYPES
9947 #include <inttypes.h>
9948 #endif
9949 #include <stdio.h>
9950 int main() {
9951 #ifdef INT8
9952    int8_t i =  INT8_MAX;
9953   uint8_t u = UINT8_MAX;
9954   printf("int8_t\n");
9955 #endif
9956 #ifdef INT16
9957    int16_t i =  INT16_MAX;
9958   uint16_t i = UINT16_MAX;
9959   printf("int16_t\n");
9960 #endif
9961 #ifdef INT32
9962    int32_t i =  INT32_MAX;
9963   uint32_t u = UINT32_MAX;
9964   printf("int32_t\n");
9965 #endif
9966 }
9967 EOCP
9968
9969 case "$i8type" in
9970 '')     case "$charsize" in
9971         1)      i8type=char
9972                 u8type="unsigned char"
9973                 i8size=$charsize
9974                 u8size=$charsize
9975                 ;;
9976         esac
9977         ;;
9978 esac
9979 case "$i8type" in
9980 '')     set try -DINT8
9981         if eval $compile; then
9982                 case "`./try$exe_ext`" in
9983                 int8_t) i8type=int8_t
9984                         u8type=uint8_t
9985                         i8size=1
9986                         u8size=1
9987                         ;;
9988                 esac
9989         fi
9990         ;;
9991 esac
9992 case "$i8type" in
9993 '')     if $test $charsize -ge 1; then
9994                 i8type=char
9995                 u8type="unsigned char"
9996                 i8size=$charsize
9997                 u8size=$charsize
9998         fi
9999         ;;
10000 esac
10001
10002 case "$i16type" in
10003 '')     case "$shortsize" in
10004         2)      i16type=short
10005                 u16type="unsigned short"
10006                 i16size=$shortsize
10007                 u16size=$shortsize
10008                 ;;
10009         esac
10010         ;;
10011 esac
10012 case "$i16type" in
10013 '')     set try -DINT16
10014         if eval $compile; then
10015                 case "`./try$exe_ext`" in
10016                 int16_t)
10017                         i16type=int16_t
10018                         u16type=uint16_t
10019                         i16size=2
10020                         u16size=2
10021                         ;;
10022                 esac
10023         fi
10024         ;;
10025 esac
10026 case "$i16type" in
10027 '')     if $test $shortsize -ge 2; then
10028                 i16type=short
10029                 u16type="unsigned short"
10030                 i16size=$shortsize
10031                 u16size=$shortsize
10032         fi
10033         ;;
10034 esac
10035
10036 case "$i32type" in
10037 '')     case "$longsize" in
10038         4)      i32type=long
10039                 u32type="unsigned long"
10040                 i32size=$longsize
10041                 u32size=$longsize
10042                 ;;
10043         *)      case "$intsize" in
10044                 4)      i32type=int
10045                         u32type="unsigned int"
10046                         i32size=$intsize
10047                         u32size=$intsize
10048                         ;;
10049                 esac
10050                 ;;
10051         esac
10052         ;;
10053 esac
10054 case "$i32type" in
10055 '')     set try -DINT32
10056         if eval $compile; then
10057                 case "`./try$exe_ext`" in
10058                 int32_t)
10059                         i32type=int32_t
10060                         u32type=uint32_t
10061                         i32size=4
10062                         u32size=4
10063                         ;;
10064                 esac
10065         fi
10066         ;;
10067 esac
10068 case "$i32type" in
10069 '')     if $test $intsize -ge 4; then
10070                 i32type=int
10071                 u32type="unsigned int"
10072                 i32size=$intsize
10073                 u32size=$intsize
10074         fi
10075         ;;
10076 esac
10077
10078 case "$i64type" in
10079 '')     case "$d_quad:$quadtype" in
10080         define:?*)
10081                 i64type="$quadtype"
10082                 u64type="$uquadtype"
10083                 i64size=8
10084                 u64size=8
10085                 ;;
10086         esac
10087         ;;
10088 esac
10089
10090 $echo "Checking whether your NVs can preserve your UVs..." >&4
10091 $cat <<EOP >try.c
10092 #include <stdio.h>
10093 int main() {
10094     $uvtype k = ($uvtype)~0, l;
10095     $nvtype d;
10096     l = k;
10097     d = ($nvtype)l;
10098     l = ($uvtype)d;
10099     if (l == k)
10100        printf("preserve\n");
10101     exit(0);
10102 }
10103 EOP
10104 set try
10105 if eval $compile; then
10106         case "`./try$exe_ext`" in
10107         preserve) d_nv_preserves_uv="$define" ;;
10108         esac
10109 fi      
10110 case "$d_nv_preserves_uv" in
10111 $define) $echo "Yes, they can."  2>&1 ;;
10112 *)       $echo "No, they can't." 2>&1
10113          d_nv_preserves_uv="$undef"
10114          ;;
10115 esac
10116
10117 $rm -f try.* try
10118
10119
10120 : check for off64_t
10121 echo " "
10122 echo "Checking to see if you have off64_t..." >&4
10123 $cat >try.c <<EOCP
10124 #include <sys/types.h>
10125 #include <unistd.h>
10126 int main() { off64_t x = 7; }
10127 EOCP
10128 set try
10129 if eval $compile; then
10130         val="$define"
10131         echo "You have off64_t."
10132 else
10133         val="$undef"
10134         echo "You do not have off64_t."
10135         case "$lseeksize" in
10136         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10137         esac
10138 fi
10139 $rm -f try.* try
10140 set d_off64_t
10141 eval $setvar
10142
10143 : see if POSIX threads are available
10144 set pthread.h i_pthread
10145 eval $inhdr
10146
10147
10148
10149
10150 : how to create joinable pthreads
10151 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10152         echo " "
10153         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10154         $cat >try.c <<'EOCP'
10155 #include <pthread.h>
10156 int main() {
10157     int detachstate = JOINABLE;
10158 }
10159 EOCP
10160         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10161         if eval $compile; then
10162                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10163                 val="$undef" # Yes, undef.
10164                 set d_old_pthread_create_joinable
10165                 eval $setvar
10166                 val=""
10167                 set old_pthread_create_joinable
10168                 eval $setvar
10169         else
10170                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10171                 if eval $compile; then
10172                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10173                         val="$define"
10174                         set d_old_pthread_create_joinable
10175                         eval $setvar
10176                         val=PTHREAD_CREATE_UNDETACHED
10177                         set old_pthread_create_joinable
10178                         eval $setvar
10179                 else            
10180                         set try -DJOINABLE=__UNDETACHED
10181                         if eval $compile; then
10182                                 echo "You seem to use __UNDETACHED." >&4
10183                                 val="$define"
10184                                 set d_old_pthread_create_joinable
10185                                 eval $setvar
10186                                 val=__UNDETACHED
10187                                 set old_pthread_create_joinable
10188                                 eval $setvar
10189                         else
10190                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10191                                 val="$define"
10192                                 set d_old_pthread_create_joinable
10193                                 eval $setvar
10194                                 val=0
10195                                 set old_pthread_create_joinable
10196                                 eval $setvar
10197                         fi
10198                 fi
10199         fi
10200         $rm -f try try.*
10201 else
10202     d_old_pthread_create_joinable="$undef"
10203     old_pthread_create_joinable=""
10204 fi
10205
10206 : see if pause exists
10207 set pause d_pause
10208 eval $inlibc
10209
10210 : see if pipe exists
10211 set pipe d_pipe
10212 eval $inlibc
10213
10214 : see if poll exists
10215 set poll d_poll
10216 eval $inlibc
10217
10218
10219 : see whether the various POSIXish _yields exist
10220 $cat >try.c <<EOP
10221 #include <pthread.h>
10222 #include <stdio.h>
10223 int main() {
10224 #ifdef SCHED_YIELD
10225         sched_yield();
10226 #else
10227 #ifdef PTHREAD_YIELD
10228         pthread_yield();
10229 #else
10230 #ifdef PTHREAD_YIELD_NULL
10231         pthread_yield(NULL);
10232 #endif
10233 #endif
10234 #endif
10235 }
10236 EOP
10237 : see if sched_yield exists
10238 set try -DSCHED_YIELD
10239 if eval $compile; then
10240     val="$define"
10241     sched_yield='sched_yield()'
10242 else
10243     val="$undef"
10244 fi
10245 case "$usethreads" in
10246 $define)
10247         case "$val" in
10248         $define) echo 'sched_yield() found.' >&4        ;;
10249         *)       echo 'sched_yield() NOT found.' >&4    ;;
10250         esac
10251 esac
10252 set d_sched_yield
10253 eval $setvar
10254
10255 : see if pthread_yield exists
10256 set try -DPTHREAD_YIELD
10257 if eval $compile; then
10258     val="$define"
10259     case "$sched_yield" in
10260     '') sched_yield='pthread_yield()' ;;
10261     esac
10262 else
10263     set try -DPTHREAD_YIELD_NULL
10264     if eval $compile; then
10265         val="$define"
10266         case "$sched_yield" in
10267         '') sched_yield='pthread_yield(NULL)' ;;
10268         esac
10269     else
10270         val="$undef"
10271     fi
10272 fi
10273 case "$usethreads" in
10274 $define)
10275         case "$val" in
10276         $define) echo 'pthread_yield() found.' >&4      ;;
10277         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10278         esac
10279         ;;
10280 esac
10281 set d_pthread_yield
10282 eval $setvar
10283
10284 case "$sched_yield" in
10285 '') sched_yield=undef ;;
10286 esac
10287
10288 $rm -f try try.*
10289
10290 : see if this is a pwd.h system
10291 set pwd.h i_pwd
10292 eval $inhdr
10293
10294 case "$i_pwd" in
10295 $define)
10296         xxx=`./findhdr pwd.h`
10297         $cppstdin $cppflags $cppminus < $xxx >$$.h
10298
10299         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10300                 val="$define"
10301         else
10302                 val="$undef"
10303         fi
10304         set d_pwquota
10305         eval $setvar
10306
10307         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10308                 val="$define"
10309         else
10310                 val="$undef"
10311         fi
10312         set d_pwage
10313         eval $setvar
10314
10315         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10316                 val="$define"
10317         else
10318                 val="$undef"
10319         fi
10320         set d_pwchange
10321         eval $setvar
10322
10323         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10324                 val="$define"
10325         else
10326                 val="$undef"
10327         fi
10328         set d_pwclass
10329         eval $setvar
10330
10331         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10332                 val="$define"
10333         else
10334                 val="$undef"
10335         fi
10336         set d_pwexpire
10337         eval $setvar
10338
10339         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10340                 val="$define"
10341         else
10342                 val="$undef"
10343         fi
10344         set d_pwcomment
10345         eval $setvar
10346
10347         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10348                 val="$define"
10349         else
10350                 val="$undef"
10351         fi
10352         set d_pwgecos
10353         eval $setvar
10354
10355         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10356                 val="$define"
10357         else
10358                 val="$undef"
10359         fi
10360         set d_pwpasswd
10361         eval $setvar
10362
10363         $rm -f $$.h
10364         ;;
10365 *)
10366         val="$undef"; 
10367         set d_pwquota; eval $setvar
10368         set d_pwage; eval $setvar
10369         set d_pwchange; eval $setvar
10370         set d_pwclass; eval $setvar
10371         set d_pwexpire; eval $setvar
10372         set d_pwcomment; eval $setvar
10373         set d_pwgecos; eval $setvar
10374         set d_pwpasswd; eval $setvar
10375         ;;
10376 esac
10377
10378 : see if readdir and friends exist
10379 set readdir d_readdir
10380 eval $inlibc
10381 set seekdir d_seekdir
10382 eval $inlibc
10383 set telldir d_telldir
10384 eval $inlibc
10385 set rewinddir d_rewinddir
10386 eval $inlibc
10387
10388 : see if readlink exists
10389 set readlink d_readlink
10390 eval $inlibc
10391
10392 : see if rename exists
10393 set rename d_rename
10394 eval $inlibc
10395
10396 : see if rmdir exists
10397 set rmdir d_rmdir
10398 eval $inlibc
10399
10400 : see if memory.h is available.
10401 val=''
10402 set memory.h val
10403 eval $inhdr
10404
10405 : See if it conflicts with string.h
10406 case "$val" in
10407 $define)
10408         case "$strings" in
10409         '') ;;
10410         *)
10411                 $cppstdin $cppflags $cppminus < $strings > mem.h
10412                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10413                         echo " "
10414                         echo "We won't be including <memory.h>."
10415                         val="$undef"
10416                 fi
10417                 $rm -f mem.h
10418                 ;;
10419         esac
10420 esac
10421 set i_memory
10422 eval $setvar
10423
10424 : can bcopy handle overlapping blocks?
10425 val="$undef"
10426 case "$d_bcopy" in
10427 "$define")
10428         echo " "
10429         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10430         $cat >try.c <<EOCP
10431 #$i_memory I_MEMORY
10432 #$i_stdlib I_STDLIB
10433 #$i_string I_STRING
10434 #$i_unistd I_UNISTD
10435 EOCP
10436         $cat >>try.c <<'EOCP'
10437 #include <stdio.h>
10438 #ifdef I_MEMORY
10439 #  include <memory.h>
10440 #endif
10441 #ifdef I_STDLIB
10442 #  include <stdlib.h>
10443 #endif
10444 #ifdef I_STRING
10445 #  include <string.h>
10446 #else
10447 #  include <strings.h>
10448 #endif
10449 #ifdef I_UNISTD
10450 #  include <unistd.h>  /* Needed for NetBSD */
10451 #endif
10452 int main()
10453 {
10454 char buf[128], abc[128];
10455 char *b;
10456 int len;
10457 int off;
10458 int align;
10459
10460 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10461
10462 for (align = 7; align >= 0; align--) {
10463         for (len = 36; len; len--) {
10464                 b = buf+align;
10465                 bcopy(abc, b, len);
10466                 for (off = 1; off <= len; off++) {
10467                         bcopy(b, b+off, len);
10468                         bcopy(b+off, b, len);
10469                         if (bcmp(b, abc, len))
10470                                 exit(1);
10471                 }
10472         }
10473 }
10474 exit(0);
10475 }
10476 EOCP
10477         set try
10478         if eval $compile_ok; then
10479                 if ./try 2>/dev/null; then
10480                         echo "Yes, it can."
10481                         val="$define"
10482                 else
10483                         echo "It can't, sorry."
10484                         case "$d_memmove" in
10485                         "$define") echo "But that's Ok since you have memmove()." ;;
10486                         esac
10487                 fi
10488         else
10489                 echo "(I can't compile the test program, so we'll assume not...)"
10490                 case "$d_memmove" in
10491                 "$define") echo "But that's Ok since you have memmove()." ;;
10492                 esac
10493         fi
10494         ;;
10495 esac
10496 $rm -f try.* try core
10497 set d_safebcpy
10498 eval $setvar
10499
10500 : can memcpy handle overlapping blocks?
10501 val="$undef"
10502 case "$d_memcpy" in
10503 "$define")
10504         echo " "
10505         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10506         $cat >try.c <<EOCP
10507 #$i_memory I_MEMORY
10508 #$i_stdlib I_STDLIB
10509 #$i_string I_STRING
10510 #$i_unistd I_UNISTD
10511 EOCP
10512         $cat >>try.c <<'EOCP'
10513 #include <stdio.h>
10514 #ifdef I_MEMORY
10515 #  include <memory.h>
10516 #endif
10517 #ifdef I_STDLIB
10518 #  include <stdlib.h>
10519 #endif
10520 #ifdef I_STRING
10521 #  include <string.h>
10522 #else
10523 #  include <strings.h>
10524 #endif
10525 #ifdef I_UNISTD
10526 #  include <unistd.h>  /* Needed for NetBSD */
10527 #endif
10528 int main()
10529 {
10530 char buf[128], abc[128];
10531 char *b;
10532 int len;
10533 int off;
10534 int align;
10535
10536 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10537    try to store the string in read-only memory. */
10538 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10539
10540 for (align = 7; align >= 0; align--) {
10541         for (len = 36; len; len--) {
10542                 b = buf+align;
10543                 memcpy(b, abc, len);
10544                 for (off = 1; off <= len; off++) {
10545                         memcpy(b+off, b, len);
10546                         memcpy(b, b+off, len);
10547                         if (memcmp(b, abc, len))
10548                                 exit(1);
10549                 }
10550         }
10551 }
10552 exit(0);
10553 }
10554 EOCP
10555         set try
10556         if eval $compile_ok; then
10557                 if ./try 2>/dev/null; then
10558                         echo "Yes, it can."
10559                         val="$define"
10560                 else
10561                         echo "It can't, sorry."
10562                         case "$d_memmove" in
10563                         "$define") echo "But that's Ok since you have memmove()." ;;
10564                         esac
10565                 fi
10566         else
10567                 echo "(I can't compile the test program, so we'll assume not...)"
10568                 case "$d_memmove" in
10569                 "$define") echo "But that's Ok since you have memmove()." ;;
10570                 esac
10571         fi
10572         ;;
10573 esac
10574 $rm -f try.* try core
10575 set d_safemcpy
10576 eval $setvar
10577
10578 : can memcmp be trusted to compare relative magnitude?
10579 val="$undef"
10580 case "$d_memcmp" in
10581 "$define")
10582         echo " "
10583         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10584         $cat >try.c <<EOCP
10585 #$i_memory I_MEMORY
10586 #$i_stdlib I_STDLIB
10587 #$i_string I_STRING
10588 #$i_unistd I_UNISTD
10589 EOCP
10590         $cat >>try.c <<'EOCP'
10591 #include <stdio.h>
10592 #ifdef I_MEMORY
10593 #  include <memory.h>
10594 #endif
10595 #ifdef I_STDLIB
10596 #  include <stdlib.h>
10597 #endif
10598 #ifdef I_STRING
10599 #  include <string.h>
10600 #else
10601 #  include <strings.h>
10602 #endif
10603 #ifdef I_UNISTD
10604 #  include <unistd.h>  /* Needed for NetBSD */
10605 #endif
10606 int main()
10607 {
10608 char a = -1;
10609 char b = 0;
10610 if ((a < b) && memcmp(&a, &b, 1) < 0)
10611         exit(1);
10612 exit(0);
10613 }
10614 EOCP
10615         set try
10616         if eval $compile_ok; then
10617                 if ./try 2>/dev/null; then
10618                         echo "Yes, it can."
10619                         val="$define"
10620                 else
10621                         echo "No, it can't (it uses signed chars)."
10622                 fi
10623         else
10624                 echo "(I can't compile the test program, so we'll assume not...)"
10625         fi
10626         ;;
10627 esac
10628 $rm -f try.* try core
10629 set d_sanemcmp
10630 eval $setvar
10631
10632 : see if select exists
10633 set select d_select
10634 eval $inlibc
10635
10636 : see if semctl exists
10637 set semctl d_semctl
10638 eval $inlibc
10639
10640 : see if semget exists
10641 set semget d_semget
10642 eval $inlibc
10643
10644 : see if semop exists
10645 set semop d_semop
10646 eval $inlibc
10647
10648 : see how much of the 'sem*(2)' library is present.
10649 h_sem=true
10650 echo " "
10651 case "$d_semctl$d_semget$d_semop" in
10652 *"$undef"*) h_sem=false;;
10653 esac
10654 case "$osname" in
10655 freebsd)
10656     case "`ipcs 2>&1`" in
10657     "SVID messages"*"not configured"*)
10658         echo "Your $osname does not have the sem*(2) configured." >&4
10659         h_sem=false
10660         val="$undef"
10661         set semctl d_semctl
10662         eval $setvar
10663         set semget d_semget
10664         eval $setvar
10665         set semop d_semop
10666         eval $setvar
10667         ;;
10668     esac
10669     ;;
10670 esac
10671 : we could also check for sys/ipc.h ...
10672 if $h_sem && $test `./findhdr sys/sem.h`; then
10673         echo "You have the full sem*(2) library." >&4
10674         val="$define"
10675 else
10676         echo "You don't have the full sem*(2) library." >&4
10677         val="$undef"
10678 fi
10679 set d_sem
10680 eval $setvar
10681
10682 : see whether sys/sem.h defines union semun
10683 echo " "
10684 $cat > try.c <<'END'
10685 #include <sys/types.h>
10686 #include <sys/ipc.h>
10687 #include <sys/sem.h>
10688 int main () { union semun semun; semun.buf = 0; }
10689 END
10690 set try
10691 if eval $compile; then
10692     echo "You have union semun in <sys/sem.h>." >&4
10693     val="$define"
10694 else
10695     echo "You do not have union semun in <sys/sem.h>." >&4
10696     val="$undef"
10697 fi
10698 $rm -f try try.c try.h
10699 set d_union_semun
10700 eval $setvar
10701
10702 : see how to do semctl IPC_STAT
10703 case "$d_sem" in
10704 $define)
10705     : see whether semctl IPC_STAT can use union semun
10706     echo " "
10707     $cat > try.h <<END
10708 #ifndef S_IRUSR
10709 #   ifdef S_IREAD
10710 #       define S_IRUSR S_IREAD
10711 #       define S_IWUSR S_IWRITE
10712 #       define S_IXUSR S_IEXEC
10713 #   else
10714 #       define S_IRUSR 0400
10715 #       define S_IWUSR 0200
10716 #       define S_IXUSR 0100
10717 #   endif
10718 #   define S_IRGRP (S_IRUSR>>3)
10719 #   define S_IWGRP (S_IWUSR>>3)
10720 #   define S_IXGRP (S_IXUSR>>3)
10721 #   define S_IROTH (S_IRUSR>>6)
10722 #   define S_IWOTH (S_IWUSR>>6)
10723 #   define S_IXOTH (S_IXUSR>>6)
10724 #endif
10725 #ifndef S_IRWXU
10726 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10727 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10728 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10729 #endif
10730 END
10731
10732     $cat > try.c <<END
10733 #include <sys/types.h>
10734 #include <sys/ipc.h>
10735 #include <sys/sem.h>
10736 #include <sys/stat.h>
10737 #include <stdio.h>
10738 #include <errno.h>
10739 #include "try.h"
10740 #ifndef errno
10741 extern int errno;
10742 #endif
10743 #$d_union_semun HAS_UNION_SEMUN
10744 int main() {
10745     union semun
10746 #ifndef HAS_UNION_SEMUN
10747     {
10748         int val;
10749         struct semid_ds *buf;
10750         unsigned short *array;
10751     }
10752 #endif
10753     arg;
10754     int sem, st;
10755
10756 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10757     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10758     if (sem > -1) {
10759         struct semid_ds argbuf;
10760         arg.buf = &argbuf;
10761 #       ifdef IPC_STAT
10762         st = semctl(sem, 0, IPC_STAT, arg);
10763         if (st == 0)
10764             printf("semun\n");
10765         else
10766 #       endif /* IPC_STAT */
10767             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10768 #       ifdef IPC_RMID
10769         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10770 #       endif /* IPC_RMID */
10771             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10772     } else
10773 #endif /* IPC_PRIVATE && ... */
10774         printf("semget failed: errno = %d\n", errno);
10775   return 0;
10776 }
10777 END
10778     val="$undef"
10779     set try
10780     if eval $compile; then
10781         xxx=`./try`
10782         case "$xxx" in
10783         semun) val="$define" ;;
10784         esac
10785     fi
10786     $rm -f try try.c
10787     set d_semctl_semun
10788     eval $setvar
10789     case "$d_semctl_semun" in
10790     $define)
10791         echo "You can use union semun for semctl IPC_STAT." >&4
10792         also='also'
10793         ;;
10794     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10795         also=''
10796         ;;
10797     esac
10798
10799     : see whether semctl IPC_STAT can use struct semid_ds pointer
10800     $cat > try.c <<'END'
10801 #include <sys/types.h>
10802 #include <sys/ipc.h>
10803 #include <sys/sem.h>
10804 #include <sys/stat.h>
10805 #include "try.h"
10806 #include <stdio.h>
10807 #include <errno.h>
10808 #ifndef errno
10809 extern int errno;
10810 #endif
10811 int main() {
10812     struct semid_ds arg;
10813     int sem, st;
10814
10815 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
10816     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10817     if (sem > -1) {
10818 #       ifdef IPC_STAT
10819         st = semctl(sem, 0, IPC_STAT, &arg);
10820         if (st == 0)
10821             printf("semid_ds\n");
10822         else
10823 #       endif /* IPC_STAT */
10824             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10825 #       ifdef IPC_RMID
10826         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10827 #       endif /* IPC_RMID */
10828             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10829     } else
10830 #endif /* IPC_PRIVATE && ... */
10831         printf("semget failed: errno = %d\n", errno);
10832
10833     return 0;
10834 }
10835 END
10836     val="$undef"
10837     set try
10838     if eval $compile; then
10839         xxx=`./try`
10840         case "$xxx" in
10841         semid_ds) val="$define" ;;
10842         esac
10843     fi
10844     $rm -f try try.c
10845     set d_semctl_semid_ds
10846     eval $setvar
10847     case "$d_semctl_semid_ds" in
10848     $define)
10849         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10850         ;;
10851     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10852         ;;
10853     esac
10854     $rm -f try.h
10855     ;;
10856 *)  val="$undef"
10857
10858     # We do not have the full sem*(2) library, so assume we can not
10859     # use either.
10860
10861     set d_semctl_semun
10862     eval $setvar
10863
10864     set d_semctl_semid_ds
10865     eval $setvar
10866     ;;
10867 esac
10868
10869 : see if setegid exists
10870 set setegid d_setegid
10871 eval $inlibc
10872
10873 : see if seteuid exists
10874 set seteuid d_seteuid
10875 eval $inlibc
10876
10877 : see if setgrent exists
10878 set setgrent d_setgrent
10879 eval $inlibc
10880
10881 : see if sethostent exists
10882 set sethostent d_sethent
10883 eval $inlibc
10884
10885 : see if setlinebuf exists
10886 set setlinebuf d_setlinebuf
10887 eval $inlibc
10888
10889 : see if setlocale exists
10890 set setlocale d_setlocale
10891 eval $inlibc
10892
10893 : see if setnetent exists
10894 set setnetent d_setnent
10895 eval $inlibc
10896
10897 : see if setprotoent exists
10898 set setprotoent d_setpent
10899 eval $inlibc
10900
10901 : see if setpgid exists
10902 set setpgid d_setpgid
10903 eval $inlibc
10904
10905 : see if setpgrp2 exists
10906 set setpgrp2 d_setpgrp2
10907 eval $inlibc
10908
10909 : see if setpriority exists
10910 set setpriority d_setprior
10911 eval $inlibc
10912
10913 : see if setpwent exists
10914 set setpwent d_setpwent
10915 eval $inlibc
10916
10917 : see if setregid exists
10918 set setregid d_setregid
10919 eval $inlibc
10920 set setresgid d_setresgid
10921 eval $inlibc
10922
10923 : see if setreuid exists
10924 set setreuid d_setreuid
10925 eval $inlibc
10926 set setresuid d_setresuid
10927 eval $inlibc
10928
10929 : see if setrgid exists
10930 set setrgid d_setrgid
10931 eval $inlibc
10932
10933 : see if setruid exists
10934 set setruid d_setruid
10935 eval $inlibc
10936
10937 : see if setservent exists
10938 set setservent d_setsent
10939 eval $inlibc
10940
10941 : see if setsid exists
10942 set setsid d_setsid
10943 eval $inlibc
10944
10945 : see if setspent exists
10946 set setspent d_setspent
10947 eval $inlibc
10948
10949 : see if setvbuf exists
10950 set setvbuf d_setvbuf
10951 eval $inlibc
10952
10953 : see if sfio.h is available
10954 set sfio.h i_sfio
10955 eval $inhdr
10956
10957
10958 : see if sfio library is available
10959 case "$i_sfio" in
10960 $define)
10961         val=''
10962         set sfreserve val
10963         eval $inlibc
10964         ;;
10965 *)
10966         val="$undef"
10967         ;;
10968 esac
10969 : Ok, but do we want to use it.
10970 case "$val" in
10971 $define)
10972         case "$usesfio" in
10973         true|$define|[yY]*) dflt='y';;
10974         *) dflt='n';;
10975         esac
10976         echo "$package can use the sfio library, but it is experimental."
10977         rp="You seem to have sfio available, do you want to try using it?"
10978         . ./myread
10979         case "$ans" in
10980         y|Y) ;;
10981         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
10982                 val="$undef"
10983                 : Remove sfio from list of libraries to use
10984                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
10985                 shift
10986                 libs="$*"
10987                 echo "libs = $libs" >&4
10988                 ;;
10989         esac
10990         ;;
10991 *)      case "$usesfio" in
10992         true|$define|[yY]*)
10993                 echo "Sorry, cannot find sfio on this machine" >&4
10994                 echo "Ignoring your setting of usesfio=$usesfio" >&4
10995                 ;;
10996         esac
10997         ;;
10998 esac
10999 set d_sfio
11000 eval $setvar
11001 case "$d_sfio" in
11002 $define) usesfio='true';;
11003 *) usesfio='false';;
11004 esac
11005
11006 : see if shmctl exists
11007 set shmctl d_shmctl
11008 eval $inlibc
11009
11010 : see if shmget exists
11011 set shmget d_shmget
11012 eval $inlibc
11013
11014 : see if shmat exists
11015 set shmat d_shmat
11016 eval $inlibc
11017 : see what shmat returns
11018 case "$d_shmat" in
11019 "$define")
11020         $cat >shmat.c <<'END'
11021 #include <sys/shm.h>
11022 void *shmat();
11023 END
11024         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11025                 shmattype='void *'
11026         else
11027                 shmattype='char *'
11028         fi
11029         echo "and it returns ($shmattype)." >&4
11030         : see if a prototype for shmat is available
11031         xxx=`./findhdr sys/shm.h`
11032         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11033         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11034                 val="$define"
11035         else
11036                 val="$undef"
11037         fi
11038         $rm -f shmat.[co]
11039         ;;
11040 *)
11041         val="$undef"
11042         ;;
11043 esac
11044 set d_shmatprototype
11045 eval $setvar
11046
11047 : see if shmdt exists
11048 set shmdt d_shmdt
11049 eval $inlibc
11050
11051 : see how much of the 'shm*(2)' library is present.
11052 h_shm=true
11053 echo " "
11054 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11055 *"$undef"*) h_shm=false;;
11056 esac
11057 case "$osname" in
11058 freebsd)
11059     case "`ipcs 2>&1`" in
11060     "SVID shared memory"*"not configured"*)
11061         echo "Your $osname does not have the shm*(2) configured." >&4
11062         h_shm=false
11063         val="$undef"
11064         set shmctl d_shmctl
11065         evat $setvar
11066         set shmget d_shmget
11067         evat $setvar
11068         set shmat d_shmat
11069         evat $setvar
11070         set shmdt d_shmdt
11071         evat $setvar
11072         ;;
11073     esac
11074     ;;
11075 esac
11076 : we could also check for sys/ipc.h ...
11077 if $h_shm && $test `./findhdr sys/shm.h`; then
11078         echo "You have the full shm*(2) library." >&4
11079         val="$define"
11080 else
11081         echo "You don't have the full shm*(2) library." >&4
11082         val="$undef"
11083 fi
11084 set d_shm
11085 eval $setvar
11086
11087 echo " "
11088 : see if we have sigaction
11089 if set sigaction val -f d_sigaction; eval $csym; $val; then
11090         echo 'sigaction() found.' >&4
11091         $cat > try.c <<'EOP'
11092 #include <stdio.h>
11093 #include <sys/types.h>
11094 #include <signal.h>
11095 int main()
11096 {
11097     struct sigaction act, oact;
11098     act.sa_flags = 0;
11099     oact.sa_handler = 0;
11100     /* so that act and oact are used */
11101     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11102 }
11103 EOP
11104         set try
11105         if eval $compile_ok; then
11106                 val="$define"
11107         else
11108                 echo "But you don't seem to have a useable struct sigaction." >&4
11109                 val="$undef"
11110         fi
11111 else
11112         echo 'sigaction NOT found.' >&4
11113         val="$undef"
11114 fi
11115 set d_sigaction; eval $setvar
11116 $rm -f try try$_o try.c
11117
11118 : see if sigsetjmp exists
11119 echo " "
11120 case "$d_sigsetjmp" in
11121 '')
11122         $cat >try.c <<'EOP'
11123 #include <setjmp.h>
11124 sigjmp_buf env;
11125 int set = 1;
11126 int main()
11127 {
11128         if (sigsetjmp(env,1))
11129                 exit(set);
11130         set = 0;
11131         siglongjmp(env, 1);
11132         exit(1);
11133 }
11134 EOP
11135         set try
11136         if eval $compile; then
11137                 if ./try >/dev/null 2>&1; then
11138                         echo "POSIX sigsetjmp found." >&4
11139                         val="$define"
11140                 else
11141                         $cat >&4 <<EOM
11142 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11143 I'll ignore them.
11144 EOM
11145                         val="$undef"
11146                 fi
11147         else
11148                 echo "sigsetjmp not found." >&4
11149                 val="$undef"
11150         fi
11151         ;;
11152 *) val="$d_sigsetjmp"
11153         case "$d_sigsetjmp" in
11154         $define) echo "POSIX sigsetjmp found." >&4;;
11155         $undef) echo "sigsetjmp not found." >&4;;
11156         esac
11157         ;;
11158 esac
11159 set d_sigsetjmp
11160 eval $setvar
11161 $rm -f try.c try
11162
11163 : see if sys/stat.h is available
11164 set sys/stat.h i_sysstat
11165 eval $inhdr
11166
11167
11168 : see if stat knows about block sizes
11169 echo " "
11170 echo "Checking to see if your struct stat has st_blocks field..." >&4
11171 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11172 eval $hasfield
11173
11174
11175 : see if this is a sys/vfs.h system
11176 set sys/vfs.h i_sysvfs
11177 eval $inhdr
11178
11179
11180 : see if this is a sys/statfs.h system
11181 set sys/statfs.h i_sysstatfs
11182 eval $inhdr
11183
11184
11185 echo " "
11186 echo "Checking to see if your system supports struct statfs..." >&4
11187 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
11188 eval $hasstruct
11189 case "$d_statfs_s" in
11190 "$define")      echo "Yes, it does."   ;;
11191 *)              echo "No, it doesn't." ;;
11192 esac
11193
11194
11195
11196 : see if struct statfs knows about f_flags
11197 case "$d_statfs_s" in
11198 define) 
11199         echo " "
11200         echo "Checking to see if your struct statfs has f_flags field..." >&4
11201         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
11202         eval $hasfield
11203         ;;
11204 *)      val="$undef"
11205         set d_statfs_f_flags
11206         eval $setvar
11207         ;;
11208 esac
11209 case "$d_statfs_f_flags" in
11210 "$define")      echo "Yes, it does."   ;;
11211 *)              echo "No, it doesn't." ;;
11212 esac
11213
11214 : see if _ptr and _cnt from stdio act std
11215 echo " "
11216 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11217         echo "(Looks like you have stdio.h from Linux.)"
11218         case "$stdio_ptr" in
11219         '') stdio_ptr='((fp)->_IO_read_ptr)'
11220                 ptr_lval=$define
11221                 ;;
11222         *)      ptr_lval=$d_stdio_ptr_lval;;
11223         esac
11224         case "$stdio_cnt" in
11225         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11226                 cnt_lval=$undef
11227                 ;;
11228         *)      cnt_lval=$d_stdio_cnt_lval;;
11229         esac
11230         case "$stdio_base" in
11231         '') stdio_base='((fp)->_IO_read_base)';;
11232         esac
11233         case "$stdio_bufsiz" in
11234         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11235         esac
11236 else
11237         case "$stdio_ptr" in
11238         '') stdio_ptr='((fp)->_ptr)'
11239                 ptr_lval=$define
11240                 ;;
11241         *)      ptr_lval=$d_stdio_ptr_lval;;
11242         esac
11243         case "$stdio_cnt" in
11244         '') stdio_cnt='((fp)->_cnt)'
11245                 cnt_lval=$define
11246                 ;;
11247         *)      cnt_lval=$d_stdio_cnt_lval;;
11248         esac
11249         case "$stdio_base" in
11250         '') stdio_base='((fp)->_base)';;
11251         esac
11252         case "$stdio_bufsiz" in
11253         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11254         esac
11255 fi
11256 : test whether _ptr and _cnt really work
11257 echo "Checking how std your stdio is..." >&4
11258 $cat >try.c <<EOP
11259 #include <stdio.h>
11260 #define FILE_ptr(fp)    $stdio_ptr
11261 #define FILE_cnt(fp)    $stdio_cnt
11262 int main() {
11263         FILE *fp = fopen("try.c", "r");
11264         char c = getc(fp);
11265         if (
11266                 18 <= FILE_cnt(fp) &&
11267                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11268         )
11269                 exit(0);
11270         exit(1);
11271 }
11272 EOP
11273 val="$undef"
11274 set try
11275 if eval $compile; then
11276         if ./try; then
11277                 echo "Your stdio acts pretty std."
11278                 val="$define"
11279         else
11280                 echo "Your stdio isn't very std."
11281         fi
11282 else
11283         echo "Your stdio doesn't appear very std."
11284 fi
11285 $rm -f try.c try
11286 set d_stdstdio
11287 eval $setvar
11288
11289 : Can _ptr be used as an lvalue?
11290 case "$d_stdstdio$ptr_lval" in
11291 $define$define) val=$define ;;
11292 *) val=$undef ;;
11293 esac
11294 set d_stdio_ptr_lval
11295 eval $setvar
11296
11297 : Can _cnt be used as an lvalue?
11298 case "$d_stdstdio$cnt_lval" in
11299 $define$define) val=$define ;;
11300 *) val=$undef ;;
11301 esac
11302 set d_stdio_cnt_lval
11303 eval $setvar
11304
11305 : see if _base is also standard
11306 val="$undef"
11307 case "$d_stdstdio" in
11308 $define)
11309         $cat >try.c <<EOP
11310 #include <stdio.h>
11311 #define FILE_base(fp)   $stdio_base
11312 #define FILE_bufsiz(fp) $stdio_bufsiz
11313 int main() {
11314         FILE *fp = fopen("try.c", "r");
11315         char c = getc(fp);
11316         if (
11317                 19 <= FILE_bufsiz(fp) &&
11318                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11319         )
11320                 exit(0);
11321         exit(1);
11322 }
11323 EOP
11324         set try
11325         if eval $compile; then
11326                 if ./try; then
11327                         echo "And its _base field acts std."
11328                         val="$define"
11329                 else
11330                         echo "But its _base field isn't std."
11331                 fi
11332         else
11333                 echo "However, it seems to be lacking the _base field."
11334         fi
11335         $rm -f try.c try
11336         ;;
11337 esac
11338 set d_stdiobase
11339 eval $setvar
11340
11341 $cat >&4 <<EOM
11342 Checking how to access stdio streams by file descriptor number...
11343 EOM
11344 case "$stdio_stream_array" in
11345 '')     $cat >try.c <<EOCP
11346 #include <stdio.h>
11347 int main() {
11348   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11349     printf("yes\n");
11350 }
11351 EOCP
11352         for s in _iob __iob __sF
11353         do
11354                 set try -DSTDIO_STREAM_ARRAY=$s
11355                 if eval $compile; then
11356                         case "`./try$exe_ext`" in
11357                         yes)    stdio_stream_array=$s; break ;;
11358                         esac
11359                 fi
11360         done
11361         $rm -f try.* try$exe_ext
11362 esac
11363 case "$stdio_stream_array" in
11364 '')     $cat >&4 <<EOM
11365 I can't figure out how to access stdio streams by file descriptor number.
11366 EOM
11367         d_stdio_stream_array="$undef"
11368         ;;
11369 *)      $cat >&4 <<EOM
11370 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11371 EOM
11372         d_stdio_stream_array="$define"
11373         ;;
11374 esac
11375
11376 : see if strcoll exists
11377 set strcoll d_strcoll
11378 eval $inlibc
11379
11380 : check for structure copying
11381 echo " "
11382 echo "Checking to see if your C compiler can copy structs..." >&4
11383 $cat >try.c <<'EOCP'
11384 int main()
11385 {
11386         struct blurfl {
11387                 int dyick;
11388         } foo, bar;
11389
11390         foo = bar;
11391 }
11392 EOCP
11393 if $cc -c try.c >/dev/null 2>&1 ; then
11394         val="$define"
11395         echo "Yup, it can."
11396 else
11397         val="$undef"
11398         echo "Nope, it can't."
11399 fi
11400 set d_strctcpy
11401 eval $setvar
11402 $rm -f try.*
11403
11404 : see if strerror and/or sys_errlist[] exist
11405 echo " "
11406 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11407     if set strerror val -f d_strerror; eval $csym; $val; then
11408                 echo 'strerror() found.' >&4
11409                 d_strerror="$define"
11410                 d_strerrm='strerror(e)'
11411                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11412                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11413                         d_syserrlst="$define"
11414                 else
11415                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11416                         d_syserrlst="$undef"
11417                 fi
11418     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11419                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11420                 echo 'strerror() found in string header.' >&4
11421                 d_strerror="$define"
11422                 d_strerrm='strerror(e)'
11423                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11424                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11425                                 d_syserrlst="$define"
11426                 else
11427                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11428                         d_syserrlst="$undef"
11429                 fi
11430     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11431                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11432                 d_strerror="$undef"
11433                 d_syserrlst="$define"
11434                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11435     else
11436                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11437                 d_strerror="$undef"
11438                 d_syserrlst="$undef"
11439                 d_strerrm='"unknown"'
11440     fi
11441 fi
11442
11443 : see if strtod exists
11444 set strtod d_strtod
11445 eval $inlibc
11446
11447 : see if strtol exists
11448 set strtol d_strtol
11449 eval $inlibc
11450
11451 : see if strtold exists
11452 set strtold d_strtold
11453 eval $inlibc
11454
11455 : see if strtoll exists
11456 set strtoll d_strtoll
11457 eval $inlibc
11458
11459 case "$d_longlong-$d_strtoll" in
11460 "$define-$define")
11461         $cat <<EOM
11462 Checking whether your strtoll() works okay...
11463 EOM
11464         $cat >try.c <<'EOCP'
11465 #include <errno.h>
11466 #ifdef __hpux
11467 #define strtoll __strtoll
11468 #endif
11469 #include <stdio.h>
11470 extern long long int strtoll(char *s, char **, int); 
11471 static int bad = 0;
11472 int check(char *s, long long ell, int een) {
11473         long long gll;
11474         errno = 0;
11475         gll = strtoll(s, 0, 10);
11476         if (!((gll == ell) && (errno == een)))
11477                 bad++;
11478 }
11479 int main() {
11480         check(" 1",                                      1LL, 0);
11481         check(" 0",                                      0LL, 0);
11482         check("-1",                                     -1LL, 0);
11483         check("-9223372036854775808", -9223372036854775808LL, 0);
11484         check("-9223372036854775808", -9223372036854775808LL, 0);
11485         check(" 9223372036854775807",  9223372036854775807LL, 0);
11486         check("-9223372036854775808", -9223372036854775808LL, 0);
11487         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
11488         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11489         if (!bad)
11490                 printf("ok\n");
11491 }
11492 EOCP
11493         set try
11494         if eval $compile; then
11495                 case "`./try`" in
11496                 ok) echo "Your strtoll() seems to be working okay." ;;
11497                 *) cat <<EOM >&4
11498 Your strtoll() doesn't seem to be working okay.
11499 EOM
11500                    d_strtoll="$undef"
11501                    ;;
11502                 esac
11503         fi
11504         ;;
11505 esac
11506
11507 : see if strtoul exists
11508 set strtoul d_strtoul
11509 eval $inlibc
11510
11511 : see if strtoull exists
11512 set strtoull d_strtoull
11513 eval $inlibc
11514
11515 case "$d_longlong-$d_strtoull" in
11516 "$define-$define")
11517         $cat <<EOM
11518 Checking whether your strtoull() works okay...
11519 EOM
11520         $cat >try.c <<'EOCP'
11521 #include <errno.h>
11522 #ifdef __hpux
11523 #define strtoull __strtoull
11524 #endif
11525 #include <stdio.h>
11526 extern unsigned long long int strtoull(char *s, char **, int); 
11527 static int bad = 0;
11528 int check(char *s, long long eull, int een) {
11529         long long gull;
11530         errno = 0;
11531         gull = strtoull(s, 0, 10);
11532         if (!((gull == eull) && (errno == een)))
11533                 bad++;
11534 }
11535 int main() {
11536         check(" 1",                                       1LL, 0);
11537         check(" 0",                                       0LL, 0);
11538         check("18446744073709551615", 18446744073709551615ULL, 0);
11539         check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11540         if (!bad)
11541                 printf("ok\n");
11542 }
11543 EOCP
11544         set try
11545         if eval $compile; then
11546                 case "`./try`" in
11547                 ok) echo "Your strtoull() seems to be working okay." ;;
11548                 *) cat <<EOM >&4
11549 Your strtoull() doesn't seem to be working okay.
11550 EOM
11551                    d_strtoull="$undef"
11552                    ;;
11553                 esac
11554         fi
11555         ;;
11556 esac
11557
11558 : see if strtouq exists
11559 set strtouq d_strtouq
11560 eval $inlibc
11561
11562 : see if strxfrm exists
11563 set strxfrm d_strxfrm
11564 eval $inlibc
11565
11566 : see if symlink exists
11567 set symlink d_symlink
11568 eval $inlibc
11569
11570 : see if syscall exists
11571 set syscall d_syscall
11572 eval $inlibc
11573
11574 : see if sysconf exists
11575 set sysconf d_sysconf
11576 eval $inlibc
11577
11578 : see if system exists
11579 set system d_system
11580 eval $inlibc
11581
11582 : see if tcgetpgrp exists
11583 set tcgetpgrp d_tcgetpgrp
11584 eval $inlibc
11585
11586 : see if tcsetpgrp exists
11587 set tcsetpgrp d_tcsetpgrp
11588 eval $inlibc
11589
11590 : see if prototype for telldir is available
11591 echo " "
11592 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11593 eval $hasproto
11594
11595 : see if this is a sys/times.h system
11596 set sys/times.h i_systimes
11597 eval $inhdr
11598
11599 : see if times exists
11600 echo " "
11601 if set times val -f d_times; eval $csym; $val; then
11602         echo 'times() found.' >&4
11603         d_times="$define"
11604         inc=''
11605         case "$i_systimes" in
11606         "$define") inc='sys/times.h';;
11607         esac
11608         rp="What is the type returned by times() on this system?"
11609         set clock_t clocktype long stdio.h sys/types.h $inc
11610         eval $typedef_ask
11611 else
11612         echo 'times() NOT found, hope that will do.' >&4
11613         d_times="$undef"
11614         clocktype='int'
11615 fi
11616
11617 : see if truncate exists
11618 set truncate d_truncate
11619 eval $inlibc
11620
11621 : see if tzname[] exists
11622 echo " "
11623 if set tzname val -a d_tzname; eval $csym; $val; then
11624         val="$define"
11625         echo 'tzname[] found.' >&4
11626 else
11627         val="$undef"
11628         echo 'tzname[] NOT found.' >&4
11629 fi
11630 set d_tzname
11631 eval $setvar
11632
11633 : see if umask exists
11634 set umask d_umask
11635 eval $inlibc
11636
11637 : see if ustat exists
11638 set ustat d_ustat
11639 eval $inlibc
11640
11641 : backward compatibility for d_hvfork
11642 if test X$d_hvfork != X; then
11643         d_vfork="$d_hvfork"
11644         d_hvfork=''
11645 fi
11646 : see if there is a vfork
11647 val=''
11648 set vfork val
11649 eval $inlibc
11650
11651 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11652 : perl on Solaris 2.x, and probably elsewhere.
11653 case "$val" in
11654 $define)
11655         echo " "
11656         case "$usevfork" in
11657         false) dflt='n';;
11658         *) dflt='y';;
11659         esac
11660         cat <<'EOM'
11661  
11662 Perl can only use a vfork() that doesn't suffer from strict
11663 restrictions on calling functions or modifying global data in
11664 the child.  For example, glibc-2.1 contains such a vfork()
11665 that is unsuitable.  If your system provides a proper fork()
11666 call, chances are that you do NOT want perl to use vfork().
11667
11668 EOM
11669         rp="Do you still want to use vfork()?"
11670         . ./myread
11671         case "$ans" in
11672         y|Y) ;;
11673         *)
11674                 echo "Ok, we won't use vfork()."
11675                 val="$undef"
11676                 ;;
11677         esac
11678         ;;
11679 esac
11680 set d_vfork
11681 eval $setvar
11682 case "$d_vfork" in
11683 $define) usevfork='true';;
11684 *) usevfork='false';;
11685 esac
11686
11687 : see if this is an sysdir system
11688 set sys/dir.h i_sysdir
11689 eval $inhdr
11690
11691 : see if this is an sysndir system
11692 set sys/ndir.h i_sysndir
11693 eval $inhdr
11694
11695 : see if closedir exists
11696 set closedir d_closedir
11697 eval $inlibc
11698
11699 case "$d_closedir" in
11700 "$define")
11701         echo " "
11702         echo "Checking whether closedir() returns a status..." >&4
11703         cat > closedir.c <<EOM
11704 #$i_dirent I_DIRENT             /**/
11705 #$i_sysdir I_SYS_DIR            /**/
11706 #$i_sysndir I_SYS_NDIR          /**/
11707 #$i_systypes I_SYS_TYPES        /**/
11708
11709 #if defined(I_SYS_TYPES)
11710 #include <sys/types.h>
11711 #endif
11712 #if defined(I_DIRENT)
11713 #include <dirent.h>
11714 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11715 #include <sys/dir.h>
11716 #endif
11717 #else
11718 #ifdef I_SYS_NDIR
11719 #include <sys/ndir.h>
11720 #else
11721 #ifdef I_SYS_DIR
11722 #ifdef hp9000s500
11723 #include <ndir.h>       /* may be wrong in the future */
11724 #else
11725 #include <sys/dir.h>
11726 #endif
11727 #endif
11728 #endif
11729 #endif 
11730 int main() { return closedir(opendir(".")); }
11731 EOM
11732         set closedir
11733         if eval $compile_ok; then
11734                 if ./closedir > /dev/null 2>&1 ; then
11735                         echo "Yes, it does."
11736                         val="$undef"
11737                 else
11738                         echo "No, it doesn't."
11739                         val="$define"
11740                 fi
11741         else
11742                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11743                 val="$define"
11744         fi
11745         ;;
11746 *)
11747         val="$undef";
11748         ;;
11749 esac
11750 set d_void_closedir
11751 eval $setvar
11752 $rm -f closedir*
11753 : check for volatile keyword
11754 echo " "
11755 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11756 $cat >try.c <<'EOCP'
11757 int main()
11758 {
11759         typedef struct _goo_struct goo_struct;
11760         goo_struct * volatile goo = ((goo_struct *)0);
11761         struct _goo_struct {
11762                 long long_int;
11763                 int reg_int;
11764                 char char_var;
11765         };
11766         typedef unsigned short foo_t;
11767         char *volatile foo;
11768         volatile int bar;
11769         volatile foo_t blech;
11770         foo = foo;
11771 }
11772 EOCP
11773 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11774         val="$define"
11775         echo "Yup, it does."
11776 else
11777         val="$undef"
11778         echo "Nope, it doesn't."
11779 fi
11780 set d_volatile
11781 eval $setvar
11782 $rm -f try.*
11783
11784 : see if there is a wait4
11785 set wait4 d_wait4
11786 eval $inlibc
11787
11788 : see if waitpid exists
11789 set waitpid d_waitpid
11790 eval $inlibc
11791
11792 : see if wcstombs exists
11793 set wcstombs d_wcstombs
11794 eval $inlibc
11795
11796 : see if wctomb exists
11797 set wctomb d_wctomb
11798 eval $inlibc
11799
11800 : preserve RCS keywords in files with variable substitution, grrr
11801 Date='$Date'
11802 Id='$Id'
11803 Log='$Log'
11804 RCSfile='$RCSfile'
11805 Revision='$Revision'
11806
11807 case "$crosscompile" in
11808 ''|[nN]*) crosscompile="$undef" ;;
11809 esac
11810
11811 case "$osname" in
11812 next|rhapsody|darwin) multiarch="$define" ;;
11813 esac
11814 case "$multiarch" in
11815 ''|[nN]*) multiarch="$undef" ;;
11816 esac
11817
11818 : check for alignment requirements
11819 echo " "
11820 case "$crosscompile$multiarch" in
11821 *$define*)
11822         $cat <<EOM
11823 You seem to be either cross-compiling or doing a multiarchitecture build,
11824 skipping the memory alignment check.
11825
11826 EOM
11827         case "$alignbytes" in
11828         '') alignbytes=8 ;;
11829         esac
11830         ;;
11831 *)
11832         case "$alignbytes" in
11833         '') echo "Checking alignment constraints..." >&4
11834                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
11835                         $cat >try.c <<'EOCP'
11836 typedef long double NV;
11837 EOCP
11838                 else
11839                         $cat >try.c <<'EOCP'
11840 typedef double NV;
11841 EOCP
11842                 fi
11843                 $cat >>try.c <<'EOCP'
11844 #include <stdio.h>
11845 struct foobar {
11846         char foo;
11847         NV bar;
11848 } try_algn;
11849 int main()
11850 {
11851     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11852     return(0);
11853 }
11854 EOCP
11855                 set try
11856                 if eval $compile_ok; then
11857                         dflt=`./try`
11858                 else
11859                         dflt='8'
11860                         echo "(I can't seem to compile the test program...)"
11861                 fi
11862                 ;;
11863         *) dflt="$alignbytes"
11864                 ;;
11865         esac
11866         rp="Doubles must be aligned on a how-many-byte boundary?"
11867         . ./myread
11868         alignbytes="$ans"
11869         $rm -f try.c try
11870         ;;
11871 esac
11872
11873
11874 : set the base revision
11875 baserev=5.0
11876
11877 : check for ordering of bytes in a long
11878 echo " "
11879 case "$crosscompile$multiarch" in
11880 *$define*)
11881         $cat <<EOM
11882 You seem to be either cross-compiling or doing a multiarchitecture build,
11883 skipping the byteorder check.
11884
11885 EOM
11886         byteorder='0xffff'
11887         ;;
11888 *)
11889         case "$byteorder" in
11890         '')
11891                 $cat <<'EOM'
11892 In the following, larger digits indicate more significance.  A big-endian
11893 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11894 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11895 machines may have weird orders like 3412.  A Cray will report 87654321,
11896 an Alpha will report 12345678. If the test program works the default is
11897 probably right.
11898 I'm now running the test program...
11899 EOM
11900                 $cat >try.c <<'EOCP'
11901 #include <stdio.h>
11902 int main()
11903 {
11904         int i;
11905         union {
11906                 unsigned long l;
11907                 char c[sizeof(long)];
11908         } u;
11909
11910         if (sizeof(long) > 4)
11911                 u.l = (0x08070605L << 32) | 0x04030201L;
11912         else
11913                 u.l = 0x04030201L;
11914         for (i = 0; i < sizeof(long); i++)
11915                 printf("%c", u.c[i]+'0');
11916         printf("\n");
11917         exit(0);
11918 }
11919 EOCP
11920                 xxx_prompt=y
11921                 set try
11922                 if eval $compile && ./try > /dev/null; then
11923                         dflt=`./try`
11924                         case "$dflt" in
11925                         [1-4][1-4][1-4][1-4]|12345678|87654321)
11926                                 echo "(The test program ran ok.)"
11927                                 echo "byteorder=$dflt"
11928                                 xxx_prompt=n
11929                         ;;
11930                         ????|????????) echo "(The test program ran ok.)" ;;
11931                         *) echo "(The test program didn't run right for some reason.)" ;;
11932                         esac
11933                 else
11934                         dflt='4321'
11935                         cat <<'EOM'
11936 (I can't seem to compile the test program.  Guessing big-endian...)
11937 EOM
11938                 fi
11939                 case "$xxx_prompt" in
11940                 y)
11941                         rp="What is the order of bytes in a long?"
11942                         . ./myread
11943                         byteorder="$ans"
11944                         ;;
11945                 *)      byteorder=$dflt
11946                         ;;
11947                 esac
11948                 ;;
11949         esac
11950         $rm -f try.c try
11951         ;;
11952 esac
11953
11954
11955 : how do we catenate cpp tokens here?
11956 echo " "
11957 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11958 $cat >cpp_stuff.c <<'EOCP'
11959 #define RCAT(a,b)a/**/b
11960 #define ACAT(a,b)a ## b
11961 RCAT(Rei,ser)
11962 ACAT(Cir,cus)
11963 EOCP
11964 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
11965 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
11966         echo "Oh!  Smells like ANSI's been here." >&4
11967         echo "We can catify or stringify, separately or together!"
11968         cpp_stuff=42
11969 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
11970         echo "Ah, yes!  The good old days!" >&4
11971         echo "However, in the good old days we don't know how to stringify and"
11972         echo "catify at the same time."
11973         cpp_stuff=1
11974 else
11975         $cat >&4 <<EOM
11976 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
11977 to have to edit the values of CAT[2-5] in config.h...
11978 EOM
11979         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
11980 fi
11981 $rm -f cpp_stuff.*
11982
11983 : see if this is a db.h system
11984 set db.h i_db
11985 eval $inhdr
11986
11987 case "$i_db" in
11988 $define)
11989         : Check db version.
11990         echo " "
11991         echo "Checking Berkeley DB version ..." >&4
11992         $cat >try.c <<EOCP
11993 #$d_const HASCONST
11994 #ifndef HASCONST
11995 #define const
11996 #endif
11997 #include <sys/types.h>
11998 #include <stdio.h>
11999 #include <db.h>
12000 int main()
12001 {
12002 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12003     int Major, Minor, Patch ;
12004     unsigned long Version ;
12005     (void)db_version(&Major, &Minor, &Patch) ;
12006     printf("You have Berkeley DB Version 2 or greater\n");
12007
12008     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12009                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12010     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12011                 Major, Minor, Patch) ;
12012
12013     /* check that db.h & libdb are compatible */
12014     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12015         printf("db.h and libdb are incompatible\n") ;
12016         exit(3);        
12017     }
12018
12019     printf("db.h and libdb are compatible\n") ;
12020
12021     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12022                 + DB_VERSION_PATCH ;
12023
12024     /* needs to be >= 2.3.4 */
12025     if (Version < 2003004) {
12026     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12027         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12028         exit(2);        
12029     }
12030
12031     exit(0);
12032 #else
12033 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12034     printf("You have Berkeley DB Version 1\n");
12035     exit(0);    /* DB version < 2: the coast is clear. */
12036 #else
12037     exit(1);    /* <db.h> not Berkeley DB? */
12038 #endif
12039 #endif
12040 }
12041 EOCP
12042         set try
12043         if eval $compile_ok && ./try; then
12044                 echo 'Looks OK.' >&4
12045         else
12046                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12047                 i_db=$undef
12048                 case " $libs " in
12049                 *"-ldb "*)
12050                         : Remove db from list of libraries to use
12051                         echo "Removing unusable -ldb from library list" >&4
12052                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12053                         shift
12054                         libs="$*"
12055                         echo "libs = $libs" >&4
12056                         ;;
12057                 esac
12058         fi
12059         $rm -f try.*
12060         ;;
12061 esac
12062
12063 case "$i_db" in
12064 define)
12065         : Check the return type needed for hash 
12066         echo " "
12067         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12068         $cat >try.c <<EOCP
12069 #$d_const HASCONST
12070 #ifndef HASCONST
12071 #define const
12072 #endif
12073 #include <sys/types.h>
12074 #include <db.h>
12075
12076 #ifndef DB_VERSION_MAJOR
12077 u_int32_t hash_cb (ptr, size)
12078 const void *ptr;
12079 size_t size;
12080 {
12081 }
12082 HASHINFO info;
12083 int main()
12084 {
12085         info.hash = hash_cb;
12086 }
12087 #endif
12088 EOCP
12089         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12090                 if $contains warning try.out >>/dev/null 2>&1 ; then
12091                         db_hashtype='int'
12092                 else
12093                         db_hashtype='u_int32_t'
12094                 fi
12095         else
12096                 : XXX Maybe we should just give up here.
12097                 db_hashtype=u_int32_t
12098                 $cat try.out >&4
12099                 echo "Help:  I can't seem to compile the db test program." >&4
12100                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12101         fi
12102         $rm -f try.*
12103         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12104         ;;
12105 *)      db_hashtype=u_int32_t
12106         ;;
12107 esac
12108 case "$i_db" in
12109 define)
12110         : Check the return type needed for prefix 
12111         echo " "
12112         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12113         cat >try.c <<EOCP
12114 #$d_const HASCONST
12115 #ifndef HASCONST
12116 #define const
12117 #endif
12118 #include <sys/types.h>
12119 #include <db.h>
12120
12121 #ifndef DB_VERSION_MAJOR
12122 size_t prefix_cb (key1, key2)
12123 const DBT *key1;
12124 const DBT *key2;
12125 {
12126 }
12127 BTREEINFO info;
12128 int main()
12129 {
12130         info.prefix = prefix_cb;
12131 }
12132 #endif
12133 EOCP
12134         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12135                 if $contains warning try.out >>/dev/null 2>&1 ; then
12136                         db_prefixtype='int'
12137                 else
12138                         db_prefixtype='size_t'
12139                 fi
12140         else
12141                 db_prefixtype='size_t'
12142                 : XXX Maybe we should just give up here.
12143                 $cat try.out >&4
12144                 echo "Help:  I can't seem to compile the db test program." >&4
12145                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12146         fi
12147         $rm -f try.*
12148         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12149         ;;
12150 *)      db_prefixtype='size_t'
12151         ;;
12152 esac
12153
12154 : check for void type
12155 echo " "
12156 echo "Checking to see how well your C compiler groks the void type..." >&4
12157 case "$voidflags" in
12158 '')
12159         $cat >try.c <<'EOCP'
12160 #if TRY & 1
12161 void sub() {
12162 #else
12163 sub() {
12164 #endif
12165         extern void moo();      /* function returning void */
12166         void (*goo)();          /* ptr to func returning void */
12167 #if TRY & 8
12168         void *hue;              /* generic ptr */
12169 #endif
12170 #if TRY & 2
12171         void (*foo[10])();
12172 #endif
12173
12174 #if TRY & 4
12175         if(goo == moo) {
12176                 exit(0);
12177         }
12178 #endif
12179         exit(0);
12180 }
12181 int main() { sub(); }
12182 EOCP
12183         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12184                 voidflags=$defvoidused
12185         echo "Good.  It appears to support void to the level $package wants.">&4
12186                 if $contains warning .out >/dev/null 2>&1; then
12187                         echo "However, you might get some warnings that look like this:"
12188                         $cat .out
12189                 fi
12190         else
12191 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12192                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12193                         echo "It supports 1..."
12194                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12195                                 echo "It also supports 2..."
12196                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12197                                         voidflags=7
12198                                         echo "And it supports 4 but not 8 definitely."
12199                                 else
12200                                         echo "It doesn't support 4..."
12201                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12202                                                 voidflags=11
12203                                                 echo "But it supports 8."
12204                                         else
12205                                                 voidflags=3
12206                                                 echo "Neither does it support 8."
12207                                         fi
12208                                 fi
12209                         else
12210                                 echo "It does not support 2..."
12211                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12212                                         voidflags=13
12213                                         echo "But it supports 4 and 8."
12214                                 else
12215                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12216                                                 voidflags=5
12217                                                 echo "And it supports 4 but has not heard about 8."
12218                                         else
12219                                                 echo "However it supports 8 but not 4."
12220                                         fi
12221                                 fi
12222                         fi
12223                 else
12224                         echo "There is no support at all for void."
12225                         voidflags=0
12226                 fi
12227         fi
12228 esac
12229 case "$voidflags" in
12230 "$defvoidused") ;;
12231 *)      $cat >&4 <<'EOM'
12232   Support flag bits are:
12233     1: basic void declarations.
12234     2: arrays of pointers to functions returning void.
12235     4: operations between pointers to and addresses of void functions.
12236     8: generic void pointers.
12237 EOM
12238         dflt="$voidflags";
12239         rp="Your void support flags add up to what?"
12240         . ./myread
12241         voidflags="$ans"
12242         ;;
12243 esac
12244 $rm -f try.* .out
12245
12246
12247 : How can we generate normalized random numbers ?
12248 echo " "
12249 echo "Looking for a random number function..." >&4
12250 case "$randfunc" in
12251 '')
12252         if set drand48 val -f; eval $csym; $val; then
12253                 dflt="drand48"
12254                 echo "Good, found drand48()." >&4
12255         elif set random val -f; eval $csym; $val; then
12256                 dflt="random"
12257                 echo "OK, found random()." >&4
12258         else
12259                 dflt="rand"
12260                 echo "Yick, looks like I have to use rand()." >&4
12261         fi
12262         echo " "
12263         ;;
12264 *)
12265         dflt="$randfunc"
12266         ;;
12267 esac
12268 cont=true
12269
12270 case "$ccflags" in
12271 *-Dmy_rand=*|*-Dmy_srand=*)
12272         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12273         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12274         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12275         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12276         ;;
12277 esac
12278
12279 while $test "$cont"; do
12280         rp="Use which function to generate random numbers?"
12281         . ./myread
12282         if $test "$ans" = "$dflt"; then
12283                 : null
12284         else
12285                 randbits=''
12286         fi
12287         randfunc="$ans"
12288         if set $ans val -f; eval $csym; $val; then
12289                 cont=''
12290         else
12291                 dflt=y
12292                 rp="I cannot find function $ans. Use that name anyway?"
12293                 . ./myread
12294                 dflt=rand
12295                 case "$ans" in
12296                         [yY]*) cont='';;
12297                 esac
12298         fi
12299         case "$cont" in
12300         '')
12301                 case "$randfunc" in
12302                 drand48)
12303                         drand01="drand48()"
12304                         seedfunc="srand48"
12305                         randbits=48
12306                         randseedtype=long
12307                         ;;
12308                 rand|random)
12309                         case "$randbits" in
12310                         '')
12311 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12312                                 $cat >try.c <<EOCP
12313 #$i_unistd I_UNISTD
12314 #$i_stdlib I_STDLIB
12315 #include <stdio.h>
12316 #ifdef I_UNISTD
12317 #  include <unistd.h>
12318 #endif
12319 #ifdef I_STDLIB
12320 #  include <stdlib.h>
12321 #endif
12322 int main()
12323 {
12324         register int i;
12325         register unsigned long tmp;
12326         register unsigned long max = 0L;
12327
12328         for (i = 1000; i; i--) {
12329                 tmp = (unsigned long) $randfunc();
12330                 if (tmp > max) max = tmp;
12331         }
12332         for (i = 0; max; i++)
12333                 max /= 2;
12334         printf("%d\n",i);
12335 }
12336 EOCP
12337                                 set try
12338                                 if eval $compile_ok; then
12339                                         dflt=`try`
12340                                 else
12341                                         dflt='?'
12342                                         echo "(I can't seem to compile the test program...)"
12343                                 fi
12344                                 ;;
12345                         *)
12346                                 dflt="$randbits"
12347                                 ;;
12348                         esac
12349                         rp="How many bits does your $randfunc() function produce?"
12350                         . ./myread
12351                         randbits="$ans"
12352                         $rm -f try.c try
12353                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12354                         seedfunc="s$randfunc"
12355                         randseedtype=unsigned
12356                         ;;
12357                 *)
12358                         dflt="31"
12359                         rp="How many bits does your $randfunc() function produce?"
12360                         . ./myread
12361                         randbits="$ans"
12362                         seedfunc="s$randfunc"
12363                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12364                         if set $seedfunc val -f; eval $csym; $val; then
12365                                 echo "(Using $seedfunc() to seed random generator)"
12366                         else
12367                                 echo "(Warning: no $seedfunc() to seed random generator)"
12368                                 seedfunc=rand
12369                         fi
12370                         randseedtype=unsigned
12371                         ;;
12372                 esac
12373                 ;;
12374         esac
12375 done
12376
12377 echo " "
12378 echo "Determining whether or not we are on an EBCDIC system..." >&4
12379 $cat >tebcdic.c <<'EOM'
12380 int main()
12381 {
12382   if ('M'==0xd4) return 0;
12383   return 1;
12384 }
12385 EOM
12386
12387 val=$undef
12388 set tebcdic
12389 if eval $compile_ok; then
12390         if ./tebcdic; then
12391                 echo "You have EBCDIC." >&4
12392                 val="$define"
12393         else
12394                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12395         fi
12396 else
12397         echo "I'm unable to compile the test program." >&4
12398         echo "I'll assume ASCII or some ISO Latin." >&4
12399 fi
12400 $rm -f tebcdic.c tebcdic
12401 set ebcdic
12402 eval $setvar
12403
12404 echo " "
12405 $cat >&4 <<EOM
12406 Checking how to flush all pending stdio output...
12407 EOM
12408 # I only know how to find the first 32 possibly open files on SunOS.
12409 # See also hints/sunos_4_1.sh and util.c  --AD
12410 case "$osname" in
12411 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12412 esac
12413 $cat >>try.c <<EOCP
12414 #include <stdio.h>
12415 #$i_unistd I_UNISTD
12416 #ifdef I_UNISTD
12417 # include <unistd.h>
12418 #endif
12419 #$d_sysconf HAS_SYSCONF
12420 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12421 #ifdef HAS_STDIO_STREAM_ARRAY
12422 # define STDIO_STREAM_ARRAY $stdio_stream_array
12423 #endif
12424 int main() {
12425   FILE* p = fopen("try.out", "w");
12426 #ifdef TRY_FPUTC
12427   fputc('x', p);
12428 #else
12429 # ifdef TRY_FPRINTF
12430   fprintf(p, "x");
12431 # endif
12432 #endif
12433 #ifdef TRY_FFLUSH_NULL
12434   fflush(NULL);
12435 #endif
12436 #ifdef TRY_FFLUSH_ALL
12437   {
12438     long open_max = -1;
12439 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12440     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12441 # else
12442 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12443     open_max = sysconf(_SC_OPEN_MAX);
12444 #  else
12445 #   ifdef FOPEN_MAX
12446     open_max = FOPEN_MAX;
12447 #   else
12448 #    ifdef OPEN_MAX
12449     open_max = OPEN_MAX;
12450 #    else
12451 #     ifdef _NFILE
12452     open_max = _NFILE;
12453 #     endif
12454 #    endif
12455 #   endif
12456 #  endif
12457 # endif 
12458 # ifdef HAS_STDIO_STREAM_ARRAY
12459     if (open_max > 0) {
12460       long i;
12461       for (i = 0; i < open_max; i++)
12462             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12463                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12464                 STDIO_STREAM_ARRAY[i]._flag)
12465                 fflush(&STDIO_STREAM_ARRAY[i]);
12466     }   
12467   }
12468 # endif
12469 #endif
12470   _exit(42);
12471 }
12472 EOCP
12473 : first we have to find out how _not_ to flush
12474 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12475     output=''
12476     set try -DTRY_FPUTC
12477     if eval $compile; then
12478             $rm -f try.out
12479             ./try$exe_ext 2>/dev/null
12480             if $test ! -s try.out -a "X$?" = X42; then
12481                 output=-DTRY_FPUTC
12482             fi
12483     fi
12484     case "$output" in
12485     '')
12486             set try -DTRY_FPRINTF
12487             $rm -f try.out
12488             if eval $compile; then
12489                     $rm -f try.out
12490                     ./try$exe_ext 2>/dev/null
12491                     if $test ! -s try.out -a "X$?" = X42; then
12492                         output=-DTRY_FPRINTF
12493                     fi
12494             fi
12495         ;;
12496     esac
12497 fi
12498 : check for fflush NULL behaviour
12499 case "$fflushNULL" in
12500 '')     set try -DTRY_FFLUSH_NULL $output
12501         if eval $compile; then
12502                 $rm -f try.out
12503                 ./try$exe_ext 2>/dev/null
12504                 code="$?"
12505                 if $test -s try.out -a "X$code" = X42; then
12506                         fflushNULL="`$cat try.out`"
12507                 else
12508                         if $test "X$code" != X42; then
12509                                 $cat >&4 <<EOM
12510 (If this test failed, don't worry, we'll try another method shortly.)
12511 EOM
12512                         fi
12513                 fi
12514         fi
12515         $rm -f core try.core core.try.*
12516         case "$fflushNULL" in
12517         x)      $cat >&4 <<EOM
12518 Your fflush(NULL) works okay.
12519 EOM
12520                 fflushNULL="$define"
12521                 ;;
12522         '')     $cat >&4 <<EOM
12523 Your fflush(NULL) isn't working (contrary to ANSI C).
12524 EOM
12525                 fflushNULL="$undef"
12526                 ;;
12527         *)      $cat >&4 <<EOM
12528 Cannot figure out whether your fflush(NULL) works or not.
12529 I'm assuming it doesn't (contrary to ANSI C).
12530 EOM
12531                 fflushNULL="$undef"
12532                 ;;
12533         esac
12534         ;;
12535 $define|true|[yY]*)
12536         fflushNULL="$define"
12537         ;;
12538 *)
12539         fflushNULL="$undef"
12540         ;;
12541 esac
12542 : check explicit looping only if NULL did not work
12543 case "$fflushNULL" in
12544 "$undef")
12545         : check for fflush all behaviour
12546         case "$fflushall" in
12547         '')     set try -DTRY_FFLUSH_ALL $output
12548                 if eval $compile; then
12549                         $cat >&4 <<EOM
12550 (Now testing the other method--but note that also this may fail.)
12551 EOM
12552                         $rm -f try.out
12553                         ./try$exe_ext 2>/dev/null
12554                         if $test -s try.out -a "X$?" = X42; then
12555                                 fflushall="`$cat try.out`"
12556                         fi
12557                 fi
12558                 $rm -f core try.core core.try.*
12559                 case "$fflushall" in
12560                 x)      $cat >&4 <<EOM
12561 Whew. Flushing explicitly all the stdio streams works.
12562 EOM
12563                         fflushall="$define"
12564                         ;;
12565                 '')     $cat >&4 <<EOM
12566 Sigh. Flushing explicitly all the stdio streams doesn't work.
12567 EOM
12568                         fflushall="$undef"
12569                         ;;
12570                 *)      $cat >&4 <<EOM
12571 Cannot figure out whether flushing stdio streams explicitly works or not.
12572 I'm assuming it doesn't.
12573 EOM
12574                         fflushall="$undef"
12575                         ;;
12576                 esac
12577                 ;;
12578         "$define"|true|[yY]*)
12579                 fflushall="$define"
12580                 ;;
12581         *)
12582                 fflushall="$undef"
12583                 ;;
12584         esac
12585         ;;
12586 *)      fflushall="$undef"      
12587         ;;
12588 esac
12589 case "$fflushNULL$fflushall" in
12590 undefundef)
12591         $cat <<EOM
12592 I cannot figure out how to flush pending stdio output.
12593 EOM
12594         ;;
12595 esac
12596 $rm -f try.* try$exe_ext
12597
12598 : Store the full pathname to the ar program for use in the C program
12599 : Respect a hint or command line value for full_ar.
12600 case "$full_ar" in
12601 '') full_ar=$ar ;;
12602 esac
12603
12604 : Store the full pathname to the sed program for use in the C program
12605 full_sed=$sed
12606
12607 : see what type gids are declared as in the kernel
12608 echo " "
12609 echo "Looking for the type for group ids returned by getgid()."
12610 set gid_t gidtype xxx stdio.h sys/types.h
12611 eval $typedef
12612 case "$gidtype" in
12613 xxx)
12614         xxx=`./findhdr sys/user.h`
12615         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12616         case $1 in
12617         unsigned) dflt="$1 $2" ;;
12618         *) dflt="$1" ;;
12619         esac
12620         ;;
12621 *) dflt="$gidtype";;
12622 esac
12623 case "$gidtype" in
12624 gid_t) echo "gid_t found." ;;
12625 *)      rp="What is the type for group ids returned by getgid()?"
12626         . ./myread
12627         gidtype="$ans"
12628         ;;
12629 esac
12630
12631 echo " "
12632 case "$gidtype" in
12633 *_t) zzz="$gidtype"     ;;
12634 *)   zzz="gid"          ;;
12635 esac
12636 echo "Checking the size of $zzz..." >&4 
12637 cat > try.c <<EOCP
12638 #include <sys/types.h>
12639 #include <stdio.h>
12640 int main() {
12641     printf("%d\n", (int)sizeof($gidtype));
12642     exit(0);
12643 }
12644 EOCP
12645 set try
12646 if eval $compile_ok; then
12647         yyy=`./try`
12648         case "$yyy" in
12649         '')     gidsize=4
12650                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12651                 ;;
12652         *)      gidsize=$yyy
12653                 echo "Your $zzz is $gidsize bytes long."
12654                 ;;
12655         esac
12656 else
12657         gidsize=4
12658         echo "(I can't compile the test program--guessing $gidsize.)" >&4
12659 fi
12660
12661
12662 echo " "
12663 case "$gidtype" in
12664 *_t) zzz="$gidtype"     ;;
12665 *)   zzz="gid"          ;;
12666 esac
12667 echo "Checking the sign of $zzz..." >&4 
12668 cat > try.c <<EOCP
12669 #include <sys/types.h>
12670 #include <stdio.h>
12671 int main() {
12672         $gidtype foo = -1;
12673         if (foo < 0)
12674                 printf("-1\n");
12675         else
12676                 printf("1\n");
12677 }
12678 EOCP
12679 set try
12680 if eval $compile; then
12681         yyy=`./try`
12682         case "$yyy" in
12683         '')     gidsign=1
12684                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12685                 ;;
12686         *)      gidsign=$yyy
12687                 case "$gidsign" in
12688                  1) echo "Your $zzz is unsigned." ;;
12689                 -1) echo "Your $zzz is signed."   ;;
12690                 esac
12691                 ;;
12692         esac
12693 else
12694         gidsign=1
12695         echo "(I can't compile the test program--guessing unsigned.)" >&4
12696 fi
12697
12698
12699 echo " "
12700
12701 if $test X"$quadtype" != X; then
12702
12703 echo "Checking how to print 64-bit integers..." >&4
12704
12705 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12706         $cat >try.c <<'EOCP'
12707 #include <sys/types.h>
12708 #include <stdio.h>
12709 int main() {
12710   int q = 12345678901;
12711   printf("%ld\n", q);
12712 }
12713 EOCP
12714         set try
12715         if eval $compile; then
12716                 yyy=`./try$exe_ext`
12717                 case "$yyy" in
12718                 12345678901)
12719                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12720                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12721                         echo "We will use %d."
12722                         ;;
12723                 esac
12724         fi
12725 fi
12726
12727 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12728         $cat >try.c <<'EOCP'
12729 #include <sys/types.h>
12730 #include <stdio.h>
12731 int main() {
12732   long q = 12345678901;
12733   printf("%ld\n", q);
12734 }
12735 EOCP
12736         set try
12737         if eval $compile; then
12738                 yyy=`./try$exe_ext`
12739                 case "$yyy" in
12740                 12345678901)
12741                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12742                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12743                         echo "We will use %ld."
12744                         ;;
12745                 esac
12746         fi
12747 fi
12748
12749 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12750         $cat >try.c <<'EOCP'
12751 #include <sys/types.h>
12752 #include <inttypes.h>
12753 #include <stdio.h>
12754 int main() {
12755   int64_t q = 12345678901;
12756   printf("%" PRId64 "\n", q);
12757 }
12758 EOCP
12759         set try
12760         if eval $compile; then
12761                 yyy=`./try$exe_ext`
12762                 case "$yyy" in
12763                 12345678901)
12764                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12765                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12766                         echo "We will use the C9X style."
12767                         ;;
12768                 esac
12769         fi
12770 fi
12771
12772 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12773         $cat >try.c <<'EOCP'
12774 #include <sys/types.h>
12775 #include <stdio.h>
12776 int main() {
12777   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12778   printf("%lld\n", q);
12779 }
12780 EOCP
12781         set try
12782         if eval $compile; then
12783                 yyy=`./try$exe_ext`
12784                 case "$yyy" in
12785                 12345678901)
12786                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12787                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12788                         echo "We will use the %lld style."
12789                         ;;
12790                 esac
12791         fi
12792 fi
12793
12794 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12795         $cat >try.c <<EOCP
12796 #include <sys/types.h>
12797 #include <stdio.h>
12798 int main() {
12799   $quadtype q = 12345678901;
12800   printf("%Ld\n", q);
12801 }
12802 EOCP
12803         set try
12804         if eval $compile; then
12805                 yyy=`./try$exe_ext`
12806                 case "$yyy" in
12807                 12345678901)
12808                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12809                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12810                         echo "We will use %Ld."
12811                         ;;
12812                 esac
12813         fi
12814 fi
12815
12816 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12817         $cat >try.c <<EOCP
12818 #include <sys/types.h>
12819 #include <stdio.h>
12820 int main() {
12821   $quadtype q = 12345678901;
12822   printf("%qd\n", q);
12823 }
12824 EOCP
12825         set try
12826         if eval $compile; then
12827                 yyy=`./try$exe_ext`
12828                 case "$yyy" in
12829                 12345678901)
12830                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12831                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12832                         echo "We will use %qd."
12833                         ;;
12834                 esac
12835         fi
12836 fi
12837
12838 if $test X"$sPRId64" = X; then
12839         echo "Cannot figure out how to print 64-bit integers." >&4
12840 fi
12841
12842 $rm -f try try.*
12843
12844 fi
12845
12846 case "$sPRId64" in
12847 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
12848         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
12849         ;;
12850 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
12851         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
12852         ;;
12853 esac
12854
12855
12856 echo " "
12857 $echo "Checking the format strings to be used for Perl's internal types..." >&4
12858
12859 if $test X"$ivsize" = X8; then
12860         ivdformat="$sPRId64"
12861         uvuformat="$sPRIu64"
12862         uvoformat="$sPRIo64"
12863         uvxformat="$sPRIx64"
12864 else
12865         if $test X"$ivsize" = X"$longsize"; then
12866                 ivdformat='"ld"'
12867                 uvuformat='"lu"'
12868                 uvoformat='"lo"'
12869                 uvxformat='"lx"'
12870         else
12871                 if $test X"$ivsize" = X"$intsize"; then
12872                         ivdformat='"d"'
12873                         uvuformat='"u"'
12874                         uvoformat='"o"'
12875                         uvxformat='"x"'
12876                 else
12877                         : far out
12878                         if $test X"$ivsize" = X"$shortsize"; then
12879                                 ivdformat='"hd"'
12880                                 uvuformat='"hu"'
12881                                 uvoformat='"ho"'
12882                                 uvxformat='"hx"'
12883                         fi
12884                 fi
12885         fi
12886 fi
12887
12888 case "$ivdformat" in
12889 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
12890     exit 1
12891     ;;
12892 esac
12893
12894
12895 echo " "
12896 $echo "Checking the format string to be used for gids..." >&4
12897
12898 case "$gidsign" in
12899 -1)     if $test X"$gidsize" = X"$ivsize"; then
12900                 gidformat="$ivdformat"
12901         else
12902                 if $test X"$gidsize" = X"$longsize"; then
12903                         gidformat='"ld"'
12904                 else
12905                         if $test X"$gidsize" = X"$intsize"; then
12906                                 gidformat='"d"'
12907                         else
12908                                 if $test X"$gidsize" = X"$shortsize"; then
12909                                         gidformat='"hd"'
12910                                 fi
12911                         fi
12912                 fi
12913         fi
12914         ;;
12915 *)      if $test X"$gidsize" = X"$uvsize"; then
12916                 gidformat="$uvuformat"
12917         else
12918                 if $test X"$gidsize" = X"$longsize"; then
12919                         gidformat='"lu"'
12920                 else
12921                         if $test X"$gidsize" = X"$intsize"; then
12922                                 gidformat='"u"'
12923                         else
12924                                 if $test X"$gidsize" = X"$shortsize"; then
12925                                         gidformat='"hu"'
12926                                 fi
12927                         fi
12928                 fi
12929         fi
12930         ;;
12931 esac
12932
12933 : see if getgroups exists
12934 set getgroups d_getgrps
12935 eval $inlibc
12936
12937 : see if setgroups exists
12938 set setgroups d_setgrps
12939 eval $inlibc
12940
12941
12942 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
12943 echo " "
12944 case "$d_getgrps$d_setgrps" in
12945 *define*)
12946         case "$groupstype" in
12947         '') dflt="$gidtype" ;;
12948         *)  dflt="$groupstype" ;;
12949         esac
12950         $cat <<EOM
12951 What type of pointer is the second argument to getgroups() and setgroups()?
12952 Usually this is the same as group ids, $gidtype, but not always.
12953
12954 EOM
12955         rp='What type pointer is the second argument to getgroups() and setgroups()?'
12956         . ./myread
12957         groupstype="$ans"
12958         ;;
12959 *)  groupstype="$gidtype";;
12960 esac
12961
12962 echo " "
12963 echo "Checking if your $make program sets \$(MAKE)..." >&4
12964 case "$make_set_make" in
12965 '')
12966         $sed 's/^X //' > testmake.mak << 'EOF'
12967 Xall:
12968 X       @echo 'maketemp="$(MAKE)"'
12969 EOF
12970         case "`$make -f testmake.mak 2>/dev/null`" in
12971         *maketemp=*) make_set_make='#' ;;
12972         *)      make_set_make="MAKE=$make" ;;
12973         esac
12974         $rm -f testmake.mak
12975         ;;
12976 esac
12977 case "$make_set_make" in
12978 '#') echo "Yup, it does.";;
12979 *) echo "Nope, it doesn't.";;
12980 esac
12981
12982 : see what type is used for mode_t
12983 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
12984 set mode_t modetype int stdio.h sys/types.h
12985 eval $typedef_ask
12986
12987 : define a fucntion to check prototypes
12988 $cat > protochk <<EOSH
12989 $startsh
12990 cc="$cc"
12991 optimize="$optimize"
12992 ccflags="$ccflags"
12993 prototype="$prototype"
12994 define="$define"
12995 rm=$rm
12996 EOSH
12997
12998 $cat >> protochk <<'EOSH'
12999
13000 $rm -f try.c
13001 foo="$1"
13002 shift
13003 while test $# -ge 2; do
13004         case "$1" in
13005                 $define) echo "#include <$2>" >> try.c ;;
13006                 literal) echo "$2" >> try.c ;;
13007         esac
13008     shift 2
13009 done
13010 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13011 cat >> try.c <<'EOCP'
13012 #ifdef CAN_PROTOTYPE
13013 #define _(args) args
13014 #else
13015 #define _(args) ()
13016 #endif
13017 EOCP
13018 echo "$foo" >> try.c
13019 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13020 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13021 status=$?
13022 $rm -f try.[co]
13023 exit $status
13024 EOSH
13025 chmod +x protochk
13026 $eunicefix protochk
13027
13028 : see what type is used for size_t
13029 rp="What is the type used for the length parameter for string functions?"
13030 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13031 eval $typedef_ask
13032
13033 : check for type of arguments to gethostbyaddr. 
13034 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13035         case "$d_gethbyaddr" in
13036         $define)
13037                 $cat <<EOM
13038
13039 Checking to see what type of arguments are accepted by gethostbyaddr().
13040 EOM
13041                 hdrs="$define sys/types.h
13042                         $d_socket sys/socket.h 
13043                         $i_niin netinet/in.h 
13044                         $i_netdb netdb.h
13045                         $i_unistd unistd.h"
13046                 : The first arg can 'char *' or 'void *'
13047                 : The second arg is some of integral type
13048                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13049                         for yyy in size_t long int; do
13050                                 case "$netdb_host_type" in
13051                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13052                                         if ./protochk "$try" $hdrs; then
13053                                                 echo "Your system accepts $xxx for the first arg."
13054                                                 echo "...and $yyy for the second arg."
13055                                                 netdb_host_type="$xxx"
13056                                                 netdb_hlen_type="$yyy"
13057                                         fi
13058                                         ;;
13059                                 esac
13060                         done
13061                 done
13062                 : In case none of those worked, prompt the user.
13063                 case "$netdb_host_type" in
13064                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
13065                         dflt='char *'
13066                         . ./myread
13067                         netdb_host_type=$ans
13068                         rp='What is the type for the 2nd argument to gethostbyaddr?'
13069                         dflt="$sizetype"
13070                         . ./myread
13071                         netdb_hlen_type=$ans
13072                         ;;
13073                 esac
13074                 ;;
13075         *)      : no gethostbyaddr, so pick harmless defaults
13076                 netdb_host_type='char *'
13077                 netdb_hlen_type="$sizetype"
13078                 ;;
13079         esac
13080         # Remove the "const" if needed. -- but then we'll have a 
13081         # prototype clash!
13082         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13083 fi
13084
13085 : check for type of argument to gethostbyname. 
13086 if test "X$netdb_name_type" = X ; then
13087         case "$d_gethbyname" in
13088         $define)
13089                 $cat <<EOM
13090
13091 Checking to see what type of argument is accepted by gethostbyname().
13092 EOM
13093                 hdrs="$define sys/types.h
13094                         $d_socket sys/socket.h 
13095                         $i_niin netinet/in.h 
13096                         $i_netdb netdb.h
13097                         $i_unistd unistd.h"
13098                 for xxx in "const char *" "char *"; do
13099                         case "$netdb_name_type" in
13100                         '')     try="extern struct hostent *gethostbyname($xxx);"
13101                                 if ./protochk "$try" $hdrs; then
13102                                         echo "Your system accepts $xxx."
13103                                         netdb_name_type="$xxx"
13104                                 fi
13105                                 ;;
13106                         esac
13107                 done
13108                 : In case none of those worked, prompt the user.
13109                 case "$netdb_name_type" in
13110                 '')     rp='What is the type for the 1st argument to gethostbyname?'
13111                         dflt='char *'
13112                         . ./myread
13113                         netdb_name_type=$ans
13114                         ;;
13115                 esac
13116                 ;;
13117         *)      : no gethostbyname, so pick harmless default
13118                 netdb_name_type='char *'
13119                 ;;
13120         esac
13121 fi
13122
13123 : check for type of 1st argument to getnetbyaddr. 
13124 if test "X$netdb_net_type" = X ; then
13125         case "$d_getnbyaddr" in
13126         $define)
13127                 $cat <<EOM
13128
13129 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13130 EOM
13131                 hdrs="$define sys/types.h
13132                         $d_socket sys/socket.h 
13133                         $i_niin netinet/in.h 
13134                         $i_netdb netdb.h
13135                         $i_unistd unistd.h"
13136                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13137                         case "$netdb_net_type" in
13138                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
13139                                 if ./protochk "$try" $hdrs; then
13140                                         echo "Your system accepts $xxx."
13141                                         netdb_net_type="$xxx"
13142                                 fi
13143                                 ;;
13144                         esac
13145                 done
13146                 : In case none of those worked, prompt the user.
13147                 case "$netdb_net_type" in
13148                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
13149                         dflt='long'
13150                         . ./myread
13151                         netdb_net_type=$ans
13152                         ;;
13153                 esac
13154                 ;;
13155         *)      : no getnetbyaddr, so pick harmless default
13156                 netdb_net_type='long'
13157                 ;;
13158         esac
13159 fi
13160 : locate the preferred pager for this system
13161 case "$pager" in
13162 '')
13163         dflt=''
13164         case "$pg" in
13165         /*) dflt=$pg;;
13166         esac
13167         case "$more" in
13168         /*) dflt=$more;;
13169         esac
13170         case "$less" in
13171         /*) dflt=$less;;
13172         esac
13173         case "$dflt" in
13174         '') dflt=/usr/ucb/more;;
13175         esac
13176         ;;
13177 *) dflt="$pager";;
13178 esac
13179 echo " "
13180 fn=f/
13181 rp='What pager is used on your system?'
13182 . ./getfile
13183 pager="$ans"
13184
13185 : see what type pids are declared as in the kernel
13186 rp="What is the type of process ids on this system?"
13187 set pid_t pidtype int stdio.h sys/types.h
13188 eval $typedef_ask
13189
13190 : Find earliest binary compatible site_perl subdirectory perl can use.
13191 case "$bincompat5005" in
13192 "$define") xs_apiversion='5.005' ;;
13193 *) xs_apiversion=$version ;;   # The current site_perl version.
13194 esac
13195 : Find earliest pure perl site_perl subdirectory perl can use.
13196 : The versioned directories started at 5.005.
13197 pm_apiversion='5.005'
13198
13199 : check for length of pointer
13200 echo " "
13201 case "$ptrsize" in
13202 '')
13203         echo "Checking to see how big your pointers are..." >&4
13204         if test "$voidflags" -gt 7; then
13205                 echo '#define VOID_PTR char *' > try.c
13206         else
13207                 echo '#define VOID_PTR void *' > try.c
13208         fi
13209         $cat >>try.c <<'EOCP'
13210 #include <stdio.h>
13211 int main()
13212 {
13213     printf("%d\n", (int)sizeof(VOID_PTR));
13214     exit(0);
13215 }
13216 EOCP
13217         set try
13218         if eval $compile_ok; then
13219                 ptrsize=`./try`
13220                 echo "Your pointers are $ptrsize bytes long."
13221         else
13222                 dflt='4'
13223                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
13224                 rp="What is the size of a pointer (in bytes)?"
13225                 . ./myread
13226                 ptrsize="$ans"
13227         fi
13228         ;;
13229 esac
13230 $rm -f try.c try
13231
13232 : see if ar generates random libraries by itself
13233 echo " "
13234 echo "Checking how to generate random libraries on your machine..." >&4
13235 echo 'int bar1() { return bar2(); }' > bar1.c
13236 echo 'int bar2() { return 2; }' > bar2.c
13237 $cat > foo.c <<'EOP'
13238 int main() { printf("%d\n", bar1()); exit(0); }
13239 EOP
13240 $cc $ccflags -c bar1.c >/dev/null 2>&1
13241 $cc $ccflags -c bar2.c >/dev/null 2>&1
13242 $cc $ccflags -c foo.c >/dev/null 2>&1
13243 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13244 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13245         ./foobar >/dev/null 2>&1; then
13246         echo "$ar appears to generate random libraries itself."
13247         orderlib=false
13248         ranlib=":"
13249 elif $ar ts bar$_a >/dev/null 2>&1 &&
13250         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13251         ./foobar >/dev/null 2>&1; then
13252                 echo "a table of contents needs to be added with '$ar ts'."
13253                 orderlib=false
13254                 ranlib="$ar ts"
13255 else
13256         case "$ranlib" in
13257         :) ranlib='';;
13258         '')
13259                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13260                 $test -f $ranlib || ranlib=''
13261                 ;;
13262         esac
13263         if $test -n "$ranlib"; then
13264                 echo "your system has '$ranlib'; we'll use that."
13265                 orderlib=false
13266         else
13267                 echo "your system doesn't seem to support random libraries"
13268                 echo "so we'll use lorder and tsort to order the libraries."
13269                 orderlib=true
13270                 ranlib=":"
13271         fi
13272 fi
13273 $rm -f foo* bar* 
13274
13275 : check for type of arguments to select. 
13276 case "$selecttype" in
13277 '') case "$d_select" in
13278         $define)
13279                 echo " "
13280                 $cat <<EOM
13281 Checking to see what type of arguments are accepted by select().
13282 EOM
13283                 hdrs="$define sys/types.h
13284                         $i_systime sys/time.h 
13285                         $i_sysselct sys/select.h
13286                         $d_socket sys/socket.h"
13287                 : The first arg can be int, unsigned, or size_t
13288                 : The last arg may or may not be 'const'
13289                 val=''
13290                 : void pointer has been seen but using that
13291                 : breaks the selectminbits test
13292                 for xxx in 'fd_set *' 'int *'; do
13293                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13294                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
13295                                         case "$val" in
13296                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13297                                                 if ./protochk "$try" $hdrs; then
13298                                                         echo "Your system accepts $xxx."
13299                                                         val="$xxx"
13300                                                 fi
13301                                                 ;;
13302                                         esac
13303                                 done
13304                         done
13305                 done
13306                 case "$val" in
13307                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13308                         case "$d_fd_set" in
13309                                 $define) dflt="fd_set *" ;;
13310                                 *)              dflt="int *" ;;
13311                         esac
13312                         . ./myread
13313                         val=$ans
13314                         ;;
13315                 esac
13316                 selecttype="$val"
13317                 ;;
13318         *)      : no select, so pick a harmless default
13319                 selecttype='int *'
13320                 ;;
13321         esac
13322         ;;
13323 esac
13324
13325 : check for the select 'width'
13326 case "$selectminbits" in
13327 '') case "$d_select" in
13328         $define)
13329                 $cat <<EOM
13330
13331 Checking to see on how many bits at a time your select() operates...
13332 EOM
13333                 $cat >try.c <<EOCP
13334 #include <sys/types.h>
13335 #$i_time I_TIME
13336 #$i_systime I_SYS_TIME
13337 #$i_systimek I_SYS_TIME_KERNEL
13338 #ifdef I_TIME
13339 #   include <time.h>
13340 #endif
13341 #ifdef I_SYS_TIME
13342 #   ifdef I_SYS_TIME_KERNEL
13343 #       define KERNEL
13344 #   endif
13345 #   include <sys/time.h>
13346 #   ifdef I_SYS_TIME_KERNEL
13347 #       undef KERNEL
13348 #   endif
13349 #endif
13350 #$i_sysselct I_SYS_SELECT
13351 #ifdef I_SYS_SELECT
13352 #include <sys/select.h>
13353 #endif
13354 #$d_socket HAS_SOCKET
13355 #ifdef HAS_SOCKET
13356 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13357 #endif
13358 #include <stdio.h>
13359 $selecttype b;
13360 #define S sizeof(*(b))
13361 #define MINBITS 64
13362 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13363 #define NBITS  (NBYTES * 8)
13364 int main() {
13365     char s[NBYTES];
13366     struct timeval t;
13367     int i;
13368     FILE* fp;
13369     int fd;
13370
13371     fclose(stdin);
13372     fp = fopen("try.c", "r");
13373     if (fp == 0)
13374       exit(1);
13375     fd = fileno(fp);
13376     if (fd < 0)
13377       exit(2);
13378     b = ($selecttype)s;
13379     for (i = 0; i < NBITS; i++)
13380         FD_SET(i, b);
13381     t.tv_sec  = 0;
13382     t.tv_usec = 0;
13383     select(fd + 1, b, 0, 0, &t);
13384     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13385     printf("%d\n", i + 1);
13386     return 0;
13387 }
13388 EOCP
13389                 set try
13390                 if eval $compile_ok; then
13391                         selectminbits=`./try`
13392                         case "$selectminbits" in
13393                         '')     cat >&4 <<EOM
13394 Cannot figure out on how many bits at a time your select() operates.
13395 I'll play safe and guess it is 32 bits.
13396 EOM
13397                                 selectminbits=32
13398                                 bits="32 bits"
13399                                 ;;
13400                         1)      bits="1 bit" ;;
13401                         *)      bits="$selectminbits bits" ;;
13402                         esac
13403                         echo "Your select() operates on $bits at a time." >&4
13404                 else
13405                         rp='What is the minimum number of bits your select() operates on?'
13406                         case "$byteorder" in
13407                         1234|12345678)  dflt=32 ;;
13408                         *)              dflt=1  ;;
13409                         esac
13410                         . ./myread
13411                         val=$ans
13412                         selectminbits="$val"
13413                 fi
13414                 $rm -f try.* try
13415                 ;;
13416         *)      : no select, so pick a harmless default
13417                 selectminbits='32'
13418                 ;;
13419         esac
13420         ;;
13421 esac
13422
13423 : Trace out the files included by signal.h, then look for SIGxxx names.
13424 : Remove SIGARRAYSIZE used by HPUX.
13425 : Remove SIGSTKSIZE used by Linux.
13426 : Remove SIGSTKSZ used by Posix.
13427 : Remove SIGTYP void lines used by OS2.
13428 : Some cpps, like os390, dont give the file name anywhere
13429 if [ "X$fieldn" = X ]; then
13430         : Just make some guesses.  We check them later.
13431         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13432 else
13433         xxx=`echo '#include <signal.h>' |
13434         $cppstdin $cppminus $cppflags 2>/dev/null |
13435         $grep '^[       ]*#.*include' | 
13436         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13437 fi
13438 : Check this list of files to be sure we have parsed the cpp output ok.
13439 : This will also avoid potentially non-existent files, such 
13440 : as ../foo/bar.h
13441 xxxfiles=''
13442 for xx in $xxx /dev/null ; do
13443         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13444 done
13445 : If we have found no files, at least try signal.h
13446 case "$xxxfiles" in
13447 '')     xxxfiles=`./findhdr signal.h` ;;
13448 esac
13449 xxx=`awk '
13450 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13451         print substr($2, 4, 20)
13452 }
13453 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13454         print substr($3, 4, 20)
13455 }' $xxxfiles`
13456 : Append some common names just in case the awk scan failed.
13457 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13458 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13459 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13460 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13461 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13462
13463 : generate a few handy files for later
13464 $cat > signal.c <<'EOCP'
13465 #include <sys/types.h>
13466 #include <signal.h>
13467 #include <stdio.h>
13468 int main() {
13469
13470 /* Strange style to avoid deeply-nested #if/#else/#endif */
13471 #ifndef NSIG
13472 #  ifdef _NSIG
13473 #    define NSIG (_NSIG)
13474 #  endif
13475 #endif
13476
13477 #ifndef NSIG
13478 #  ifdef SIGMAX
13479 #    define NSIG (SIGMAX+1)
13480 #  endif
13481 #endif
13482
13483 #ifndef NSIG
13484 #  ifdef SIG_MAX
13485 #    define NSIG (SIG_MAX+1)
13486 #  endif
13487 #endif
13488
13489 #ifndef NSIG
13490 #  ifdef MAXSIG
13491 #    define NSIG (MAXSIG+1)
13492 #  endif
13493 #endif
13494
13495 #ifndef NSIG
13496 #  ifdef MAX_SIG
13497 #    define NSIG (MAX_SIG+1)
13498 #  endif
13499 #endif
13500
13501 #ifndef NSIG
13502 #  ifdef SIGARRAYSIZE
13503 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13504 #  endif
13505 #endif
13506
13507 #ifndef NSIG
13508 #  ifdef _sys_nsig
13509 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13510 #  endif
13511 #endif
13512
13513 /* Default to some arbitrary number that's big enough to get most
13514    of the common signals.
13515 */
13516 #ifndef NSIG
13517 #    define NSIG 50
13518 #endif
13519
13520 printf("NSIG %d\n", NSIG);
13521
13522 #ifndef JUST_NSIG
13523
13524 EOCP
13525
13526 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13527 {
13528         printf "#ifdef SIG"; printf $1; printf "\n"
13529         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13530         printf $1; printf ");\n"
13531         printf "#endif\n"
13532 }
13533 END {
13534         printf "#endif /* JUST_NSIG */\n";
13535         printf "exit(0);\n}\n";
13536 }
13537 ' >>signal.c
13538 $cat >signal.awk <<'EOP'
13539 BEGIN { ndups = 0 }
13540 $1 ~ /^NSIG$/ { nsig = $2 }
13541 ($1 !~ /^NSIG$/) && (NF == 2) {
13542     if ($2 > maxsig) { maxsig = $2 }
13543     if (sig_name[$2]) {
13544         dup_name[ndups] = $1
13545         dup_num[ndups] = $2
13546         ndups++ 
13547     }
13548     else {
13549         sig_name[$2] = $1
13550         sig_num[$2] = $2
13551     }
13552 }
13553 END { 
13554     if (nsig == 0) {
13555         nsig = maxsig + 1
13556     }
13557     printf("NSIG %d\n", nsig);
13558     for (n = 1; n < nsig; n++) {
13559         if (sig_name[n]) {
13560             printf("%s %d\n", sig_name[n], sig_num[n])
13561         }
13562         else {
13563             printf("NUM%d %d\n", n, n) 
13564         }
13565     }
13566     for (n = 0; n < ndups; n++) {
13567         printf("%s %d\n", dup_name[n], dup_num[n])
13568     }
13569 }
13570 EOP
13571 $cat >signal_cmd <<EOS
13572 $startsh
13573 if $test -s signal.lst; then
13574     echo "Using your existing signal.lst file"
13575         exit 0
13576 fi
13577 xxx="$xxx"
13578 EOS
13579 $cat >>signal_cmd <<'EOS'
13580
13581 set signal
13582 if eval $compile_ok; then
13583         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13584 else
13585         echo "(I can't seem be able to compile the whole test program)" >&4
13586         echo "(I'll try it in little pieces.)" >&4
13587         set signal -DJUST_NSIG
13588         if eval $compile_ok; then
13589                 ./signal$_exe > signal.nsg
13590                 $cat signal.nsg
13591         else
13592                 echo "I can't seem to figure out how many signals you have." >&4
13593                 echo "Guessing 50." >&4
13594                 echo 'NSIG 50' > signal.nsg
13595         fi
13596         : Now look at all the signal names, one at a time.
13597         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13598                 $cat > signal.c <<EOCP
13599 #include <sys/types.h>
13600 #include <signal.h>
13601 #include <stdio.h>
13602 int main() {
13603 printf("$xx %d\n", SIG${xx});
13604 return 0;
13605 }
13606 EOCP
13607                 set signal
13608                 if eval $compile; then
13609                         echo "SIG${xx} found."
13610                         ./signal$_exe  >> signal.ls1
13611                 else
13612                         echo "SIG${xx} NOT found."
13613                 fi
13614         done
13615         if $test -s signal.ls1; then
13616                 $cat signal.nsg signal.ls1 |
13617                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13618         fi
13619
13620 fi
13621 if $test -s signal.lst; then
13622         :
13623 else
13624         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13625         echo 'kill -l' >signal
13626         set X `csh -f <signal`
13627         $rm -f signal
13628         shift
13629         case $# in
13630         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13631         esac
13632         echo $@ | $tr ' ' $trnl | \
13633             $awk '{ printf "%s %d\n", $1, ++s; }
13634                   END { printf "NSIG %d\n", ++s }' >signal.lst
13635 fi
13636 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13637 EOS
13638 chmod a+x signal_cmd
13639 $eunicefix signal_cmd
13640
13641 : generate list of signal names
13642 echo " "
13643 case "$sig_name_init" in
13644 '') doinit=yes ;;
13645 *)  case "$sig_num_init" in
13646     ''|*,*) doinit=yes ;;
13647     esac ;;
13648 esac
13649 case "$doinit" in
13650 yes)
13651         echo "Generating a list of signal names and numbers..." >&4
13652         . ./signal_cmd
13653         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13654         sig_name=`$awk 'BEGIN { printf "ZERO " }
13655                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13656         sig_num=`$awk  'BEGIN { printf "0 " }
13657                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13658         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
13659                              !/^NSIG/   { printf "\"%s\", ", $1 }
13660                              END        { printf "0\n" }' signal.lst`
13661         sig_num_init=`$awk  'BEGIN      { printf "0, " }
13662                              !/^NSIG/   { printf "%d, ", $2}
13663                              END        { printf "0\n"}' signal.lst`
13664         ;;
13665 esac
13666 echo "The following $sig_count signals are available:"
13667 echo " "
13668 echo $sig_name | $awk \
13669 'BEGIN { linelen = 0 }
13670 {
13671         for (i = 1; i <= NF; i++) {
13672                 name = "SIG" $i " "
13673                 linelen = linelen + length(name)
13674                 if (linelen > 70) {
13675                         printf "\n"
13676                         linelen = length(name)
13677                 }
13678                 printf "%s", name
13679         }
13680         printf "\n"
13681 }'
13682 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
13683
13684 : check for socklen_t
13685 echo " "
13686 echo "Checking to see if you have socklen_t..." >&4
13687 $cat >try.c <<EOCP
13688 #include <sys/types.h>
13689 #$d_socket HAS_SOCKET
13690 #ifdef HAS_SOCKET
13691 #include <sys/socket.h>
13692 #endif
13693 int main() { socklen_t x = 16; }
13694 EOCP
13695 set try
13696 if eval $compile; then
13697         val="$define"
13698         echo "You have socklen_t."
13699 else
13700         val="$undef"
13701         echo "You do not have socklen_t."
13702         case "$sizetype" in
13703         size_t) echo "(You do have size_t, that might work.)" ;;
13704         esac
13705 fi
13706 $rm -f try try.*
13707 set d_socklen_t
13708 eval $setvar
13709
13710 : check for type of the size argument to socket calls
13711 case "$d_socket" in
13712 "$define")
13713         $cat <<EOM
13714
13715 Checking to see what type is the last argument of accept().
13716 EOM
13717         hdrs="$define sys/types.h $d_socket sys/socket.h" 
13718         yyy=''
13719         case "$d_socklen_t" in
13720         "$define") yyy="$yyy socklen_t"
13721         esac
13722         yyy="$yyy $sizetype int long"
13723         for xxx in $yyy; do
13724                 case "$socksizetype" in
13725                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
13726                         if ./protochk "$try" $hdrs; then
13727                                 echo "Your system accepts '$xxx *' for the last argument of accept()."
13728                                 socksizetype="$xxx"
13729                         fi
13730                         ;;
13731                 esac
13732         done
13733 : In case none of those worked, prompt the user.
13734         case "$socksizetype" in
13735         '')     rp='What is the type for socket address structure sizes?'
13736                 dflt='int'
13737                 . ./myread
13738                 socksizetype=$ans
13739                 ;;
13740         esac
13741         ;;
13742 *)      : no sockets, so pick relatively harmless defaults
13743         socksizetype='char *'
13744         ;;
13745 esac
13746
13747 : see what type is used for signed size_t
13748 set ssize_t ssizetype int stdio.h sys/types.h
13749 eval $typedef
13750 dflt="$ssizetype"
13751 $cat > ssize.c <<EOM
13752 #include <stdio.h>
13753 #include <sys/types.h>
13754 #define Size_t $sizetype
13755 #define SSize_t $dflt
13756 int main()
13757 {
13758         if (sizeof(Size_t) == sizeof(SSize_t))
13759                 printf("$dflt\n");
13760         else if (sizeof(Size_t) == sizeof(int))
13761                 printf("int\n");
13762         else 
13763                 printf("long\n");
13764         exit(0);
13765 }
13766 EOM
13767 echo " "
13768 set ssize
13769 if eval $compile_ok && ./ssize > /dev/null; then
13770         ssizetype=`./ssize`
13771         echo "I'll be using $ssizetype for functions returning a byte count." >&4
13772 else
13773         $cat >&4 <<EOM
13774 Help! I can't compile and run the ssize_t test program: please enlighten me!
13775 (This is probably a misconfiguration in your system or libraries, and
13776 you really ought to fix it.  Still, I'll try anyway.)
13777
13778 I need a type that is the same size as $sizetype, but is guaranteed to
13779 be signed.  Common values are ssize_t, int and long.
13780
13781 EOM
13782         rp="What signed type is the same size as $sizetype?"
13783         . ./myread
13784         ssizetype="$ans"
13785 fi
13786 $rm -f ssize ssize.*
13787
13788 : see what type of char stdio uses.
13789 echo " "
13790 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13791         echo "Your stdio uses unsigned chars." >&4
13792         stdchar="unsigned char"
13793 else
13794         echo "Your stdio uses signed chars." >&4
13795         stdchar="char"
13796 fi
13797
13798 : see if time exists
13799 echo " "
13800 if test "X$d_time" = X -o X"$timetype" = X; then
13801     if set time val -f d_time; eval $csym; $val; then
13802                 echo 'time() found.' >&4
13803                 val="$define"
13804                 rp="What is the type returned by time() on this system?"
13805                 set time_t timetype long stdio.h sys/types.h
13806                 eval $typedef_ask
13807     else
13808                 echo 'time() not found, hope that will do.' >&4
13809                 val="$undef"
13810                 timetype='int';
13811     fi
13812     set d_time
13813     eval $setvar
13814 fi
13815
13816 : see what type uids are declared as in the kernel
13817 echo " "
13818 echo "Looking for the type for user ids returned by getuid()."
13819 set uid_t uidtype xxx stdio.h sys/types.h
13820 eval $typedef
13821 case "$uidtype" in
13822 xxx)
13823         xxx=`./findhdr sys/user.h`
13824         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13825         case $1 in
13826         unsigned) dflt="$1 $2" ;;
13827         *) dflt="$1" ;;
13828         esac
13829         ;;
13830 *) dflt="$uidtype";;
13831 esac
13832 case "$uidtype" in
13833 uid_t)  echo "uid_t found." ;;
13834 *)      rp="What is the type for user ids returned by getuid()?"
13835         . ./myread
13836         uidtype="$ans"
13837         ;;
13838 esac
13839
13840 echo " "
13841 case "$uidtype" in
13842 *_t) zzz="$uidtype"     ;;
13843 *)   zzz="uid"          ;;
13844 esac
13845 echo "Checking the size of $zzz..." >&4 
13846 cat > try.c <<EOCP
13847 #include <sys/types.h>
13848 #include <stdio.h>
13849 int main() {
13850     printf("%d\n", (int)sizeof($uidtype));
13851     exit(0);
13852 }
13853 EOCP
13854 set try
13855 if eval $compile_ok; then
13856         yyy=`./try`
13857         case "$yyy" in
13858         '')     uidsize=4
13859                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
13860                 ;;
13861         *)      uidsize=$yyy
13862                 echo "Your $zzz is $uidsize bytes long."
13863                 ;;
13864         esac
13865 else
13866         uidsize=4
13867         echo "(I can't compile the test program--guessing $uidsize.)" >&4
13868 fi
13869
13870 echo " "
13871 case "$uidtype" in
13872 *_t) zzz="$uidtype"     ;;
13873 *)   zzz="uid"          ;;
13874 esac
13875 echo "Checking the sign of $zzz..." >&4
13876 cat > try.c <<EOCP
13877 #include <sys/types.h>
13878 #include <stdio.h>
13879 int main() {
13880         $uidtype foo = -1;
13881         if (foo < 0)
13882                 printf("-1\n");
13883         else
13884                 printf("1\n");
13885 }
13886 EOCP
13887 set try
13888 if eval $compile; then
13889         yyy=`./try`
13890         case "$yyy" in
13891         '')     uidsign=1
13892                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13893                 ;;
13894         *)      uidsign=$yyy
13895                 case "$uidsign" in
13896                  1) echo "Your $zzz is unsigned." ;;
13897                 -1) echo "Your $zzz is signed."   ;;
13898                 esac
13899                 ;;
13900         esac
13901 else
13902         uidsign=1
13903         echo "(I can't compile the test program--guessing unsigned.)" >&4
13904 fi
13905
13906
13907
13908 echo " "
13909 $echo "Checking the format string to be used for uids..." >&4
13910
13911 case "$uidsign" in
13912 -1)     if $test X"$uidsize" = X"$ivsize"; then
13913                 uidformat="$ivdformat"
13914         else
13915                 if $test X"$uidsize" = X"$longsize"; then
13916                         uidformat='"ld"'
13917                 else
13918                         if $test X"$uidsize" = X"$intsize"; then
13919                                 uidformat='"d"'
13920                         else
13921                                 if $test X"$uidsize" = X"$shortsize"; then
13922                                         uidformat='"hd"'
13923                                 fi
13924                         fi
13925                 fi
13926         fi
13927         ;;
13928 *)      if $test X"$uidsize" = X"$uvsize"; then
13929                 uidformat="$uvuformat"
13930         else
13931                 if $test X"$uidsize" = X"$longsize"; then
13932                         uidformat='"lu"'
13933                 else
13934                         if $test X"$uidsize" = X"$intsize"; then
13935                                 uidformat='"u"'
13936                         else
13937                                 if $test X"$uidsize" = X"$shortsize"; then
13938                                         uidformat='"hu"'
13939                                 fi
13940                         fi
13941                 fi
13942         fi
13943         ;;
13944 esac
13945
13946 : see if dbm.h is available
13947 : see if dbmclose exists
13948 set dbmclose d_dbmclose
13949 eval $inlibc
13950
13951 case "$d_dbmclose" in
13952 $define)
13953         set dbm.h i_dbm
13954         eval $inhdr
13955         case "$i_dbm" in
13956         $define)
13957                 val="$undef"
13958                 set i_rpcsvcdbm
13959                 eval $setvar
13960                 ;;
13961         *)      set rpcsvc/dbm.h i_rpcsvcdbm
13962                 eval $inhdr
13963                 ;;
13964         esac
13965         ;;
13966 *)      echo "We won't be including <dbm.h>"
13967         val="$undef"
13968         set i_dbm
13969         eval $setvar
13970         val="$undef"
13971         set i_rpcsvcdbm
13972         eval $setvar
13973         ;;
13974 esac
13975
13976 : see if this is a sys/file.h system
13977 val=''
13978 set sys/file.h val
13979 eval $inhdr
13980
13981 : do we need to include sys/file.h ?
13982 case "$val" in
13983 "$define")
13984         echo " "
13985         if $h_sysfile; then
13986                 val="$define"
13987                 echo "We'll be including <sys/file.h>." >&4
13988         else
13989                 val="$undef"
13990                 echo "We won't be including <sys/file.h>." >&4
13991         fi
13992         ;;
13993 *)
13994         h_sysfile=false
13995         ;;
13996 esac
13997 set i_sysfile
13998 eval $setvar
13999
14000 : see if fcntl.h is there
14001 val=''
14002 set fcntl.h val
14003 eval $inhdr
14004
14005 : see if we can include fcntl.h
14006 case "$val" in
14007 "$define")
14008         echo " "
14009         if $h_fcntl; then
14010                 val="$define"
14011                 echo "We'll be including <fcntl.h>." >&4
14012         else
14013                 val="$undef"
14014                 if $h_sysfile; then
14015         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14016                 else
14017                         echo "We won't be including <fcntl.h>." >&4
14018                 fi
14019         fi
14020         ;;
14021 *)
14022         h_fcntl=false
14023         val="$undef"
14024         ;;
14025 esac
14026 set i_fcntl
14027 eval $setvar
14028
14029 : see if this is a iconv.h system
14030 set iconv.h i_iconv
14031 eval $inhdr
14032
14033 : see if this is a ieeefp.h system
14034 set ieeefp.h i_ieeefp
14035 eval $inhdr
14036
14037 : see if locale.h is available
14038 set locale.h i_locale
14039 eval $inhdr
14040
14041 : see if mach cthreads are available
14042 if test "X$usethreads" = "X$define"; then
14043         set mach/cthreads.h i_machcthr
14044         eval $inhdr
14045 else
14046         i_machcthr="$undef"
14047 fi
14048
14049
14050
14051 : see if this is a math.h system
14052 set math.h i_math
14053 eval $inhdr
14054
14055 : see if this is a mntent.h system
14056 set mntent.h i_mntent
14057 eval $inhdr
14058
14059 : see if ndbm.h is available
14060 set ndbm.h t_ndbm
14061 eval $inhdr
14062 case "$t_ndbm" in
14063 $define)
14064         : see if dbm_open exists
14065         set dbm_open d_dbm_open
14066         eval $inlibc
14067         case "$d_dbm_open" in
14068         $undef)
14069                 t_ndbm="$undef"
14070                 echo "We won't be including <ndbm.h>"
14071                 ;;
14072         esac
14073         ;;
14074 esac
14075 val="$t_ndbm"
14076 set i_ndbm
14077 eval $setvar
14078
14079 : see if net/errno.h is available
14080 val=''
14081 set net/errno.h val
14082 eval $inhdr
14083
14084 : Unfortunately, it causes problems on some systems.  Arrgh.
14085 case "$val" in
14086 $define)
14087         cat > try.c <<'EOM'
14088 #include <stdio.h>
14089 #include <errno.h>
14090 #include <net/errno.h>
14091 int func()
14092 {
14093         return ENOTSOCK;
14094 }
14095 EOM
14096         if $cc $ccflags -c try.c >/dev/null 2>&1; then
14097                 echo "We'll be including <net/errno.h>." >&4
14098         else
14099                 echo "We won't be including <net/errno.h>." >&4
14100                 val="$undef"
14101         fi
14102         $rm -f try.* try
14103         ;;
14104 esac
14105 set i_neterrno
14106 eval $setvar
14107
14108 : see if netinet/tcp.h is available
14109 set netinet/tcp.h i_netinettcp
14110 eval $inhdr
14111
14112 : see if this is a poll.h system
14113 set poll.h i_poll
14114 eval $inhdr
14115
14116 echo " "
14117 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
14118 $cat <<'EOSH' > Cppsym.know
14119 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14120 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14121 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14122 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14123 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14124 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14125 bull c cadmus clipper CMU COFF COMPILER_VERSION
14126 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14127 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14128 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14129 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14130 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14131 H3050R H3050RX hbullx20 hcx host_mips
14132 hp200 hp300 hp700 HP700 hp800 hp9000
14133 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14134 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14135 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14136 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14137 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14138 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14139 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14140 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14141 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14142 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14143 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14144 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14145 MATH_HAS_NO_SIDE_EFFECTS
14146 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14147 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14148 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14149 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14150 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14151 NetBSD news1500 news1700 news1800 news1900 news3700
14152 news700 news800 news900 NeXT NLS ns16000 ns32000
14153 ns32016 ns32332 ns32k nsc32000
14154 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14155 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14156 pc532 pdp11 PGC PIC plexus PORTAR posix
14157 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14158 POSIX_C_SOURCE POSIX_SOURCE POWER
14159 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14160 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14161 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14162 sony sony_news sonyrisc sparc sparclite spectrum
14163 stardent stdc STDC_EXT stratos sun sun3 sun386
14164 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14165 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14166 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14167 sysV68 sysV88 Tek4132 Tek4300 titan
14168 tower tower32 tower32_200 tower32_600 tower32_700
14169 tower32_800 tower32_850 tss
14170 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14171 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14172 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14173 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14174 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14175 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14176 z8000
14177 EOSH
14178 # Maybe put other stuff here too.
14179 cat <<EOSH >>Cppsym.know
14180 $osname
14181 EOSH
14182 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14183 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14184 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
14185 $rm -f Cppsym.a Cppsym.b
14186 cat <<EOSH > Cppsym
14187 $startsh
14188 if $test \$# -gt 0; then
14189     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14190     if $test -s Cppsym.got; then
14191         $rm -f Cppsym.got
14192         exit 0
14193     fi
14194     $rm -f Cppsym.got
14195     exit 1
14196 else
14197     $tr " " "$trnl" | ./Cppsym.try
14198     exit 0
14199 fi
14200 EOSH
14201 chmod +x Cppsym
14202 $eunicefix Cppsym
14203 cat <<EOSH > Cppsym.try
14204 $startsh
14205 cat <<'EOCP' > try.c
14206 #include <stdio.h>
14207 int main() {
14208 EOCP
14209 $awk \\
14210 EOSH
14211 cat <<'EOSH' >> Cppsym.try
14212 'length($1) > 0 {
14213     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
14214     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
14215     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
14216     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
14217 }'       >> try.c
14218 echo '}' >> try.c
14219 EOSH
14220 cat <<EOSH >> Cppsym.try
14221 ccflags="$ccflags"
14222 case "$osname-$gccversion" in
14223 irix-) ccflags="\$ccflags -woff 1178" ;;
14224 esac
14225 $cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14226 EOSH
14227 chmod +x Cppsym.try
14228 $eunicefix Cppsym.try
14229 ./Cppsym < Cppsym.know > Cppsym.true
14230 : now check the C compiler for additional symbols
14231 postprocess_cc_v=''
14232 case "$osname" in
14233 aix) postprocess_cc_v="|$tr , ' '" ;;
14234 esac
14235 $cat >ccsym <<EOS
14236 $startsh
14237 $cat >tmp.c <<EOF
14238 extern int foo;
14239 EOF
14240 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14241 do
14242         case "\$i" in
14243         -D*) echo "\$i" | $sed 's/^-D//';;
14244         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14245         esac
14246 done
14247 $rm -f try.c
14248 EOS
14249 postprocess_cc_v=''
14250 chmod +x ccsym
14251 $eunicefix ccsym
14252 ./ccsym > ccsym1.raw
14253 if $test -s ccsym1.raw; then
14254        $sort ccsym1.raw | $uniq >ccsym.raw
14255 else
14256        mv ccsym1.raw ccsym.raw
14257 fi
14258
14259 $awk '/\=/ { print $0; next }
14260         { print $0"=1" }' ccsym.raw >ccsym.list
14261 $awk '/\=/ { print $0; next }
14262         { print $0"=1" }' Cppsym.true >ccsym.true
14263 $comm -13 ccsym.true ccsym.list >ccsym.own
14264 $comm -12 ccsym.true ccsym.list >ccsym.com
14265 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14266 also=''
14267 if $test -z ccsym.raw; then
14268         echo "Your C compiler doesn't seem to define any symbols!" >&4
14269         echo " "
14270         echo "However, your C preprocessor defines the following symbols:"
14271         $cat Cppsym.true
14272         ccsymbols=''
14273         cppsymbols=`$cat Cppsym.true`
14274         cppsymbols=`echo $cppsymbols`
14275         cppccsymbols="$cppsymbols"
14276 else
14277         if $test -s ccsym.com; then
14278                 echo "Your C compiler and pre-processor define these symbols:"
14279                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
14280                 also='also '
14281                 symbols='ones'
14282                 cppccsymbols=`$cat ccsym.com`
14283                 cppccsymbols=`echo $cppccsymbols`
14284                 $test "$silent" || sleep 1
14285         fi
14286         if $test -s ccsym.cpp; then
14287                 $test "$also" && echo " "
14288                 echo "Your C pre-processor ${also}defines the following symbols:"
14289                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
14290                 also='further '
14291                 cppsymbols=`$cat ccsym.cpp`
14292                 cppsymbols=`echo $cppsymbols`
14293                 $test "$silent" || sleep 1
14294         fi
14295         if $test -s ccsym.own; then
14296                 $test "$also" && echo " "
14297                 echo "Your C compiler ${also}defines the following cpp symbols:"
14298                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
14299                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14300                 ccsymbols=`$cat ccsym.own`
14301                 ccsymbols=`echo $ccsymbols`
14302                 $test "$silent" || sleep 1
14303         fi
14304 fi
14305 $rm -f ccsym*
14306
14307 : see if this is a termio system
14308 val="$undef"
14309 val2="$undef"
14310 val3="$undef"
14311 if $test `./findhdr termios.h`; then
14312         set tcsetattr i_termios
14313         eval $inlibc
14314         val3="$i_termios"
14315 fi
14316 echo " "
14317 case "$val3" in
14318 "$define") echo "You have POSIX termios.h... good!" >&4;;
14319 *) if ./Cppsym pyr; then
14320                 case "`/bin/universe`" in
14321                 ucb) if $test `./findhdr sgtty.h`; then
14322                                 val2="$define"
14323                                 echo "<sgtty.h> found." >&4
14324                         else
14325                                 echo "System is pyramid with BSD universe."
14326                                 echo "<sgtty.h> not found--you could have problems." >&4
14327                         fi;;
14328                 *) if $test `./findhdr termio.h`; then
14329                                 val="$define"
14330                                 echo "<termio.h> found." >&4
14331                         else
14332                                 echo "System is pyramid with USG universe."
14333                                 echo "<termio.h> not found--you could have problems." >&4
14334                         fi;;
14335                 esac
14336         elif ./usg; then
14337                 if $test `./findhdr termio.h`; then
14338                         echo "<termio.h> found." >&4
14339                         val="$define"
14340                 elif $test `./findhdr sgtty.h`; then
14341                         echo "<sgtty.h> found." >&4
14342                         val2="$define"
14343                 else
14344 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14345                 fi
14346         else
14347                 if $test `./findhdr sgtty.h`; then
14348                         echo "<sgtty.h> found." >&4
14349                         val2="$define"
14350                 elif $test `./findhdr termio.h`; then
14351                         echo "<termio.h> found." >&4
14352                         val="$define"
14353                 else
14354 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14355                 fi
14356         fi;;
14357 esac
14358 set i_termio; eval $setvar
14359 val=$val2; set i_sgtty; eval $setvar
14360 val=$val3; set i_termios; eval $setvar
14361
14362 : see if this is a shadow.h system
14363 set shadow.h i_shadow
14364 eval $inhdr
14365
14366 : see if this is a socks.h system
14367 set socks.h i_socks
14368 eval $inhdr
14369
14370 : see if stdarg is available
14371 echo " "
14372 if $test `./findhdr stdarg.h`; then
14373         echo "<stdarg.h> found." >&4
14374         valstd="$define"
14375 else
14376         echo "<stdarg.h> NOT found." >&4
14377         valstd="$undef"
14378 fi
14379
14380 : see if varags is available
14381 echo " "
14382 if $test `./findhdr varargs.h`; then
14383         echo "<varargs.h> found." >&4
14384 else
14385         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14386 fi
14387
14388 : set up the varargs testing programs
14389 $cat > varargs.c <<EOP
14390 #ifdef I_STDARG
14391 #include <stdarg.h>
14392 #endif
14393 #ifdef I_VARARGS
14394 #include <varargs.h>
14395 #endif
14396
14397 #ifdef I_STDARG
14398 int f(char *p, ...)
14399 #else
14400 int f(va_alist)
14401 va_dcl
14402 #endif
14403 {
14404         va_list ap;
14405 #ifndef I_STDARG
14406         char *p;
14407 #endif
14408 #ifdef I_STDARG
14409         va_start(ap,p);
14410 #else
14411         va_start(ap);
14412         p = va_arg(ap, char *);
14413 #endif
14414         va_end(ap);
14415 }
14416 EOP
14417 $cat > varargs <<EOP
14418 $startsh
14419 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14420         echo "true"
14421 else
14422         echo "false"
14423 fi
14424 $rm -f varargs$_o
14425 EOP
14426 chmod +x varargs
14427
14428 : now check which varargs header should be included
14429 echo " "
14430 i_varhdr=''
14431 case "$valstd" in
14432 "$define")
14433         if `./varargs I_STDARG`; then
14434                 val='stdarg.h'
14435         elif `./varargs I_VARARGS`; then
14436                 val='varargs.h'
14437         fi
14438         ;;
14439 *)
14440         if `./varargs I_VARARGS`; then
14441                 val='varargs.h'
14442         fi
14443         ;;
14444 esac
14445 case "$val" in
14446 '')
14447 echo "I could not find the definition for va_dcl... You have problems..." >&4
14448         val="$undef"; set i_stdarg; eval $setvar
14449         val="$undef"; set i_varargs; eval $setvar
14450         ;;
14451 *) 
14452         set i_varhdr
14453         eval $setvar
14454         case "$i_varhdr" in
14455         stdarg.h)
14456                 val="$define"; set i_stdarg; eval $setvar
14457                 val="$undef"; set i_varargs; eval $setvar
14458                 ;;
14459         varargs.h)
14460                 val="$undef"; set i_stdarg; eval $setvar
14461                 val="$define"; set i_varargs; eval $setvar
14462                 ;;
14463         esac
14464         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14465 esac
14466 $rm -f varargs*
14467
14468 : see if stddef is available
14469 set stddef.h i_stddef
14470 eval $inhdr
14471
14472 : see if this is a sunmath.h system
14473 set sunmath.h i_sunmath
14474 eval $inhdr
14475
14476 : see if sys/access.h is available
14477 set sys/access.h i_sysaccess
14478 eval $inhdr
14479
14480 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14481 set sys/filio.h i_sysfilio
14482 eval $inhdr
14483 echo " "
14484 if $test `./findhdr sys/ioctl.h`; then
14485         val="$define"
14486         echo '<sys/ioctl.h> found.' >&4
14487 else
14488         val="$undef"
14489         if $test $i_sysfilio = "$define"; then
14490             echo '<sys/ioctl.h> NOT found.' >&4
14491         else
14492                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14493                 $test $i_termio = "$define" && xxx="termio.h"
14494                 $test $i_termios = "$define" && xxx="termios.h"
14495 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14496         fi
14497 fi
14498 set i_sysioctl
14499 eval $setvar
14500
14501
14502 : see if this is a syslog.h system
14503 set syslog.h i_syslog
14504 eval $inhdr
14505
14506
14507 : see if this is a sys/mode.h system
14508 set sys/mode.h i_sysmode
14509 eval $inhdr
14510
14511 : see if sys/resource.h has to be included
14512 set sys/resource.h i_sysresrc
14513 eval $inhdr
14514
14515 : see if sys/security.h is available
14516 set sys/security.h i_syssecrt
14517 eval $inhdr
14518
14519 : see if this is a sys/statvfs.h system
14520 set sys/statvfs.h i_sysstatvfs
14521 eval $inhdr
14522
14523 : see if this is a sys/uio.h system
14524 set sys/uio.h i_sysuio
14525 eval $inhdr
14526
14527 : see if this is a sys/un.h system
14528 set sys/un.h i_sysun
14529 eval $inhdr
14530
14531
14532 : see if this is a sys/utsname.h system
14533 set sys/utsname.h i_sysutsname
14534 eval $inhdr
14535
14536 : see if this is a syswait system
14537 set sys/wait.h i_syswait
14538 eval $inhdr
14539
14540 : see if this is a ustat.h system
14541 set ustat.h i_ustat
14542 eval $inhdr
14543
14544 : see if this is an utime system
14545 set utime.h i_utime
14546 eval $inhdr
14547
14548 : see if this is a values.h system
14549 set values.h i_values
14550 eval $inhdr
14551
14552 : see if this is a vfork system
14553 case "$d_vfork" in
14554 "$define")
14555         set vfork.h i_vfork
14556         eval $inhdr
14557         ;;
14558 *)
14559         i_vfork="$undef"
14560         ;;
14561 esac
14562
14563 : see if gdbm.h is available
14564 set gdbm.h t_gdbm
14565 eval $inhdr
14566 case "$t_gdbm" in
14567 $define)
14568         : see if gdbm_open exists
14569         set gdbm_open d_gdbm_open
14570         eval $inlibc
14571         case "$d_gdbm_open" in
14572         $undef)
14573                 t_gdbm="$undef"
14574                 echo "We won't be including <gdbm.h>"
14575                 ;;
14576         esac
14577         ;;
14578 esac
14579 val="$t_gdbm"
14580 set i_gdbm
14581 eval $setvar
14582
14583 echo " "
14584 echo "Looking for extensions..." >&4
14585 : If we are using the old config.sh, known_extensions may contain
14586 : old or inaccurate or duplicate values.
14587 known_extensions=''
14588 nonxs_extensions=''
14589 : We do not use find because it might not be available.
14590 : We do not just use MANIFEST because the user may have dropped
14591 : some additional extensions into the source tree and expect them
14592 : to be built.
14593
14594 : Function to recursively find available extensions, ignoring DynaLoader
14595 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14596 find_extensions='
14597     for xxx in *; do
14598        case "$xxx" in
14599            DynaLoader|dynaload) ;;
14600            *)
14601            if $test -f $xxx/$xxx.xs; then
14602                known_extensions="$known_extensions $1$xxx";
14603            elif $test -f $xxx/Makefile.PL; then
14604                nonxs_extensions="$nonxs_extensions $1$xxx";
14605            else
14606                if $test -d $xxx -a $# -lt 10; then
14607                    set $1$xxx/ $*;
14608                    cd $xxx;
14609                    eval $find_extensions;
14610                    cd ..;
14611                    shift;
14612                fi;
14613            fi
14614            ;;
14615        esac;
14616     done'
14617 tdir=`pwd`
14618 cd $rsrc/ext
14619 set X
14620 shift
14621 eval $find_extensions
14622 set X $nonxs_extensions
14623 shift
14624 nonxs_extensions="$*"
14625 set X $known_extensions
14626 shift
14627 known_extensions="$*"
14628 cd $tdir
14629
14630 : Now see which are supported on this system.
14631 avail_ext=''
14632 for xxx in $known_extensions ; do
14633         case "$xxx" in
14634         DB_File|db_file)
14635                 case "$i_db" in
14636                 $define) avail_ext="$avail_ext $xxx" ;;
14637                 esac
14638                 ;;
14639         GDBM_File|gdbm_fil)
14640                 case "$i_gdbm" in 
14641                 $define) avail_ext="$avail_ext $xxx" ;;
14642                 esac
14643                 ;;
14644         NDBM_File|ndbm_fil)
14645                 case "$i_ndbm" in
14646                 $define)
14647                     case "$osname-$use64bitint" in
14648                     hpux-define)
14649                         case "$libs" in
14650                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14651                         esac
14652                         ;;
14653                     *) avail_ext="$avail_ext $xxx" ;;
14654                     esac
14655                     ;;
14656                 esac
14657                 ;;
14658         ODBM_File|odbm_fil) 
14659                 case "${i_dbm}${i_rpcsvcdbm}" in
14660                 *"${define}"*)
14661                     case "$osname-$use64bitint" in
14662                     hpux-define)
14663                         case "$libs" in
14664                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14665                         esac
14666                         ;;
14667                     *) avail_ext="$avail_ext $xxx" ;;
14668                     esac
14669                     ;;
14670                 esac
14671                 ;;
14672         POSIX|posix)
14673                 case "$useposix" in
14674                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14675                 esac
14676                 ;;
14677         Opcode|opcode)
14678                 case "$useopcode" in
14679                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14680                 esac
14681                 ;;
14682         Socket|socket)
14683                 case "$d_socket" in 
14684                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14685                 esac
14686                 ;;
14687         Thread|thread)
14688                 case "$usethreads" in 
14689                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14690                 esac
14691                 ;;
14692         IPC/SysV|ipc/sysv)
14693                 : XXX Do we need a useipcsysv variable here
14694                 case "${d_msg}${d_sem}${d_shm}" in 
14695                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14696                 esac
14697                 ;;
14698         *)      avail_ext="$avail_ext $xxx"
14699                 ;;
14700         esac
14701 done
14702
14703 set X $avail_ext
14704 shift
14705 avail_ext="$*"
14706
14707 : Now see which nonxs extensions are supported on this system.
14708 : For now assume all are.
14709 nonxs_ext=''
14710 for xxx in $nonxs_extensions ; do
14711         case "$xxx" in
14712         *)      nonxs_ext="$nonxs_ext $xxx"
14713                 ;;
14714         esac
14715 done
14716
14717 set X $nonxs_ext
14718 shift
14719 nonxs_ext="$*"
14720
14721 case $usedl in
14722 $define)
14723         $cat <<EOM
14724 A number of extensions are supplied with $package.  You may choose to
14725 compile these extensions for dynamic loading (the default), compile
14726 them into the $package executable (static loading), or not include
14727 them at all.  Answer "none" to include no extensions.
14728 Note that DynaLoader is always built and need not be mentioned here.
14729
14730 EOM
14731         case "$dynamic_ext" in
14732         '') dflt="$avail_ext" ;;
14733         *)      dflt="$dynamic_ext"
14734                 # Perhaps we are reusing an old out-of-date config.sh.
14735                 case "$hint" in
14736                 previous)
14737                         if test X"$dynamic_ext" != X"$avail_ext"; then
14738                                 $cat <<EOM
14739 NOTICE:  Your previous config.sh list may be incorrect. 
14740 The extensions now available to you are 
14741         ${avail_ext}
14742 but the default list from your previous config.sh is
14743         ${dynamic_ext} 
14744
14745 EOM
14746                         fi
14747                         ;;
14748                 esac
14749                 ;;
14750         esac
14751         case "$dflt" in
14752         '')     dflt=none;;
14753         esac
14754         rp="What extensions do you wish to load dynamically?"
14755         . ./myread
14756         case "$ans" in
14757         none) dynamic_ext=' ' ;;
14758         *) dynamic_ext="$ans" ;;
14759         esac
14760
14761         case "$static_ext" in
14762         '')
14763                 : Exclude those already listed in dynamic linking
14764                 dflt=''
14765                 for xxx in $avail_ext; do
14766                         case " $dynamic_ext " in
14767                         *" $xxx "*) ;;
14768                         *) dflt="$dflt $xxx" ;;
14769                         esac
14770                 done
14771                 set X $dflt
14772                 shift
14773                 dflt="$*"
14774                 ;;
14775         *)  dflt="$static_ext" 
14776                 ;;
14777         esac
14778
14779         case "$dflt" in
14780         '')     dflt=none;;
14781         esac
14782         rp="What extensions do you wish to load statically?"
14783         . ./myread
14784         case "$ans" in
14785         none) static_ext=' ' ;;
14786         *) static_ext="$ans" ;;
14787         esac
14788         ;;
14789 *)
14790         $cat <<EOM
14791 A number of extensions are supplied with $package.  Answer "none" 
14792 to include no extensions. 
14793 Note that DynaLoader is always built and need not be mentioned here.
14794
14795 EOM
14796         case "$static_ext" in
14797         '') dflt="$avail_ext" ;;
14798         *)      dflt="$static_ext"
14799                 # Perhaps we are reusing an old out-of-date config.sh.
14800                 case "$hint" in
14801                 previous)
14802                         if test X"$static_ext" != X"$avail_ext"; then
14803                                 $cat <<EOM
14804 NOTICE:  Your previous config.sh list may be incorrect. 
14805 The extensions now available to you are 
14806         ${avail_ext}
14807 but the default list from your previous config.sh is
14808         ${static_ext} 
14809
14810 EOM
14811                         fi
14812                         ;;
14813                 esac
14814                 ;;
14815         esac
14816         : Exclude those that are not xs extensions
14817         case "$dflt" in
14818         '')     dflt=none;;
14819         esac
14820         rp="What extensions do you wish to include?"
14821         . ./myread
14822         case "$ans" in
14823         none) static_ext=' ' ;;
14824         *) static_ext="$ans" ;;
14825         esac
14826         ;;
14827 esac
14828
14829 set X $dynamic_ext $static_ext $nonxs_ext
14830 shift
14831 extensions="$*"
14832
14833 : Remove build directory name from cppstdin so it can be used from
14834 : either the present location or the final installed location.
14835 echo " "
14836 : Get out of the UU directory to get correct path name.
14837 cd ..
14838 case "$cppstdin" in
14839 `pwd`/cppstdin)
14840         echo "Stripping down cppstdin path name"
14841         cppstdin=cppstdin
14842         ;;
14843 esac
14844 cd UU
14845
14846 : end of configuration questions
14847 echo " "
14848 echo "End of configuration questions."
14849 echo " "
14850
14851 : back to where it started
14852 if test -d ../UU; then
14853         cd ..
14854 fi
14855
14856 : configuration may be patched via a 'config.over' file
14857 if $test -f config.over; then
14858         echo " "
14859         dflt=y
14860         rp='I see a config.over file.  Do you wish to load it?'
14861         . UU/myread
14862         case "$ans" in
14863         n*) echo "OK, I'll ignore it.";;
14864         *)      . ./config.over
14865                 echo "Configuration override changes have been loaded."
14866                 ;;
14867         esac
14868 fi
14869
14870 : in case they want portability, strip down executable paths
14871 case "$d_portable" in
14872 "$define")
14873         echo " "
14874         echo "Stripping down executable paths..." >&4
14875         for file in $loclist $trylist; do
14876                 eval temp=\$$file
14877                 eval $file=`basename $temp`
14878         done
14879         ;;
14880 esac
14881
14882 : create config.sh file
14883 echo " "
14884 echo "Creating config.sh..." >&4
14885 $spitshell <<EOT >config.sh
14886 $startsh
14887 #
14888 # This file was produced by running the Configure script. It holds all the
14889 # definitions figured out by Configure. Should you modify one of these values,
14890 # do not forget to propagate your changes by running "Configure -der". You may
14891 # instead choose to run each of the .SH files by yourself, or "Configure -S".
14892 #
14893
14894 # Package name      : $package
14895 # Source directory  : $src
14896 # Configuration time: $cf_time
14897 # Configured by     : $cf_by
14898 # Target system     : $myuname
14899
14900 Author='$Author'
14901 Date='$Date'
14902 Header='$Header'
14903 Id='$Id'
14904 Locker='$Locker'
14905 Log='$Log'
14906 Mcc='$Mcc'
14907 RCSfile='$RCSfile'
14908 Revision='$Revision'
14909 Source='$Source'
14910 State='$State'
14911 _a='$_a'
14912 _exe='$_exe'
14913 _o='$_o'
14914 afs='$afs'
14915 alignbytes='$alignbytes'
14916 ansi2knr='$ansi2knr'
14917 aphostname='$aphostname'
14918 api_revision='$api_revision'
14919 api_subversion='$api_subversion'
14920 api_version='$api_version'
14921 api_versionstring='$api_versionstring'
14922 ar='$ar'
14923 archlib='$archlib'
14924 archlibexp='$archlibexp'
14925 archname64='$archname64'
14926 archname='$archname'
14927 archobjs='$archobjs'
14928 awk='$awk'
14929 baserev='$baserev'
14930 bash='$bash'
14931 bin='$bin'
14932 bincompat5005='$bincompat5005'
14933 binexp='$binexp'
14934 bison='$bison'
14935 byacc='$byacc'
14936 byteorder='$byteorder'
14937 c='$c'
14938 castflags='$castflags'
14939 cat='$cat'
14940 cc='$cc'
14941 cccdlflags='$cccdlflags'
14942 ccdlflags='$ccdlflags'
14943 ccflags='$ccflags'
14944 ccsymbols='$ccsymbols'
14945 cf_by='$cf_by'
14946 cf_email='$cf_email'
14947 cf_time='$cf_time'
14948 charsize='$charsize'
14949 chgrp='$chgrp'
14950 chmod='$chmod'
14951 chown='$chown'
14952 clocktype='$clocktype'
14953 comm='$comm'
14954 compress='$compress'
14955 contains='$contains'
14956 cp='$cp'
14957 cpio='$cpio'
14958 cpp='$cpp'
14959 cpp_stuff='$cpp_stuff'
14960 cppccsymbols='$cppccsymbols'
14961 cppflags='$cppflags'
14962 cpplast='$cpplast'
14963 cppminus='$cppminus'
14964 cpprun='$cpprun'
14965 cppstdin='$cppstdin'
14966 cppsymbols='$cppsymbols'
14967 crosscompile='$crosscompile'
14968 cryptlib='$cryptlib'
14969 csh='$csh'
14970 d_Gconvert='$d_Gconvert'
14971 d_PRIEldbl='$d_PRIEldbl'
14972 d_PRIFldbl='$d_PRIFldbl'
14973 d_PRIGldbl='$d_PRIGldbl'
14974 d_PRIX64='$d_PRIX64'
14975 d_PRId64='$d_PRId64'
14976 d_PRIeldbl='$d_PRIeldbl'
14977 d_PRIfldbl='$d_PRIfldbl'
14978 d_PRIgldbl='$d_PRIgldbl'
14979 d_PRIi64='$d_PRIi64'
14980 d_PRIo64='$d_PRIo64'
14981 d_PRIu64='$d_PRIu64'
14982 d_PRIx64='$d_PRIx64'
14983 d_access='$d_access'
14984 d_accessx='$d_accessx'
14985 d_alarm='$d_alarm'
14986 d_archlib='$d_archlib'
14987 d_atolf='$d_atolf'
14988 d_atoll='$d_atoll'
14989 d_attribut='$d_attribut'
14990 d_bcmp='$d_bcmp'
14991 d_bcopy='$d_bcopy'
14992 d_bincompat5005='$d_bincompat5005'
14993 d_bsd='$d_bsd'
14994 d_bsdgetpgrp='$d_bsdgetpgrp'
14995 d_bsdsetpgrp='$d_bsdsetpgrp'
14996 d_bzero='$d_bzero'
14997 d_casti32='$d_casti32'
14998 d_castneg='$d_castneg'
14999 d_charvspr='$d_charvspr'
15000 d_chown='$d_chown'
15001 d_chroot='$d_chroot'
15002 d_chsize='$d_chsize'
15003 d_closedir='$d_closedir'
15004 d_const='$d_const'
15005 d_crypt='$d_crypt'
15006 d_csh='$d_csh'
15007 d_cuserid='$d_cuserid'
15008 d_dbl_dig='$d_dbl_dig'
15009 d_difftime='$d_difftime'
15010 d_dirnamlen='$d_dirnamlen'
15011 d_dlerror='$d_dlerror'
15012 d_dlopen='$d_dlopen'
15013 d_dlsymun='$d_dlsymun'
15014 d_dosuid='$d_dosuid'
15015 d_drand48proto='$d_drand48proto'
15016 d_dup2='$d_dup2'
15017 d_eaccess='$d_eaccess'
15018 d_endgrent='$d_endgrent'
15019 d_endhent='$d_endhent'
15020 d_endnent='$d_endnent'
15021 d_endpent='$d_endpent'
15022 d_endpwent='$d_endpwent'
15023 d_endsent='$d_endsent'
15024 d_endspent='$d_endspent'
15025 d_eofnblk='$d_eofnblk'
15026 d_eunice='$d_eunice'
15027 d_fchmod='$d_fchmod'
15028 d_fchown='$d_fchown'
15029 d_fcntl='$d_fcntl'
15030 d_fd_macros='$d_fd_macros'
15031 d_fd_set='$d_fd_set'
15032 d_fds_bits='$d_fds_bits'
15033 d_fgetpos='$d_fgetpos'
15034 d_flexfnam='$d_flexfnam'
15035 d_flock='$d_flock'
15036 d_fork='$d_fork'
15037 d_fpathconf='$d_fpathconf'
15038 d_fpos64_t='$d_fpos64_t'
15039 d_fs_data_s='$d_fs_data_s'
15040 d_fseeko='$d_fseeko'
15041 d_fsetpos='$d_fsetpos'
15042 d_fstatfs='$d_fstatfs'
15043 d_fstatvfs='$d_fstatvfs'
15044 d_ftello='$d_ftello'
15045 d_ftime='$d_ftime'
15046 d_getcwd='$d_getcwd'
15047 d_getfsstat='$d_getfsstat'
15048 d_getgrent='$d_getgrent'
15049 d_getgrps='$d_getgrps'
15050 d_gethbyaddr='$d_gethbyaddr'
15051 d_gethbyname='$d_gethbyname'
15052 d_gethent='$d_gethent'
15053 d_gethname='$d_gethname'
15054 d_gethostprotos='$d_gethostprotos'
15055 d_getlogin='$d_getlogin'
15056 d_getmnt='$d_getmnt'
15057 d_getmntent='$d_getmntent'
15058 d_getnbyaddr='$d_getnbyaddr'
15059 d_getnbyname='$d_getnbyname'
15060 d_getnent='$d_getnent'
15061 d_getnetprotos='$d_getnetprotos'
15062 d_getpbyname='$d_getpbyname'
15063 d_getpbynumber='$d_getpbynumber'
15064 d_getpent='$d_getpent'
15065 d_getpgid='$d_getpgid'
15066 d_getpgrp2='$d_getpgrp2'
15067 d_getpgrp='$d_getpgrp'
15068 d_getppid='$d_getppid'
15069 d_getprior='$d_getprior'
15070 d_getprotoprotos='$d_getprotoprotos'
15071 d_getpwent='$d_getpwent'
15072 d_getsbyname='$d_getsbyname'
15073 d_getsbyport='$d_getsbyport'
15074 d_getsent='$d_getsent'
15075 d_getservprotos='$d_getservprotos'
15076 d_getspent='$d_getspent'
15077 d_getspnam='$d_getspnam'
15078 d_gettimeod='$d_gettimeod'
15079 d_gnulibc='$d_gnulibc'
15080 d_grpasswd='$d_grpasswd'
15081 d_hasmntopt='$d_hasmntopt'
15082 d_htonl='$d_htonl'
15083 d_iconv='$d_iconv'
15084 d_index='$d_index'
15085 d_inetaton='$d_inetaton'
15086 d_int64_t='$d_int64_t'
15087 d_isascii='$d_isascii'
15088 d_killpg='$d_killpg'
15089 d_lchown='$d_lchown'
15090 d_ldbl_dig='$d_ldbl_dig'
15091 d_link='$d_link'
15092 d_locconv='$d_locconv'
15093 d_lockf='$d_lockf'
15094 d_longdbl='$d_longdbl'
15095 d_longlong='$d_longlong'
15096 d_lseekproto='$d_lseekproto'
15097 d_lstat='$d_lstat'
15098 d_madvise='$d_madvise'
15099 d_mblen='$d_mblen'
15100 d_mbstowcs='$d_mbstowcs'
15101 d_mbtowc='$d_mbtowc'
15102 d_memchr='$d_memchr'
15103 d_memcmp='$d_memcmp'
15104 d_memcpy='$d_memcpy'
15105 d_memmove='$d_memmove'
15106 d_memset='$d_memset'
15107 d_mkdir='$d_mkdir'
15108 d_mkdtemp='$d_mkdtemp'
15109 d_mkfifo='$d_mkfifo'
15110 d_mkstemp='$d_mkstemp'
15111 d_mkstemps='$d_mkstemps'
15112 d_mktime='$d_mktime'
15113 d_mmap='$d_mmap'
15114 d_mprotect='$d_mprotect'
15115 d_msg='$d_msg'
15116 d_msg_ctrunc='$d_msg_ctrunc'
15117 d_msg_dontroute='$d_msg_dontroute'
15118 d_msg_oob='$d_msg_oob'
15119 d_msg_peek='$d_msg_peek'
15120 d_msg_proxy='$d_msg_proxy'
15121 d_msgctl='$d_msgctl'
15122 d_msgget='$d_msgget'
15123 d_msgrcv='$d_msgrcv'
15124 d_msgsnd='$d_msgsnd'
15125 d_msync='$d_msync'
15126 d_munmap='$d_munmap'
15127 d_mymalloc='$d_mymalloc'
15128 d_nice='$d_nice'
15129 d_nv_preserves_uv='$d_nv_preserves_uv'
15130 d_off64_t='$d_off64_t'
15131 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15132 d_oldpthreads='$d_oldpthreads'
15133 d_oldsock='$d_oldsock'
15134 d_open3='$d_open3'
15135 d_pathconf='$d_pathconf'
15136 d_pause='$d_pause'
15137 d_phostname='$d_phostname'
15138 d_pipe='$d_pipe'
15139 d_poll='$d_poll'
15140 d_portable='$d_portable'
15141 d_pthread_yield='$d_pthread_yield'
15142 d_pwage='$d_pwage'
15143 d_pwchange='$d_pwchange'
15144 d_pwclass='$d_pwclass'
15145 d_pwcomment='$d_pwcomment'
15146 d_pwexpire='$d_pwexpire'
15147 d_pwgecos='$d_pwgecos'
15148 d_pwpasswd='$d_pwpasswd'
15149 d_pwquota='$d_pwquota'
15150 d_qgcvt='$d_qgcvt'
15151 d_quad='$d_quad'
15152 d_readdir='$d_readdir'
15153 d_readlink='$d_readlink'
15154 d_rename='$d_rename'
15155 d_rewinddir='$d_rewinddir'
15156 d_rmdir='$d_rmdir'
15157 d_safebcpy='$d_safebcpy'
15158 d_safemcpy='$d_safemcpy'
15159 d_sanemcmp='$d_sanemcmp'
15160 d_sched_yield='$d_sched_yield'
15161 d_scm_rights='$d_scm_rights'
15162 d_seekdir='$d_seekdir'
15163 d_select='$d_select'
15164 d_sem='$d_sem'
15165 d_semctl='$d_semctl'
15166 d_semctl_semid_ds='$d_semctl_semid_ds'
15167 d_semctl_semun='$d_semctl_semun'
15168 d_semget='$d_semget'
15169 d_semop='$d_semop'
15170 d_setegid='$d_setegid'
15171 d_seteuid='$d_seteuid'
15172 d_setgrent='$d_setgrent'
15173 d_setgrps='$d_setgrps'
15174 d_sethent='$d_sethent'
15175 d_setlinebuf='$d_setlinebuf'
15176 d_setlocale='$d_setlocale'
15177 d_setnent='$d_setnent'
15178 d_setpent='$d_setpent'
15179 d_setpgid='$d_setpgid'
15180 d_setpgrp2='$d_setpgrp2'
15181 d_setpgrp='$d_setpgrp'
15182 d_setprior='$d_setprior'
15183 d_setpwent='$d_setpwent'
15184 d_setregid='$d_setregid'
15185 d_setresgid='$d_setresgid'
15186 d_setresuid='$d_setresuid'
15187 d_setreuid='$d_setreuid'
15188 d_setrgid='$d_setrgid'
15189 d_setruid='$d_setruid'
15190 d_setsent='$d_setsent'
15191 d_setsid='$d_setsid'
15192 d_setspent='$d_setspent'
15193 d_setvbuf='$d_setvbuf'
15194 d_sfio='$d_sfio'
15195 d_shm='$d_shm'
15196 d_shmat='$d_shmat'
15197 d_shmatprototype='$d_shmatprototype'
15198 d_shmctl='$d_shmctl'
15199 d_shmdt='$d_shmdt'
15200 d_shmget='$d_shmget'
15201 d_sigaction='$d_sigaction'
15202 d_sigsetjmp='$d_sigsetjmp'
15203 d_socket='$d_socket'
15204 d_socklen_t='$d_socklen_t'
15205 d_sockpair='$d_sockpair'
15206 d_sqrtl='$d_sqrtl'
15207 d_statblks='$d_statblks'
15208 d_statfs_f_flags='$d_statfs_f_flags'
15209 d_statfs_s='$d_statfs_s'
15210 d_statvfs='$d_statvfs'
15211 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15212 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15213 d_stdio_stream_array='$d_stdio_stream_array'
15214 d_stdiobase='$d_stdiobase'
15215 d_stdstdio='$d_stdstdio'
15216 d_strchr='$d_strchr'
15217 d_strcoll='$d_strcoll'
15218 d_strctcpy='$d_strctcpy'
15219 d_strerrm='$d_strerrm'
15220 d_strerror='$d_strerror'
15221 d_strtod='$d_strtod'
15222 d_strtol='$d_strtol'
15223 d_strtold='$d_strtold'
15224 d_strtoll='$d_strtoll'
15225 d_strtoul='$d_strtoul'
15226 d_strtoull='$d_strtoull'
15227 d_strtouq='$d_strtouq'
15228 d_strxfrm='$d_strxfrm'
15229 d_suidsafe='$d_suidsafe'
15230 d_symlink='$d_symlink'
15231 d_syscall='$d_syscall'
15232 d_sysconf='$d_sysconf'
15233 d_sysernlst='$d_sysernlst'
15234 d_syserrlst='$d_syserrlst'
15235 d_system='$d_system'
15236 d_tcgetpgrp='$d_tcgetpgrp'
15237 d_tcsetpgrp='$d_tcsetpgrp'
15238 d_telldir='$d_telldir'
15239 d_telldirproto='$d_telldirproto'
15240 d_time='$d_time'
15241 d_times='$d_times'
15242 d_truncate='$d_truncate'
15243 d_tzname='$d_tzname'
15244 d_umask='$d_umask'
15245 d_uname='$d_uname'
15246 d_union_semun='$d_union_semun'
15247 d_ustat='$d_ustat'
15248 d_vendorbin='$d_vendorbin'
15249 d_vendorlib='$d_vendorlib'
15250 d_vfork='$d_vfork'
15251 d_void_closedir='$d_void_closedir'
15252 d_voidsig='$d_voidsig'
15253 d_voidtty='$d_voidtty'
15254 d_volatile='$d_volatile'
15255 d_vprintf='$d_vprintf'
15256 d_wait4='$d_wait4'
15257 d_waitpid='$d_waitpid'
15258 d_wcstombs='$d_wcstombs'
15259 d_wctomb='$d_wctomb'
15260 d_xenix='$d_xenix'
15261 date='$date'
15262 db_hashtype='$db_hashtype'
15263 db_prefixtype='$db_prefixtype'
15264 defvoidused='$defvoidused'
15265 direntrytype='$direntrytype'
15266 dlext='$dlext'
15267 dlsrc='$dlsrc'
15268 doublesize='$doublesize'
15269 drand01='$drand01'
15270 dynamic_ext='$dynamic_ext'
15271 eagain='$eagain'
15272 ebcdic='$ebcdic'
15273 echo='$echo'
15274 egrep='$egrep'
15275 emacs='$emacs'
15276 eunicefix='$eunicefix'
15277 exe_ext='$exe_ext'
15278 expr='$expr'
15279 extensions='$extensions'
15280 fflushNULL='$fflushNULL'
15281 fflushall='$fflushall'
15282 find='$find'
15283 firstmakefile='$firstmakefile'
15284 flex='$flex'
15285 fpossize='$fpossize'
15286 fpostype='$fpostype'
15287 freetype='$freetype'
15288 full_ar='$full_ar'
15289 full_csh='$full_csh'
15290 full_sed='$full_sed'
15291 gccversion='$gccversion'
15292 gidformat='$gidformat'
15293 gidsign='$gidsign'
15294 gidsize='$gidsize'
15295 gidtype='$gidtype'
15296 glibpth='$glibpth'
15297 grep='$grep'
15298 groupcat='$groupcat'
15299 groupstype='$groupstype'
15300 gzip='$gzip'
15301 h_fcntl='$h_fcntl'
15302 h_sysfile='$h_sysfile'
15303 hint='$hint'
15304 hostcat='$hostcat'
15305 huge='$huge'
15306 i16size='$i16size'
15307 i16type='$i16type'
15308 i32size='$i32size'
15309 i32type='$i32type'
15310 i64size='$i64size'
15311 i64type='$i64type'
15312 i8size='$i8size'
15313 i8type='$i8type'
15314 i_arpainet='$i_arpainet'
15315 i_bsdioctl='$i_bsdioctl'
15316 i_db='$i_db'
15317 i_dbm='$i_dbm'
15318 i_dirent='$i_dirent'
15319 i_dld='$i_dld'
15320 i_dlfcn='$i_dlfcn'
15321 i_fcntl='$i_fcntl'
15322 i_float='$i_float'
15323 i_gdbm='$i_gdbm'
15324 i_grp='$i_grp'
15325 i_iconv='$i_iconv'
15326 i_ieeefp='$i_ieeefp'
15327 i_inttypes='$i_inttypes'
15328 i_limits='$i_limits'
15329 i_locale='$i_locale'
15330 i_machcthr='$i_machcthr'
15331 i_malloc='$i_malloc'
15332 i_math='$i_math'
15333 i_memory='$i_memory'
15334 i_mntent='$i_mntent'
15335 i_ndbm='$i_ndbm'
15336 i_netdb='$i_netdb'
15337 i_neterrno='$i_neterrno'
15338 i_netinettcp='$i_netinettcp'
15339 i_niin='$i_niin'
15340 i_poll='$i_poll'
15341 i_pthread='$i_pthread'
15342 i_pwd='$i_pwd'
15343 i_rpcsvcdbm='$i_rpcsvcdbm'
15344 i_sfio='$i_sfio'
15345 i_sgtty='$i_sgtty'
15346 i_shadow='$i_shadow'
15347 i_socks='$i_socks'
15348 i_stdarg='$i_stdarg'
15349 i_stddef='$i_stddef'
15350 i_stdlib='$i_stdlib'
15351 i_string='$i_string'
15352 i_sunmath='$i_sunmath'
15353 i_sysaccess='$i_sysaccess'
15354 i_sysdir='$i_sysdir'
15355 i_sysfile='$i_sysfile'
15356 i_sysfilio='$i_sysfilio'
15357 i_sysin='$i_sysin'
15358 i_sysioctl='$i_sysioctl'
15359 i_syslog='$i_syslog'
15360 i_sysmman='$i_sysmman'
15361 i_sysmode='$i_sysmode'
15362 i_sysmount='$i_sysmount'
15363 i_sysndir='$i_sysndir'
15364 i_sysparam='$i_sysparam'
15365 i_sysresrc='$i_sysresrc'
15366 i_syssecrt='$i_syssecrt'
15367 i_sysselct='$i_sysselct'
15368 i_syssockio='$i_syssockio'
15369 i_sysstat='$i_sysstat'
15370 i_sysstatfs='$i_sysstatfs'
15371 i_sysstatvfs='$i_sysstatvfs'
15372 i_systime='$i_systime'
15373 i_systimek='$i_systimek'
15374 i_systimes='$i_systimes'
15375 i_systypes='$i_systypes'
15376 i_sysuio='$i_sysuio'
15377 i_sysun='$i_sysun'
15378 i_sysutsname='$i_sysutsname'
15379 i_sysvfs='$i_sysvfs'
15380 i_syswait='$i_syswait'
15381 i_termio='$i_termio'
15382 i_termios='$i_termios'
15383 i_time='$i_time'
15384 i_unistd='$i_unistd'
15385 i_ustat='$i_ustat'
15386 i_utime='$i_utime'
15387 i_values='$i_values'
15388 i_varargs='$i_varargs'
15389 i_varhdr='$i_varhdr'
15390 i_vfork='$i_vfork'
15391 ignore_versioned_solibs='$ignore_versioned_solibs'
15392 inc_version_list='$inc_version_list'
15393 inc_version_list_init='$inc_version_list_init'
15394 incpath='$incpath'
15395 inews='$inews'
15396 installarchlib='$installarchlib'
15397 installbin='$installbin'
15398 installman1dir='$installman1dir'
15399 installman3dir='$installman3dir'
15400 installprefix='$installprefix'
15401 installprefixexp='$installprefixexp'
15402 installprivlib='$installprivlib'
15403 installscript='$installscript'
15404 installsitearch='$installsitearch'
15405 installsitebin='$installsitebin'
15406 installsitelib='$installsitelib'
15407 installstyle='$installstyle'
15408 installusrbinperl='$installusrbinperl'
15409 installvendorbin='$installvendorbin'
15410 installvendorlib='$installvendorlib'
15411 intsize='$intsize'
15412 ivdformat='$ivdformat'
15413 ivsize='$ivsize'
15414 ivtype='$ivtype'
15415 known_extensions='$known_extensions'
15416 ksh='$ksh'
15417 large='$large'
15418 ld='$ld'
15419 lddlflags='$lddlflags'
15420 ldflags='$ldflags'
15421 ldlibpthname='$ldlibpthname'
15422 less='$less'
15423 lib_ext='$lib_ext'
15424 libc='$libc'
15425 libperl='$libperl'
15426 libpth='$libpth'
15427 libs='$libs'
15428 libsdirs='$libsdirs'
15429 libsfiles='$libsfiles'
15430 libsfound='$libsfound'
15431 libspath='$libspath'
15432 libswanted='$libswanted'
15433 line='$line'
15434 lint='$lint'
15435 lkflags='$lkflags'
15436 ln='$ln'
15437 lns='$lns'
15438 locincpth='$locincpth'
15439 loclibpth='$loclibpth'
15440 longdblsize='$longdblsize'
15441 longlongsize='$longlongsize'
15442 longsize='$longsize'
15443 lp='$lp'
15444 lpr='$lpr'
15445 ls='$ls'
15446 lseeksize='$lseeksize'
15447 lseektype='$lseektype'
15448 mail='$mail'
15449 mailx='$mailx'
15450 make='$make'
15451 make_set_make='$make_set_make'
15452 mallocobj='$mallocobj'
15453 mallocsrc='$mallocsrc'
15454 malloctype='$malloctype'
15455 man1dir='$man1dir'
15456 man1direxp='$man1direxp'
15457 man1ext='$man1ext'
15458 man3dir='$man3dir'
15459 man3direxp='$man3direxp'
15460 man3ext='$man3ext'
15461 medium='$medium'
15462 mips_type='$mips_type'
15463 mkdir='$mkdir'
15464 mmaptype='$mmaptype'
15465 models='$models'
15466 modetype='$modetype'
15467 more='$more'
15468 multiarch='$multiarch'
15469 mv='$mv'
15470 myarchname='$myarchname'
15471 mydomain='$mydomain'
15472 myhostname='$myhostname'
15473 myuname='$myuname'
15474 n='$n'
15475 netdb_hlen_type='$netdb_hlen_type'
15476 netdb_host_type='$netdb_host_type'
15477 netdb_name_type='$netdb_name_type'
15478 netdb_net_type='$netdb_net_type'
15479 nm='$nm'
15480 nm_opt='$nm_opt'
15481 nm_so_opt='$nm_so_opt'
15482 nonxs_ext='$nonxs_ext'
15483 nroff='$nroff'
15484 nvsize='$nvsize'
15485 nvtype='$nvtype'
15486 o_nonblock='$o_nonblock'
15487 obj_ext='$obj_ext'
15488 old_pthread_create_joinable='$old_pthread_create_joinable'
15489 optimize='$optimize'
15490 orderlib='$orderlib'
15491 osname='$osname'
15492 osvers='$osvers'
15493 package='$package'
15494 pager='$pager'
15495 passcat='$passcat'
15496 patchlevel='$patchlevel'
15497 path_sep='$path_sep'
15498 perl5='$perl5'
15499 perl='$perl'
15500 perladmin='$perladmin'
15501 perlpath='$perlpath'
15502 pg='$pg'
15503 phostname='$phostname'
15504 pidtype='$pidtype'
15505 plibpth='$plibpth'
15506 pm_apiversion='$pm_apiversion'
15507 pmake='$pmake'
15508 pr='$pr'
15509 prefix='$prefix'
15510 prefixexp='$prefixexp'
15511 privlib='$privlib'
15512 privlibexp='$privlibexp'
15513 prototype='$prototype'
15514 ptrsize='$ptrsize'
15515 quadkind='$quadkind'
15516 quadtype='$quadtype'
15517 randbits='$randbits'
15518 randfunc='$randfunc'
15519 randseedtype='$randseedtype'
15520 ranlib='$ranlib'
15521 rd_nodata='$rd_nodata'
15522 revision='$revision'
15523 rm='$rm'
15524 rmail='$rmail'
15525 runnm='$runnm'
15526 sPRIEldbl='$sPRIEldbl'
15527 sPRIFldbl='$sPRIFldbl'
15528 sPRIGldbl='$sPRIGldbl'
15529 sPRIX64='$sPRIX64'
15530 sPRId64='$sPRId64'
15531 sPRIeldbl='$sPRIeldbl'
15532 sPRIfldbl='$sPRIfldbl'
15533 sPRIgldbl='$sPRIgldbl'
15534 sPRIi64='$sPRIi64'
15535 sPRIo64='$sPRIo64'
15536 sPRIu64='$sPRIu64'
15537 sPRIx64='$sPRIx64'
15538 sched_yield='$sched_yield'
15539 scriptdir='$scriptdir'
15540 scriptdirexp='$scriptdirexp'
15541 sed='$sed'
15542 seedfunc='$seedfunc'
15543 selectminbits='$selectminbits'
15544 selecttype='$selecttype'
15545 sendmail='$sendmail'
15546 sh='$sh'
15547 shar='$shar'
15548 sharpbang='$sharpbang'
15549 shmattype='$shmattype'
15550 shortsize='$shortsize'
15551 shrpenv='$shrpenv'
15552 shsharp='$shsharp'
15553 sig_count='$sig_count'
15554 sig_name='$sig_name'
15555 sig_name_init='$sig_name_init'
15556 sig_num='$sig_num'
15557 sig_num_init='$sig_num_init'
15558 signal_t='$signal_t'
15559 sitearch='$sitearch'
15560 sitearchexp='$sitearchexp'
15561 sitebin='$sitebin'
15562 sitebinexp='$sitebinexp'
15563 sitelib='$sitelib'
15564 sitelibexp='$sitelibexp'
15565 siteprefix='$siteprefix'
15566 siteprefixexp='$siteprefixexp'
15567 sizetype='$sizetype'
15568 sleep='$sleep'
15569 smail='$smail'
15570 small='$small'
15571 so='$so'
15572 sockethdr='$sockethdr'
15573 socketlib='$socketlib'
15574 socksizetype='$socksizetype'
15575 sort='$sort'
15576 spackage='$spackage'
15577 spitshell='$spitshell'
15578 split='$split'
15579 src='$src'
15580 ssizetype='$ssizetype'
15581 startperl='$startperl'
15582 startsh='$startsh'
15583 static_ext='$static_ext'
15584 stdchar='$stdchar'
15585 stdio_base='$stdio_base'
15586 stdio_bufsiz='$stdio_bufsiz'
15587 stdio_cnt='$stdio_cnt'
15588 stdio_filbuf='$stdio_filbuf'
15589 stdio_ptr='$stdio_ptr'
15590 stdio_stream_array='$stdio_stream_array'
15591 strings='$strings'
15592 submit='$submit'
15593 subversion='$subversion'
15594 sysman='$sysman'
15595 tail='$tail'
15596 tar='$tar'
15597 tbl='$tbl'
15598 tee='$tee'
15599 test='$test'
15600 timeincl='$timeincl'
15601 timetype='$timetype'
15602 touch='$touch'
15603 tr='$tr'
15604 trnl='$trnl'
15605 troff='$troff'
15606 u16size='$u16size'
15607 u16type='$u16type'
15608 u32size='$u32size'
15609 u32type='$u32type'
15610 u64size='$u64size'
15611 u64type='$u64type'
15612 u8size='$u8size'
15613 u8type='$u8type'
15614 uidformat='$uidformat'
15615 uidsign='$uidsign'
15616 uidsize='$uidsize'
15617 uidtype='$uidtype'
15618 uname='$uname'
15619 uniq='$uniq'
15620 uquadtype='$uquadtype'
15621 use5005threads='$use5005threads'
15622 use64bitall='$use64bitall'
15623 use64bitint='$use64bitint'
15624 usedl='$usedl'
15625 useithreads='$useithreads'
15626 uselargefiles='$uselargefiles'
15627 uselongdouble='$uselongdouble'
15628 usemorebits='$usemorebits'
15629 usemultiplicity='$usemultiplicity'
15630 usemymalloc='$usemymalloc'
15631 usenm='$usenm'
15632 useopcode='$useopcode'
15633 useperlio='$useperlio'
15634 useposix='$useposix'
15635 usesfio='$usesfio'
15636 useshrplib='$useshrplib'
15637 usesocks='$usesocks'
15638 usethreads='$usethreads'
15639 usevendorprefix='$usevendorprefix'
15640 usevfork='$usevfork'
15641 usrinc='$usrinc'
15642 uuname='$uuname'
15643 uvoformat='$uvoformat'
15644 uvsize='$uvsize'
15645 uvtype='$uvtype'
15646 uvuformat='$uvuformat'
15647 uvxformat='$uvxformat'
15648 vendorbin='$vendorbin'
15649 vendorbinexp='$vendorbinexp'
15650 vendorlib='$vendorlib'
15651 vendorlibexp='$vendorlibexp'
15652 vendorprefix='$vendorprefix'
15653 vendorprefixexp='$vendorprefixexp'
15654 version='$version'
15655 vi='$vi'
15656 voidflags='$voidflags'
15657 xlibpth='$xlibpth'
15658 xs_apiversion='$xs_apiversion'
15659 zcat='$zcat'
15660 zip='$zip'
15661 EOT
15662
15663 : Add in command line options if available
15664 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15665
15666 : add special variables
15667 $test -f $src/patchlevel.h && \
15668 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15669 echo "CONFIGDOTSH=true" >>config.sh
15670
15671 : propagate old symbols
15672 if $test -f UU/config.sh; then
15673         <UU/config.sh sort | uniq >UU/oldconfig.sh
15674         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15675         sort | uniq -u >UU/oldsyms
15676         set X `cat UU/oldsyms`
15677         shift
15678         case $# in
15679         0) ;;
15680         *)
15681                 cat <<EOM
15682 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15683 EOM
15684                 echo "# Variables propagated from previous config.sh file." >>config.sh
15685                 for sym in `cat UU/oldsyms`; do
15686                         echo "    Propagating $hint variable "'$'"$sym..."
15687                         eval 'tmp="$'"${sym}"'"'
15688                         echo "$tmp" | \
15689                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15690                 done
15691                 ;;
15692         esac
15693 fi
15694
15695 : Finish up by extracting the .SH files
15696 case "$alldone" in
15697 exit)
15698         $rm -rf UU
15699         echo "Done."
15700         exit 0
15701         ;;
15702 cont)
15703         ;;
15704 '')
15705         dflt=''
15706         nostick=true
15707         $cat <<EOM
15708
15709 If you'd like to make any changes to the config.sh file before I begin
15710 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15711
15712 EOM
15713         rp="Press return or use a shell escape to edit config.sh:"
15714         . UU/myread
15715         nostick=''
15716         case "$ans" in
15717         '') ;;
15718         *) : in case they cannot read
15719                 sh 1>&4 -c "$ans";;
15720         esac
15721         ;;
15722 esac
15723
15724 : if this fails, just run all the .SH files by hand
15725 . ./config.sh
15726
15727 echo " "
15728 exec 1>&4
15729 . ./UU/extract
15730
15731 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15732         dflt=y
15733         case "$silent" in
15734         true) ;;
15735         *)
15736                 $cat <<EOM
15737
15738 Now you need to generate make dependencies by running "$make depend".
15739 You might prefer to run it in background: "$make depend > makedepend.out &"
15740 It can take a while, so you might not want to run it right now.
15741
15742 EOM
15743                 ;;
15744         esac
15745         rp="Run $make depend now?"
15746         . UU/myread
15747         case "$ans" in
15748         y*)
15749                 $make depend && echo "Now you must run a $make."
15750                 ;;
15751         *)
15752                 echo "You must run '$make depend' then '$make'."
15753                 ;;
15754         esac
15755 elif test -f [Mm]akefile; then
15756         echo " "
15757         echo "Now you must run a $make."
15758 else
15759         echo "Done."
15760 fi
15761
15762 if $test -f Policy.sh; then
15763     $cat <<EOM
15764
15765 If you compile $package on a different machine or from a different object
15766 directory, copy the Policy.sh file from this object directory to the
15767 new one before you run Configure -- this will help you with most of
15768 the policy defaults.
15769
15770 EOM
15771 fi
15772 if $test -f config.msg; then
15773     echo "Hmm.  I also noted the following information while running:"
15774     echo " "
15775     $cat config.msg >&4
15776     $rm -f config.msg
15777 fi
15778 $rm -f kit*isdone ark*isdone
15779 $rm -rf UU
15780
15781 : End of Configure
15782