insufficient buffer in change#5317
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Sat Mar 11 20:26:09 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 sitelib_stem=''
868 sitelibexp=''
869 siteprefix=''
870 siteprefixexp=''
871 sizetype=''
872 so=''
873 socksizetype=''
874 sharpbang=''
875 shsharp=''
876 spitshell=''
877 src=''
878 ssizetype=''
879 startperl=''
880 startsh=''
881 stdchar=''
882 d_stdio_stream_array=''
883 stdio_stream_array=''
884 sysman=''
885 trnl=''
886 uidformat=''
887 uidsign=''
888 uidsize=''
889 uidtype=''
890 archname64=''
891 use64bitall=''
892 use64bitint=''
893 uselargefiles=''
894 uselongdouble=''
895 usemorebits=''
896 usemultiplicity=''
897 nm_opt=''
898 nm_so_opt=''
899 runnm=''
900 usenm=''
901 useperlio=''
902 usesocks=''
903 d_oldpthreads=''
904 use5005threads=''
905 useithreads=''
906 usethreads=''
907 incpath=''
908 mips_type=''
909 usrinc=''
910 d_vendorarch=''
911 installvendorarch=''
912 vendorarch=''
913 vendorarchexp=''
914 d_vendorbin=''
915 installvendorbin=''
916 vendorbin=''
917 vendorbinexp=''
918 d_vendorlib=''
919 installvendorlib=''
920 vendorlib=''
921 vendorlib_stem=''
922 vendorlibexp=''
923 usevendorprefix=''
924 vendorprefix=''
925 vendorprefixexp=''
926 defvoidused=''
927 voidflags=''
928 pm_apiversion=''
929 xs_apiversion=''
930 CONFIG=''
931
932 define='define'
933 undef='undef'
934 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
935 rmlist=''
936
937 : We must find out about Eunice early
938 eunicefix=':'
939 if test -f /etc/unixtovms; then
940         eunicefix=/etc/unixtovms
941 fi
942 if test -f /etc/unixtovms.exe; then
943         eunicefix=/etc/unixtovms.exe
944 fi
945
946 i_whoami=''
947 : set useposix=false in your hint file to disable the POSIX extension.
948 useposix=true
949 : set useopcode=false in your hint file to disable the Opcode extension.
950 useopcode=true
951 : Trailing extension.  Override this in a hint file, if needed.
952 _exe=''
953 : Extra object files, if any, needed on this platform.
954 archobjs=''
955 : Possible local include directories to search.
956 : Set locincpth to "" in a hint file to defeat local include searches.
957 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
958 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
959 :
960 : no include file wanted by default
961 inclwanted=''
962
963 groupstype=''
964 : change the next line if compiling for Xenix/286 on Xenix/386
965 xlibpth='/usr/lib/386 /lib/386'
966 : Possible local library directories to search.
967 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
968 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
969
970 : general looking path for locating libraries
971 glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
972 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
973 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
974 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
975 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
976
977 : Private path used by Configure to find libraries.  Its value
978 : is prepended to libpth. This variable takes care of special
979 : machines, like the mips.  Usually, it should be empty.
980 plibpth=''
981
982 : default library list
983 libswanted=''
984 : some systems want to use only the non-versioned libso:s
985 ignore_versioned_solibs=''
986 : set usemultiplicity on the Configure command line to enable multiplicity.
987 : set usesocks on the Configure command line to enable socks.
988 : set usethreads on the Configure command line to enable threads.
989 : full support for void wanted by default
990 defvoidused=15
991
992 : List of libraries we want.
993 : If anyone needs -lnet, put it in a hint file.
994 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
995 libswanted="$libswanted dld ld sun m c cposix posix"
996 libswanted="$libswanted ndir dir crypt sec"
997 libswanted="$libswanted ucb bsd BSD PW x iconv"
998 : We probably want to search /usr/shlib before most other libraries.
999 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1000 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1001 glibpth="/usr/shlib $glibpth"
1002 : Do not use vfork unless overridden by a hint file.
1003 usevfork=false
1004
1005 : Find the basic shell for Bourne shell scripts
1006 case "$sh" in
1007 '')
1008         case "$SYSTYPE" in
1009         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1010         *) xxx='/bin/sh';;
1011         esac
1012         if test -f "$xxx"; then
1013                 sh="$xxx"
1014         else
1015                 : Build up a list and do a single loop so we can 'break' out.
1016                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1017                 for xxx in sh bash ksh pdksh ash; do
1018                         for p in $pth; do
1019                                 try="$try ${p}/${xxx}"
1020                         done
1021                 done
1022                 for xxx in $try; do
1023                         if test -f "$xxx"; then
1024                                 sh="$xxx";
1025                                 break
1026                         elif test -f "$xxx.exe"; then
1027                                 sh="$xxx";
1028                                 break
1029                         fi
1030                 done
1031         fi
1032         ;;
1033 esac
1034
1035 case "$sh" in
1036 '')     cat <<EOM >&2
1037 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1038
1039 Usually it's in /bin/sh.  How did you even get this far?
1040 Please contact me (Perl Maintainers) at perlbug@perl.com and 
1041 we'll try to straighten this all out.
1042 EOM
1043         exit 1
1044         ;;
1045 esac
1046
1047 : see if sh knows # comments
1048 if `$sh -c '#' >/dev/null 2>&1`; then
1049         shsharp=true
1050         spitshell=cat
1051         xcat=/bin/cat
1052         test -f $xcat || xcat=/usr/bin/cat
1053         echo "#!$xcat" >try
1054         $eunicefix try
1055         chmod +x try
1056         ./try > today
1057         if test -s today; then
1058                 sharpbang='#!'
1059         else
1060                 echo "#! $xcat" > try
1061                 $eunicefix try
1062                 chmod +x try
1063                 ./try > today
1064                 if test -s today; then
1065                         sharpbang='#! '
1066                 else
1067                         sharpbang=': use '
1068                 fi
1069         fi
1070 else
1071         echo " "
1072         echo "Your $sh doesn't grok # comments--I will strip them later on."
1073         shsharp=false
1074         cd ..
1075         echo "exec grep -v '^[  ]*#'" >spitshell
1076         chmod +x spitshell
1077         $eunicefix spitshell
1078         spitshell=`pwd`/spitshell
1079         cd UU
1080         echo "I presume that if # doesn't work, #! won't work either!"
1081         sharpbang=': use '
1082 fi
1083 rm -f try today
1084
1085 : figure out how to guarantee sh startup
1086 case "$startsh" in
1087 '') startsh=${sharpbang}${sh} ;;
1088 *)
1089 esac
1090 cat >try <<EOSS
1091 $startsh
1092 set abc
1093 test "$?abc" != 1
1094 EOSS
1095
1096 chmod +x try
1097 $eunicefix try
1098 if ./try; then
1099         : echo "Yup, it does."
1100 else
1101         echo "Hmm... '$startsh' does not guarantee sh startup..."
1102         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1103 fi
1104 rm -f try
1105
1106
1107 : Save command line options in file UU/cmdline.opt for later use in
1108 : generating config.sh.
1109 cat > cmdline.opt <<EOSH
1110 # Configure command line arguments.
1111 config_arg0='$0'
1112 config_args='$*'
1113 config_argc=$#
1114 EOSH
1115 argn=1
1116 for arg in "$@"; do
1117         cat >>cmdline.opt <<EOSH
1118 config_arg$argn='$arg'
1119 EOSH
1120         argn=`expr $argn + 1`
1121 done
1122
1123 : produce awk script to parse command line options
1124 cat >options.awk <<'EOF'
1125 BEGIN {
1126         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1127
1128         len = length(optstr);
1129         for (i = 1; i <= len; i++) {
1130                 c = substr(optstr, i, 1);
1131                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1132                 if (a == ":") {
1133                         arg[c] = 1;
1134                         i++;
1135                 }
1136                 opt[c] = 1;
1137         }
1138 }
1139 {
1140         expect = 0;
1141         str = $0;
1142         if (substr(str, 1, 1) != "-") {
1143                 printf("'%s'\n", str);
1144                 next;
1145         }
1146         len = length($0);
1147         for (i = 2; i <= len; i++) {
1148                 c = substr(str, i, 1);
1149                 if (!opt[c]) {
1150                         printf("-%s\n", substr(str, i));
1151                         next;
1152                 }
1153                 printf("-%s\n", c);
1154                 if (arg[c]) {
1155                         if (i < len)
1156                                 printf("'%s'\n", substr(str, i + 1));
1157                         else
1158                                 expect = 1;
1159                         next;
1160                 }
1161         }
1162 }
1163 END {
1164         if (expect)
1165                 print "?";
1166 }
1167 EOF
1168
1169 : process the command line options
1170 set X `for arg in "$@"; do echo "X$arg"; done |
1171         sed -e s/X// | awk -f options.awk`
1172 eval "set $*"
1173 shift
1174 rm -f options.awk
1175
1176 : set up default values
1177 fastread=''
1178 reuseval=false
1179 config_sh=''
1180 alldone=''
1181 error=''
1182 silent=''
1183 extractsh=''
1184 override=''
1185 knowitall=''
1186 rm -f optdef.sh posthint.sh
1187 cat >optdef.sh <<EOS
1188 $startsh
1189 EOS
1190
1191
1192 : option parsing
1193 while test $# -gt 0; do
1194         case "$1" in
1195         -d) shift; fastread=yes;;
1196         -e) shift; alldone=cont;;
1197         -f)
1198                 shift
1199                 cd ..
1200                 if test -r "$1"; then
1201                         config_sh="$1"
1202                 else
1203                         echo "$me: cannot read config file $1." >&2
1204                         error=true
1205                 fi
1206                 cd UU
1207                 shift;;
1208         -h) shift; error=true;;
1209         -r) shift; reuseval=true;;
1210         -s) shift; silent=true; realsilent=true;;
1211         -E) shift; alldone=exit;;
1212         -K) shift; knowitall=true;;
1213         -O) shift; override=true;;
1214         -S) shift; silent=true; extractsh=true;;
1215         -D)
1216                 shift
1217                 case "$1" in
1218                 *=)
1219                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1220                         echo "$me: ignoring -D $1" >&2
1221                         ;;
1222                 *=*) echo "$1" | \
1223                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1224                 *) echo "$1='define'" >> optdef.sh;;
1225                 esac
1226                 shift
1227                 ;;
1228         -U)
1229                 shift
1230                 case "$1" in
1231                 *=) echo "$1" >> optdef.sh;;
1232                 *=*)
1233                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1234                         echo "$me: ignoring -U $1" >&2
1235                         ;;
1236                 *) echo "$1='undef'" >> optdef.sh;;
1237                 esac
1238                 shift
1239                 ;;
1240         -A)
1241             shift
1242             xxx=''
1243             yyy="$1"
1244             zzz=''
1245             uuu=undef
1246             case "$yyy" in
1247             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1248                  case "$zzz" in
1249                  *:*) zzz='' ;;
1250                  *)   xxx=append
1251                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1252                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1253                  esac
1254                  ;;
1255             esac
1256             case "$xxx" in
1257             '')  case "$yyy" in
1258                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1259                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1260                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1261                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1262                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1263                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1264                  esac
1265                  ;;       
1266             esac
1267             case "$xxx" in
1268             append)
1269                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1270             clear)
1271                 echo "$yyy=''"                  >> posthint.sh ;;
1272             define)
1273                 case "$zzz" in
1274                 '') zzz=define ;;
1275                 esac
1276                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1277             eval)
1278                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1279             prepend)
1280                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1281             undef)
1282                 case "$zzz" in
1283                 '') zzz="$uuu" ;;
1284                 esac
1285                 echo "$yyy=$zzz"                >> posthint.sh ;;
1286             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1287             esac
1288             shift
1289             ;;
1290         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1291             exit 0;;
1292         --) break;;
1293         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1294         *) break;;
1295         esac
1296 done
1297
1298 case "$error" in
1299 true)
1300         cat >&2 <<EOM
1301 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1302                  [-U symbol] [-U symbol=] [-A command:symbol...]
1303   -d : use defaults for all answers.
1304   -e : go on without questioning past the production of config.sh.
1305   -f : specify an alternate default configuration file.
1306   -h : print this help message and exit (with an error status).
1307   -r : reuse C symbols value if possible (skips costly nm extraction).
1308   -s : silent mode, only echoes questions and essential information.
1309   -D : define symbol to have some value:
1310          -D symbol         symbol gets the value 'define'
1311          -D symbol=value   symbol gets the value 'value'
1312   -E : stop at the end of questions, after having produced config.sh.
1313   -K : do not use unless you know what you are doing.
1314   -O : let -D and -U override definitions from loaded configuration file.
1315   -S : perform variable substitutions on all .SH files (can mix with -f)
1316   -U : undefine symbol:
1317          -U symbol    symbol gets the value 'undef'
1318          -U symbol=   symbol gets completely empty
1319   -A : manipulate symbol after the platform specific hints have been applied:
1320          -A symbol=value                append " "value to symbol
1321          -A append:symbol=value         append value to symbol
1322          -A define:symbol=value         define symbol to have value
1323          -A clear:symbol                define symbol to be ''
1324          -A define:symbol               define symbol to be 'define'
1325          -A eval:symbol=value           define symbol to be eval of value
1326          -A prepend:symbol=value        prepend value to symbol
1327          -A undef:symbol                define symbol to be 'undef'
1328          -A undef:symbol=               define symbol to be ''
1329   -V : print version number and exit (with a zero status).
1330 EOM
1331         exit 1
1332         ;;
1333 esac
1334
1335 : Sanity checks
1336 case "$fastread$alldone" in
1337 yescont|yesexit) ;;
1338 *)
1339         if test ! -t 0; then
1340                 echo "Say 'sh Configure', not 'sh <Configure'"
1341                 exit 1
1342         fi
1343         ;;
1344 esac
1345
1346 exec 4>&1
1347 case "$silent" in
1348 true) exec 1>/dev/null;;
1349 esac
1350
1351 : run the defines and the undefines, if any, but leave the file out there...
1352 touch optdef.sh
1353 . ./optdef.sh
1354 : create the posthint manipulation script and leave the file out there...
1355 touch posthint.sh
1356
1357 : set package name
1358 package=perl5
1359 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1360 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1361 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1362 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1363 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1364 esac
1365
1366 : Some greps do not return status, grrr.
1367 echo "grimblepritz" >grimble
1368 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1369         contains=contains
1370 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1371         contains=grep
1372 else
1373         contains=contains
1374 fi
1375 rm -f grimble
1376 : the following should work in any shell
1377 case "$contains" in
1378 contains*)
1379         echo " "
1380         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1381         cat >contains <<'EOSS'
1382 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1383 EOSS
1384 chmod +x contains
1385 esac
1386
1387 : Find the path to the source tree
1388 case "$src" in
1389 '') case "$0" in
1390     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1391          case "$src" in
1392          /*)    ;;
1393          *)     src=`cd ../$src && pwd` ;;
1394          esac
1395          ;;
1396     *)   src='.';;
1397     esac;;
1398 esac
1399 case "$src" in
1400 '')     src=/
1401         rsrc=/
1402         ;;
1403 /*) rsrc="$src";;
1404 *) rsrc="../$src";;
1405 esac
1406 if test -f $rsrc/Configure && \
1407         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1408 then
1409    : found it, so we are ok.
1410 else
1411         rsrc=''
1412         for src in . .. ../.. ../../.. ../../../..; do
1413                 if test -f ../$src/Configure && \
1414                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1415                 then
1416                         rsrc=../$src
1417                         break
1418                 fi
1419         done
1420 fi
1421 case "$rsrc" in
1422 '')
1423         cat <<EOM >&4
1424
1425 Sorry, I can't seem to locate the source dir for $package.  Please start
1426 Configure with an explicit path -- i.e. /some/path/Configure.
1427
1428 EOM
1429         exit 1
1430         ;;
1431 ../.)   rsrc='..';;
1432 *)
1433         echo " "
1434         echo "Sources for $package found in \"$src\"." >&4
1435         ;;
1436 esac
1437
1438 : script used to extract .SH files with variable substitutions
1439 cat >extract <<'EOS'
1440 CONFIGDOTSH=true
1441 echo "Doing variable substitutions on .SH files..."
1442 if test -f $src/MANIFEST; then
1443         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1444 else
1445         echo "(Looking for .SH files under the source directory.)"
1446         set x `(cd $src; find . -name "*.SH" -print)`
1447 fi
1448 shift
1449 case $# in
1450 0) set x `(cd $src; echo *.SH)`; shift;;
1451 esac
1452 if test ! -f $src/$1; then
1453         shift
1454 fi
1455 mkdir_p='
1456 name=$1;
1457 create="";
1458 while test $name; do
1459         if test ! -d "$name"; then
1460                 create="$name $create";
1461                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1462                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1463         else
1464                 name="";
1465         fi;
1466 done;
1467 for file in $create; do
1468         mkdir $file;
1469 done
1470 '
1471 for file in $*; do
1472         case "$src" in
1473         ".")
1474                 case "$file" in
1475                 */*)
1476                         dir=`expr X$file : 'X\(.*\)/'`
1477                         file=`expr X$file : 'X.*/\(.*\)'`
1478                         (cd $dir && . ./$file)
1479                         ;;
1480                 *)
1481                         . ./$file
1482                         ;;
1483                 esac
1484                 ;;
1485         *)
1486                 case "$file" in
1487                 */*)
1488                         dir=`expr X$file : 'X\(.*\)/'`
1489                         file=`expr X$file : 'X.*/\(.*\)'`
1490                         (set x $dir; shift; eval $mkdir_p)
1491                         sh <$src/$dir/$file
1492                         ;;
1493                 *)
1494                         sh <$src/$file
1495                         ;;
1496                 esac
1497                 ;;
1498         esac
1499 done
1500 if test -f $src/config_h.SH; then
1501         if test ! -f config.h; then
1502         : oops, they left it out of MANIFEST, probably, so do it anyway.
1503         . $src/config_h.SH
1504         fi
1505 fi
1506 EOS
1507
1508 : extract files and exit if asked to do so
1509 case "$extractsh" in
1510 true)
1511         case "$realsilent" in
1512         true) ;;
1513         *) exec 1>&4;;
1514         esac
1515         case "$config_sh" in
1516         '') config_sh='config.sh';;
1517         esac
1518         echo " "
1519         echo "Fetching answers from $config_sh..."
1520         cd ..
1521         . $config_sh
1522         test "$override" && . ./optdef.sh
1523         echo " "
1524         . UU/extract
1525         rm -rf UU
1526         echo "Done."
1527         exit 0
1528         ;;
1529 esac
1530
1531 : Eunice requires " " instead of "", can you believe it
1532 echo " "
1533 : Here we go...
1534 echo "Beginning of configuration questions for $package."
1535
1536 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1537
1538 : first determine how to suppress newline on echo command
1539 echo " "
1540 echo "Checking echo to see how to suppress newlines..."
1541 (echo "hi there\c" ; echo " ") >.echotmp
1542 if $contains c .echotmp >/dev/null 2>&1 ; then
1543         echo "...using -n."
1544         n='-n'
1545         c=''
1546 else
1547         cat <<'EOM'
1548 ...using \c
1549 EOM
1550         n=''
1551         c='\c'
1552 fi
1553 echo $n "The star should be here-->$c"
1554 echo '*'
1555 rm -f .echotmp
1556
1557 : Now test for existence of everything in MANIFEST
1558 echo " "
1559 if test -f $rsrc/MANIFEST; then
1560         echo "First let's make sure your kit is complete.  Checking..." >&4
1561         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1562         rm -f missing
1563         tmppwd=`pwd`
1564         for filelist in x??; do
1565                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1566         done
1567         if test -s missing; then
1568                 cat missing >&4
1569                 cat >&4 <<'EOM'
1570
1571 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1572
1573 You have the option of continuing the configuration process, despite the
1574 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1575 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1576 and contact the author (perlbug@perl.com).
1577
1578 EOM
1579                 echo $n "Continue? [n] $c" >&4
1580                 read ans
1581                 case "$ans" in
1582                 y*)
1583                         echo "Continuing..." >&4
1584                         rm -f missing
1585                         ;;
1586                 *)
1587                         echo "ABORTING..." >&4
1588                         kill $$
1589                         ;;
1590                 esac
1591         else
1592                 echo "Looks good..."
1593         fi
1594 else
1595         echo "There is no MANIFEST file.  I hope your kit is complete !"
1596 fi
1597 rm -f missing x??
1598
1599 echo " "
1600 : Find the appropriate value for a newline for tr
1601 if test -n "$DJGPP"; then
1602        trnl='\012'
1603 fi
1604 if test X"$trnl" = X; then
1605         case "`echo foo|tr '\n' x 2>/dev/null`" in
1606         foox) trnl='\n' ;;
1607         esac
1608 fi
1609 if test X"$trnl" = X; then
1610         case "`echo foo|tr '\012' x 2>/dev/null`" in
1611         foox) trnl='\012' ;;
1612         esac
1613 fi
1614 if test X"$trnl" = X; then
1615         cat <<EOM >&2
1616
1617 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1618
1619 EOM
1620         exit 1
1621 fi
1622
1623 : compute the number of columns on the terminal for proper question formatting
1624 case "$COLUMNS" in
1625 '') COLUMNS='80';;
1626 esac
1627
1628 : set up the echo used in my read
1629 myecho="case \"\$xxxm\" in
1630 '') echo $n \"\$rp $c\" >&4;;
1631 *) case \"\$rp\" in
1632         '') echo $n \"[\$xxxm] $c\";;
1633         *)
1634                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1635                         echo \"\$rp\" >&4
1636                         echo $n \"[\$xxxm] $c\" >&4
1637                 else
1638                         echo $n \"\$rp [\$xxxm] $c\" >&4
1639                 fi
1640                 ;;
1641         esac;;
1642 esac"
1643
1644 : now set up to do reads with possible shell escape and default assignment
1645 cat <<EOSC >myread
1646 $startsh
1647 xxxm=\$dflt
1648 $myecho
1649 ans='!'
1650 case "\$fastread" in
1651 yes) case "\$dflt" in
1652         '') ;;
1653         *) ans='';
1654                 case "\$silent-\$rp" in
1655                 true-) ;;
1656                 *) echo " " >&4;;
1657                 esac;;
1658         esac;;
1659 *) case "\$silent" in
1660         true) case "\$rp" in
1661                 '') ans='';;
1662                 esac;;
1663         esac;;
1664 esac
1665 while expr "X\$ans" : "X!" >/dev/null; do
1666         read answ
1667         set x \$xxxm
1668         shift
1669         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1670         case  "\$answ" in
1671         "!")
1672                 sh 1>&4
1673                 echo " "
1674                 $myecho
1675                 ;;
1676         !*)
1677                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1678                 shift
1679                 sh 1>&4 -c "\$*"
1680                 echo " "
1681                 $myecho
1682                 ;;
1683         "\$ans")
1684                 case "\$ans" in
1685                 \\&*)
1686                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1687                         shift
1688                         case "\$1" in
1689                         -d)
1690                                 fastread=yes
1691                                 echo "(OK, I'll run with -d after this question.)" >&4
1692                                 ;;
1693                         -*)
1694                                 echo "*** Sorry, \$1 not supported yet." >&4
1695                                 ;;
1696                         esac
1697                         $myecho
1698                         ans=!
1699                         ;;
1700                 esac;;
1701         *)
1702                 case "\$aok" in
1703                 y)
1704                         echo "*** Substitution done -- please confirm."
1705                         xxxm="\$ans"
1706                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1707                         xxxm="\$ans"
1708                         ans=!
1709                         ;;
1710                 *)
1711                         echo "*** Error -- try again."
1712                         ans=!
1713                         ;;
1714                 esac
1715                 $myecho
1716                 ;;
1717         esac
1718         case "\$ans\$xxxm\$nostick" in
1719         '')
1720                 ans=!
1721                 $myecho
1722                 ;;
1723         esac
1724 done
1725 case "\$ans" in
1726 '') ans="\$xxxm";;
1727 esac
1728 EOSC
1729
1730 : create .config dir to save info across Configure sessions
1731 test -d ../.config || mkdir ../.config
1732 cat >../.config/README <<EOF
1733 This directory created by Configure to save information that should
1734 persist across sessions for $package.
1735
1736 You may safely delete it if you wish.
1737 EOF
1738
1739 : general instructions
1740 needman=true
1741 firsttime=true
1742 user=`(logname) 2>/dev/null`
1743 case "$user" in
1744 '') user=`whoami 2>&1`;;
1745 esac
1746 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1747         firsttime=false
1748         echo " "
1749         rp='Would you like to see the instructions?'
1750         dflt=n
1751         . ./myread
1752         case "$ans" in
1753         [yY]*) ;;
1754         *) needman=false;;
1755         esac
1756 fi
1757 if $needman; then
1758         cat <<EOH
1759
1760 This installation shell script will examine your system and ask you questions
1761 to determine how the perl5 package should be installed. If you get
1762 stuck on a question, you may use a ! shell escape to start a subshell or
1763 execute a command.  Many of the questions will have default answers in square
1764 brackets; typing carriage return will give you the default.
1765
1766 On some of the questions which ask for file or directory names you are allowed
1767 to use the ~name construct to specify the login directory belonging to "name",
1768 even if you don't have a shell which knows about that.  Questions where this is
1769 allowed will be marked "(~name ok)".
1770
1771 EOH
1772         rp=''
1773         dflt='Type carriage return to continue'
1774         . ./myread
1775         cat <<'EOH'
1776
1777 The prompter used in this script allows you to use shell variables and
1778 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1779 in the default answer, as if the default line was a set of arguments given to a
1780 script shell.  This means you may also use $* to repeat the whole default line,
1781 so you do not have to re-type everything to add something to the default.
1782
1783 Everytime there is a substitution, you will have to confirm.  If there is an
1784 error (e.g. an unmatched backtick), the default answer will remain unchanged
1785 and you will be prompted again.
1786
1787 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1788 the questions and use the computed defaults (or the previous answers if there
1789 was already a config.sh file). Type 'Configure -h' for a list of options.
1790 You may also start interactively and then answer '& -d' at any prompt to turn
1791 on the non-interactive behaviour for the remainder of the execution.
1792
1793 EOH
1794         . ./myread
1795         cat <<EOH
1796
1797 Much effort has been expended to ensure that this shell script will run on any
1798 Unix system.  If despite that it blows up on yours, your best bet is to edit
1799 Configure and run it again.  If you can't run Configure for some reason,
1800 you'll have to generate a config.sh file by hand.  Whatever problems you
1801 have, let me (perlbug@perl.com) know how I blew it.
1802
1803 This installation script affects things in two ways:
1804
1805 1) it may do direct variable substitutions on some of the files included
1806    in this kit.
1807 2) it builds a config.h file for inclusion in C programs.  You may edit
1808    any of these files as the need arises after running this script.
1809
1810 If you make a mistake on a question, there is no easy way to back up to it
1811 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1812 files.  Configure will offer to let you do this before it runs the SH files.
1813
1814 EOH
1815         dflt='Type carriage return to continue'
1816         . ./myread
1817         case "$firsttime" in
1818         true) echo $user >>../.config/instruct;;
1819         esac
1820 fi
1821
1822 : find out where common programs are
1823 echo " "
1824 echo "Locating common programs..." >&4
1825 cat <<EOSC >loc
1826 $startsh
1827 case \$# in
1828 0) exit 1;;
1829 esac
1830 thing=\$1
1831 shift
1832 dflt=\$1
1833 shift
1834 for dir in \$*; do
1835         case "\$thing" in
1836         .)
1837         if test -d \$dir/\$thing; then
1838                 echo \$dir
1839                 exit 0
1840         fi
1841         ;;
1842         *)
1843         for thisthing in \$dir/\$thing; do
1844                 : just loop through to pick last item
1845         done
1846         if test -f \$thisthing; then
1847                 echo \$thisthing
1848                 exit 0
1849         elif test -f \$dir/\$thing.exe; then
1850                 if test -n "$DJGPP"; then
1851                         echo \$dir/\$thing.exe
1852                 else
1853                         : on Eunice apparently
1854                         echo \$dir/\$thing
1855                 fi
1856                 exit 0
1857         fi
1858         ;;
1859         esac
1860 done
1861 echo \$dflt
1862 exit 1
1863 EOSC
1864 chmod +x loc
1865 $eunicefix loc
1866 loclist="
1867 awk
1868 cat
1869 comm
1870 cp
1871 echo
1872 expr
1873 grep
1874 ls
1875 make
1876 mkdir
1877 rm
1878 sed
1879 sort
1880 touch
1881 tr
1882 uniq
1883 "
1884 trylist="
1885 Mcc
1886 ar
1887 byacc
1888 cpp
1889 csh
1890 date
1891 egrep
1892 gzip
1893 less
1894 ln
1895 more
1896 nm
1897 nroff
1898 pg
1899 test
1900 uname
1901 zip
1902 "
1903 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1904 pth="$pth /lib /usr/lib"
1905 for file in $loclist; do
1906         eval xxx=\$$file
1907         case "$xxx" in
1908         /*|?:[\\/]*)
1909                 if test -f "$xxx"; then
1910                         : ok
1911                 else
1912                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1913                         xxx=`./loc $file $file $pth`
1914                 fi
1915                 ;;
1916         '') xxx=`./loc $file $file $pth`;;
1917         *) xxx=`./loc $xxx $xxx $pth`;;
1918         esac
1919         eval $file=$xxx
1920         eval _$file=$xxx
1921         case "$xxx" in
1922         /*)
1923                 echo $file is in $xxx.
1924                 ;;
1925         ?:[\\/]*)
1926                 echo $file is in $xxx.
1927                 ;;
1928         *)
1929                 echo "I don't know where '$file' is, and my life depends on it." >&4
1930                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1931                 exit 1
1932                 ;;
1933         esac
1934 done
1935 echo " "
1936 echo "Don't worry if any of the following aren't found..."
1937 say=offhand
1938 for file in $trylist; do
1939         eval xxx=\$$file
1940         case "$xxx" in
1941         /*|?:[\\/]*)
1942                 if test -f "$xxx"; then
1943                         : ok
1944                 else
1945                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1946                         xxx=`./loc $file $file $pth`
1947                 fi
1948                 ;;
1949         '') xxx=`./loc $file $file $pth`;;
1950         *) xxx=`./loc $xxx $xxx $pth`;;
1951         esac
1952         eval $file=$xxx
1953         eval _$file=$xxx
1954         case "$xxx" in
1955         /*)
1956                 echo $file is in $xxx.
1957                 ;;
1958         ?:[\\/]*)
1959                 echo $file is in $xxx.
1960                 ;;
1961         *)
1962                 echo "I don't see $file out there, $say."
1963                 say=either
1964                 ;;
1965         esac
1966 done
1967 case "$egrep" in
1968 egrep)
1969         echo "Substituting grep for egrep."
1970         egrep=$grep
1971         ;;
1972 esac
1973 case "$ln" in
1974 ln)
1975         echo "Substituting cp for ln."
1976         ln=$cp
1977         ;;
1978 esac
1979 case "$test" in
1980 test)
1981         echo "Hopefully test is built into your sh."
1982         ;;
1983 *)
1984         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1985                 echo "Using the test built into your sh."
1986                 test=test
1987                 _test=test
1988         fi
1989         ;;
1990 esac
1991 case "$echo" in
1992 echo)
1993         echo "Hopefully echo is built into your sh."
1994         ;;
1995 '') ;;
1996 *)
1997         echo " "
1998 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1999         $echo $n "hi there$c" >foo1
2000         echo $n "hi there$c" >foo2
2001         if cmp foo1 foo2 >/dev/null 2>&1; then
2002                 echo "They are compatible.  In fact, they may be identical."
2003         else
2004                 case "$n" in
2005                 '-n') n='' c='\c';;
2006                 *) n='-n' c='';;
2007                 esac
2008                 cat <<FOO
2009 They are not compatible!  You are probably running ksh on a non-USG system.
2010 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2011 have echo built in and we may have to run some Bourne shell scripts.  That
2012 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2013
2014 FOO
2015                 $echo $n "The star should be here-->$c"
2016                 $echo "*"
2017         fi
2018         $rm -f foo1 foo2
2019         ;;
2020 esac
2021
2022 : determine whether symbolic links are supported
2023 echo " "
2024 $touch blurfl
2025 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2026         echo "Symbolic links are supported." >&4
2027         lns="$ln -s"
2028 else
2029         echo "Symbolic links are NOT supported." >&4
2030         lns="$ln"
2031 fi
2032 $rm -f blurfl sym
2033
2034 : see whether [:lower:] and [:upper:] are supported character classes
2035 echo " "
2036 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2037 ABYZ)
2038         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2039         up='[:upper:]'
2040         low='[:lower:]'
2041         ;;
2042 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2043         # (0xc9 and 0xd1), therefore that is a nice testing point.
2044         if test "X$up" = X -o "X$low" = X; then
2045             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2046             ij) up='[A-Z]'
2047                 low='[a-z]'
2048                 ;;
2049             esac
2050         fi
2051         if test "X$up" = X -o "X$low" = X; then
2052             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2053             ij) up='A-Z'
2054                 low='a-z'
2055                 ;;
2056             esac
2057         fi
2058         if test "X$up" = X -o "X$low" = X; then
2059             case "`echo IJ | od -x 2>/dev/null`" in
2060             *C9D1*|*c9d1*)
2061                 echo "Hey, this might be EBCDIC." >&4
2062                 if test "X$up" = X -o "X$low" = X; then
2063                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2064                     ij) up='[A-IJ-RS-Z]'
2065                         low='[a-ij-rs-z]'
2066                         ;;
2067                     esac
2068                 fi
2069                 if test "X$up" = X -o "X$low" = X; then
2070                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2071                     ij) up='A-IJ-RS-Z'
2072                         low='a-ij-rs-z'
2073                         ;;
2074                     esac
2075                 fi
2076                 ;;
2077             esac
2078         fi
2079 esac
2080 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2081 ij)
2082     echo "Using $up and $low to convert case." >&4
2083     ;;
2084 *)
2085     echo "I don't know how to translate letters from upper to lower case." >&4
2086     echo "Your tr is not acting any way I know of." >&4
2087     exit 1
2088     ;;
2089 esac
2090 : set up the translation script tr, must be called with ./tr of course
2091 cat >tr <<EOSC
2092 $startsh
2093 case "\$1\$2" in
2094 '[A-Z][a-z]') exec $tr '$up' '$low';;
2095 '[a-z][A-Z]') exec $tr '$low' '$up';;
2096 esac
2097 exec $tr "\$@"
2098 EOSC
2099 chmod +x tr
2100 $eunicefix tr
2101
2102 : Try to determine whether config.sh was made on this system
2103 case "$config_sh" in
2104 '')
2105 myuname=`$uname -a 2>/dev/null`
2106 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2107 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2108 # because the A-Z/a-z are not consecutive.
2109 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2110         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2111 newmyuname="$myuname"
2112 dflt=n
2113 case "$knowitall" in
2114 '')
2115         if test -f ../config.sh; then
2116                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2117                         eval "`grep myuname= ../config.sh`"
2118                 fi
2119                 if test "X$myuname" = "X$newmyuname"; then
2120                         dflt=y
2121                 fi
2122         fi
2123         ;;
2124 *) dflt=y;;
2125 esac
2126
2127 : Get old answers from old config file if Configure was run on the
2128 : same system, otherwise use the hints.
2129 hint=default
2130 cd ..
2131 if test -f config.sh; then
2132         echo " "
2133         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2134         . UU/myread
2135         case "$ans" in
2136         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2137         *)  echo "Fetching default answers from your old config.sh file..." >&4
2138                 tmp_n="$n"
2139                 tmp_c="$c"
2140                 tmp_sh="$sh"
2141                 . ./config.sh
2142                 cp config.sh UU
2143                 n="$tmp_n"
2144                 c="$tmp_c"
2145                 : Older versions did not always set $sh.  Catch re-use of such
2146                 : an old config.sh.
2147                 case "$sh" in
2148                 '') sh="$tmp_sh" ;;
2149                 esac
2150                 hint=previous
2151                 ;;
2152         esac
2153 fi
2154 if test ! -f config.sh; then
2155         $cat <<EOM
2156
2157 First time through, eh?  I have some defaults handy for some systems
2158 that need some extra help getting the Configure answers right:
2159
2160 EOM
2161         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2162         dflt=''
2163         : Half the following guesses are probably wrong... If you have better
2164         : tests or hints, please send them to perlbug@perl.com
2165         : The metaconfig authors would also appreciate a copy...
2166         $test -f /irix && osname=irix
2167         $test -f /xenix && osname=sco_xenix
2168         $test -f /dynix && osname=dynix
2169         $test -f /dnix && osname=dnix
2170         $test -f /lynx.os && osname=lynxos
2171         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2172         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2173         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2174         $test -f /bin/mips && /bin/mips && osname=mips
2175         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2176                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2177         $test -d /usr/apollo/bin && osname=apollo
2178         $test -f /etc/saf/_sactab && osname=svr4
2179         $test -d /usr/include/minix && osname=minix
2180         if $test -d /MachTen -o -d /MachTen_Folder; then
2181                 osname=machten
2182                 if $test -x /sbin/version; then
2183                         osvers=`/sbin/version | $awk '{print $2}' |
2184                         $sed -e 's/[A-Za-z]$//'`
2185                 elif $test -x /usr/etc/version; then
2186                         osvers=`/usr/etc/version | $awk '{print $2}' |
2187                         $sed -e 's/[A-Za-z]$//'`
2188                 else
2189                         osvers="$2.$3"
2190                 fi
2191         fi
2192
2193         $test -f /sys/posix.dll &&
2194                 $test -f /usr/bin/what &&
2195                 set X `/usr/bin/what /sys/posix.dll` &&
2196                 $test "$3" = UWIN &&
2197                 osname=uwin &&
2198                 osvers="$5"
2199
2200         if $test -f $uname; then
2201                 set X $myuname
2202                 shift
2203
2204                 case "$5" in
2205                 fps*) osname=fps ;;
2206                 mips*)
2207                         case "$4" in
2208                         umips) osname=umips ;;
2209                         *) osname=mips ;;
2210                         esac;;
2211                 [23]100) osname=mips ;;
2212                 next*) osname=next ;;
2213                 i386*)
2214                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2215                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2216                                 osname='sco'
2217                                 osvers=$tmp
2218                         elif $test -f /etc/kconfig; then
2219                                 osname=isc
2220                                 if test "$lns" = "$ln -s"; then
2221                                         osvers=4
2222                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2223                                         osvers=3
2224                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2225                                         osvers=2
2226                                 fi
2227                         fi
2228                         tmp=''
2229                         ;;
2230                 pc*)
2231                         if test -n "$DJGPP"; then
2232                                 osname=dos
2233                                 osvers=djgpp
2234                         fi
2235                         ;;
2236                 esac
2237
2238                 case "$1" in
2239                 aix) osname=aix
2240                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2241                         case "$tmp" in
2242                         'not found') osvers="$4"."$3" ;;
2243                         '<3240'|'<>3240') osvers=3.2.0 ;;
2244                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2245                         '=3250'|'>3250') osvers=3.2.5 ;;
2246                         *) osvers=$tmp;;
2247                         esac
2248                         ;;
2249                 bsd386) osname=bsd386
2250                         osvers=`$uname -r`
2251                         ;;
2252                 cygwin*) osname=cygwin
2253                         osvers="$3"
2254                         ;;
2255                 *dc.osx) osname=dcosx
2256                         osvers="$3"
2257                         ;;
2258                 dnix) osname=dnix
2259                         osvers="$3"
2260                         ;;
2261                 domainos) osname=apollo
2262                         osvers="$3"
2263                         ;;
2264                 dgux) osname=dgux 
2265                         osvers="$3"
2266                         ;;
2267                 dynixptx*) osname=dynixptx
2268                         osvers=`echo "$4"|sed 's/^v//'`
2269                         ;;
2270                 freebsd) osname=freebsd 
2271                         osvers="$3" ;;
2272                 genix) osname=genix ;;
2273                 hp*) osname=hpux 
2274                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2275                         ;;
2276                 irix*) osname=irix
2277                         case "$3" in
2278                         4*) osvers=4 ;;
2279                         5*) osvers=5 ;;
2280                         *)      osvers="$3" ;;
2281                         esac
2282                         ;;
2283                 linux) osname=linux
2284                         case "$3" in
2285                         *)      osvers="$3" ;;
2286                         esac
2287                         ;;
2288                 MiNT) osname=mint
2289                         ;;
2290                 netbsd*) osname=netbsd
2291                         osvers="$3"
2292                         ;;
2293                 news-os) osvers="$3"
2294                         case "$3" in
2295                         4*) osname=newsos4 ;;
2296                         *) osname=newsos ;;
2297                         esac
2298                         ;;
2299                 next*) osname=next ;;
2300                 POSIX-BC | posix-bc ) osname=posix-bc
2301                         osvers="$3"
2302                         ;;
2303                 powerux | power_ux | powermax_os | powermaxos | \
2304                 powerunix | power_unix) osname=powerux
2305                         osvers="$3"
2306                         ;;
2307                 qnx) osname=qnx
2308                         osvers="$4"
2309                         ;;
2310                 solaris) osname=solaris
2311                         case "$3" in
2312                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2313                         *)      osvers="$3" ;;
2314                         esac
2315                         ;;
2316                 sunos) osname=sunos
2317                         case "$3" in
2318                         5*) osname=solaris
2319                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2320                         *)      osvers="$3" ;;
2321                         esac
2322                         ;;
2323                 titanos) osname=titanos
2324                         case "$3" in
2325                         1*) osvers=1 ;;
2326                         2*) osvers=2 ;;
2327                         3*) osvers=3 ;;
2328                         4*) osvers=4 ;;
2329                         *)      osvers="$3" ;;
2330                         esac
2331                         ;;
2332                 ultrix) osname=ultrix
2333                         osvers="$3"
2334                         ;;
2335                 osf1|mls+)      case "$5" in
2336                                 alpha)
2337                                         osname=dec_osf
2338                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2339                                         ;;
2340                         hp*)    osname=hp_osf1  ;;
2341                         mips)   osname=mips_osf1 ;;
2342                         esac
2343                         ;;
2344                 unixware) osname=svr5
2345                         osvers="$4"
2346                         ;;
2347                 uts) osname=uts
2348                         osvers="$3"
2349                         ;;
2350                 $2) case "$osname" in
2351                         *isc*) ;;
2352                         *freebsd*) ;;
2353                         svr*)
2354                                 : svr4.x or possibly later
2355                                 case "svr$3" in 
2356                                 ${osname}*)
2357                                         osname=svr$3
2358                                         osvers=$4
2359                                         ;;
2360                                 esac
2361                                 case "$osname" in
2362                                 svr4.0)
2363                                         : Check for ESIX
2364                                         if test -f /stand/boot ; then
2365                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2366                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2367                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2368                                                         if test -n "$isesix"; then
2369                                                                 osname=esix4
2370                                                         fi
2371                                                 fi
2372                                         fi
2373                                         ;;
2374                                 esac
2375                                 ;;
2376                         *)      if test -f /etc/systemid; then
2377                                         osname=sco
2378                                         set `echo $3 | $sed 's/\./ /g'` $4
2379                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2380                                                 osvers=$1.$2.$3
2381                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2382                                                 osvers=$1.$2
2383                                         elif $test -f $src/hints/sco_$1.sh; then
2384                                                 osvers=$1
2385                                         fi
2386                                 else
2387                                         case "$osname" in
2388                                         '') : Still unknown.  Probably a generic Sys V.
2389                                                 osname="sysv"
2390                                                 osvers="$3"
2391                                                 ;;
2392                                         esac
2393                                 fi
2394                                 ;;
2395                         esac
2396                         ;;
2397                 *)      case "$osname" in
2398                         '') : Still unknown.  Probably a generic BSD.
2399                                 osname="$1"
2400                                 osvers="$3"
2401                                 ;;
2402                         esac
2403                         ;;
2404                 esac
2405         else
2406                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2407                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2408                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2409                                 osname=news_os
2410                         fi
2411                         $rm -f UU/kernel.what
2412                 elif test -d c:/.; then
2413                         set X $myuname
2414                         osname=os2
2415                         osvers="$5"
2416                 fi
2417         fi
2418         
2419         : Now look for a hint file osname_osvers, unless one has been
2420         : specified already.
2421         case "$hintfile" in
2422         ''|' ')
2423                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2424                 : Also try without trailing minor version numbers.
2425                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2426                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2427                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2428                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2429                 case "$file" in
2430                 '') dflt=none ;;
2431                 *)  case "$osvers" in
2432                         '') dflt=$file
2433                                 ;;
2434                         *)  if $test -f $src/hints/$file.sh ; then
2435                                         dflt=$file
2436                                 elif $test -f $src/hints/$xfile.sh ; then
2437                                         dflt=$xfile
2438                                 elif $test -f $src/hints/$xxfile.sh ; then
2439                                         dflt=$xxfile
2440                                 elif $test -f $src/hints/$xxxfile.sh ; then
2441                                         dflt=$xxxfile
2442                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2443                                         dflt=$xxxxfile
2444                                 elif $test -f "$src/hints/${osname}.sh" ; then
2445                                         dflt="${osname}"
2446                                 else
2447                                         dflt=none
2448                                 fi
2449                                 ;;
2450                         esac
2451                         ;;
2452                 esac
2453                 if $test -f Policy.sh ; then
2454                         case "$dflt" in
2455                         *Policy*) ;;
2456                         none) dflt="Policy" ;;
2457                         *) dflt="Policy $dflt" ;;
2458                         esac
2459                 fi
2460                 ;;
2461         *)
2462                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2463                 ;;
2464         esac
2465
2466         if $test -f Policy.sh ; then
2467                 $cat <<EOM
2468
2469 There's also a Policy hint file available, which should make the
2470 site-specific (policy) questions easier to answer.
2471 EOM
2472
2473         fi
2474
2475         $cat <<EOM
2476
2477 You may give one or more space-separated answers, or "none" if appropriate.
2478 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2479 is a good thing.  DO NOT give a wrong version or a wrong OS.
2480
2481 EOM
2482
2483         rp="Which of these apply, if any?"
2484         . UU/myread
2485         tans=$ans
2486         for file in $tans; do
2487                 if $test X$file = XPolicy -a -f Policy.sh; then
2488                         . Policy.sh
2489                         $cat Policy.sh >> UU/config.sh
2490                 elif $test -f $src/hints/$file.sh; then
2491                         . $src/hints/$file.sh
2492                         $cat $src/hints/$file.sh >> UU/config.sh
2493                 elif $test X$tans = X -o X$tans = Xnone ; then
2494                         : nothing
2495                 else
2496                         : Give one chance to correct a possible typo.
2497                         echo "$file.sh does not exist"
2498                         dflt=$file
2499                         rp="hint to use instead?"
2500                         . UU/myread
2501                         for file in $ans; do
2502                                 if $test -f "$src/hints/$file.sh"; then
2503                                         . $src/hints/$file.sh
2504                                         $cat $src/hints/$file.sh >> UU/config.sh
2505                                 elif $test X$ans = X -o X$ans = Xnone ; then
2506                                         : nothing
2507                                 else
2508                                         echo "$file.sh does not exist -- ignored."
2509                                 fi
2510                         done
2511                 fi
2512         done
2513
2514         hint=recommended
2515         : Remember our hint file for later.
2516         if $test -f "$src/hints/$file.sh" ; then
2517                 hintfile="$file"
2518         else
2519                 hintfile=''
2520         fi
2521 fi
2522 cd UU
2523 ;;
2524 *)
2525         echo " "
2526         echo "Fetching default answers from $config_sh..." >&4
2527         tmp_n="$n"
2528         tmp_c="$c"
2529         cd ..
2530         cp $config_sh config.sh 2>/dev/null
2531         chmod +w config.sh
2532         . ./config.sh
2533         cd UU
2534         cp ../config.sh .
2535         n="$tmp_n"
2536         c="$tmp_c"
2537         hint=previous
2538         ;;
2539 esac
2540 test "$override" && . ./optdef.sh
2541 myuname="$newmyuname"
2542
2543 : Restore computed paths
2544 for file in $loclist $trylist; do
2545         eval $file="\$_$file"
2546 done
2547
2548 cat << EOM
2549
2550 Configure uses the operating system name and version to set some defaults.
2551 The default value is probably right if the name rings a bell. Otherwise,
2552 since spelling matters for me, either accept the default or answer "none"
2553 to leave it blank.
2554
2555 EOM
2556 case "$osname" in
2557         ''|' ')
2558                 case "$hintfile" in
2559                 ''|' '|none) dflt=none ;;
2560                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2561                 esac
2562                 ;;
2563         *) dflt="$osname" ;;
2564 esac
2565 rp="Operating system name?"
2566 . ./myread
2567 case "$ans" in
2568 none)  osname='' ;;
2569 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2570 esac
2571 echo " "
2572 case "$osvers" in
2573         ''|' ')
2574                 case "$hintfile" in
2575                 ''|' '|none) dflt=none ;;
2576                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2577                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2578                         case "$dflt" in
2579                         ''|' ') dflt=none ;;
2580                         esac
2581                         ;;
2582                 esac
2583                 ;;
2584         *) dflt="$osvers" ;;
2585 esac
2586 rp="Operating system version?"
2587 . ./myread
2588 case "$ans" in
2589 none)  osvers='' ;;
2590 *) osvers="$ans" ;;
2591 esac
2592
2593
2594 . ./posthint.sh
2595
2596 : who configured the system
2597 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2598 cf_by=`(logname) 2>/dev/null`
2599 case "$cf_by" in
2600 "")
2601         cf_by=`(whoami) 2>/dev/null`
2602         case "$cf_by" in
2603         "") cf_by=unknown ;;
2604         esac ;;
2605 esac
2606
2607 : set up the script used to warn in case of inconsistency
2608 cat <<EOS >whoa
2609 $startsh
2610 EOS
2611 cat <<'EOSC' >>whoa
2612 dflt=y
2613 echo " "
2614 echo "*** WHOA THERE!!! ***" >&4
2615 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2616 rp="    Keep the $hint value?"
2617 . ./myread
2618 case "$ans" in
2619 y) td=$was; tu=$was;;
2620 esac
2621 EOSC
2622
2623 : function used to set $1 to $val
2624 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2625 case "$val$was" in
2626 $define$undef) . ./whoa; eval "$var=\$td";;
2627 $undef$define) . ./whoa; eval "$var=\$tu";;
2628 *) eval "$var=$val";;
2629 esac'
2630
2631 case "$usethreads" in
2632 $define|true|[yY]*)     dflt='y';;
2633 *) dflt='n';;
2634 esac
2635 cat <<EOM
2636
2637 Perl can be built to take advantage of threads on some systems.
2638 To do so, Configure can be run with -Dusethreads.
2639
2640 Note that threading is a highly experimental feature, and
2641 some known race conditions still remain.  If you choose to try
2642 it, be very sure to not actually deploy it for production
2643 purposes.  README.threads has more details, and is required
2644 reading if you enable threads.
2645
2646 If this doesn't make any sense to you, just accept the default '$dflt'.
2647 EOM
2648 rp='Build a threading Perl?'
2649 . ./myread
2650 case "$ans" in
2651 y|Y)    val="$define" ;;
2652 *)      val="$undef" ;;
2653 esac
2654 set usethreads
2655 eval $setvar
2656
2657 case "$usethreads" in
2658 $define)
2659         $cat <<EOM
2660
2661 As of 5.5.640, Perl has two different internal threading implementations,
2662 the 5.005 version (5005threads) and an interpreter-based version
2663 (ithreads) that has one interpreter per thread.  Both are very 
2664 experimental.  This arrangement exists to help developers work out
2665 which one is better.
2666
2667 If you're a casual user, you probably don't want interpreter-threads
2668 at this time.  There doesn't yet exist a way to create threads from
2669 within Perl in this model, i.e., "use Thread;" will NOT work.
2670 EOM
2671         : Default to ithreads unless overridden on command line or with
2672         : old config.sh
2673         dflt='y'
2674         case "$use5005threads" in
2675                 $define|true|[yY]*) dflt='n';;
2676         esac
2677         case "$useithreads" in
2678                 $undef|false|[nN]*) dflt='n';;
2679         esac
2680         rp='Use interpreter-based ithreads?'
2681         . ./myread
2682         case "$ans" in
2683         y|Y)    val="$define" ;;
2684         *)      val="$undef" ;;
2685         esac
2686         set useithreads
2687         eval $setvar
2688         : Now set use5005threads to the opposite value.
2689         case "$useithreads" in
2690         $define) val="$undef" ;;
2691         *) val="$define" ;;
2692         esac
2693         set use5005threads
2694         eval $setvar
2695         ;;
2696 *)
2697         useithreads="$undef"
2698         use5005threads="$undef"
2699         ;;
2700 esac
2701
2702 case "$d_oldpthreads" in
2703 '')     : Configure tests would be welcome here.  For now, assume undef.
2704         val="$undef" ;;
2705 *)      val="$d_oldpthreads" ;;
2706 esac
2707 set d_oldpthreads
2708 eval $setvar
2709
2710
2711 case "$usethreads" in
2712 "$define"|true|[yY]*)
2713 : Look for a hint-file generated 'call-back-unit'.  If the
2714 : user has specified that a threading perl is to be built,
2715 : we may need to set or change some other defaults.
2716         if $test -f usethreads.cbu; then
2717                 echo "Your platform has some specific hints for threaded builds, using them..."
2718                 . ./usethreads.cbu
2719         else
2720                 $cat <<EOM
2721 (Your platform doesn't have any specific hints for threaded builds.
2722  Assuming POSIX threads, then.)
2723 EOM
2724         fi
2725         ;;
2726 esac
2727
2728 cat <<EOM
2729
2730 Perl can be built so that multiple Perl interpreters can coexist
2731 within the same Perl executable.
2732 EOM
2733
2734 case "$useithreads" in
2735 $define)
2736         cat <<EOM
2737 This multiple interpreter support is required for interpreter-based threads.
2738 EOM
2739         val="$define"
2740         ;;
2741 *)      case "$usemultiplicity" in
2742         $define|true|[yY]*)     dflt='y';;
2743         *) dflt='n';;
2744         esac
2745         echo " "
2746         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2747         rp='Build Perl for multiplicity?'
2748         . ./myread
2749         case "$ans" in
2750         y|Y)    val="$define" ;;
2751         *)      val="$undef" ;;
2752         esac
2753         ;;
2754 esac
2755 set usemultiplicity
2756 eval $setvar
2757
2758 : determine where manual pages are on this system
2759 echo " "
2760 case "$sysman" in
2761 '') 
2762         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2763         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2764         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2765         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2766         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2767         sysman=`./loc . /usr/man/man1 $syspath`
2768         ;;
2769 esac
2770 if $test -d "$sysman"; then
2771         echo "System manual is in $sysman." >&4
2772 else
2773         echo "Could not find manual pages in source form." >&4
2774 fi
2775
2776 : see what memory models we can support
2777 case "$models" in
2778 '')
2779         $cat >pdp11.c <<'EOP'
2780 int main() {
2781 #ifdef pdp11
2782         exit(0);
2783 #else
2784         exit(1);
2785 #endif
2786 }
2787 EOP
2788         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2789         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2790                 dflt='unsplit split'
2791         else
2792                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2793                 case "$tans" in
2794                 X) dflt='none';;
2795                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2796                                 dflt='small'
2797                         else
2798                                 dflt=''
2799                         fi
2800                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2801                                 dflt="$dflt medium"
2802                         fi
2803                         if $test -d /lib/large || $test -d /usr/lib/large; then
2804                                 dflt="$dflt large"
2805                         fi
2806                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2807                                 dflt="$dflt huge"
2808                         fi
2809                 esac
2810         fi;;
2811 *) dflt="$models";;
2812 esac
2813 $cat <<EOM
2814  
2815 Some systems have different model sizes.  On most systems they are called
2816 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2817 split.  If your system doesn't support different memory models, say "none".
2818 If you wish to force everything to one memory model, say "none" here and
2819 put the appropriate flags later when it asks you for other cc and ld flags.
2820 Venix systems may wish to put "none" and let the compiler figure things out.
2821 (In the following question multiple model names should be space separated.)
2822
2823 The default for most systems is "none".
2824
2825 EOM
2826 rp="Which memory models are supported?"
2827 . ./myread
2828 models="$ans"
2829
2830 case "$models" in
2831 none)
2832         small=''
2833         medium=''
2834         large=''
2835         huge=''
2836         unsplit=''
2837         split=''
2838         ;;
2839 *split)
2840         case "$split" in
2841         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2842                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2843                         dflt='-i'
2844                 else
2845                         dflt='none'
2846                 fi;;
2847         *) dflt="$split";;
2848         esac
2849         rp="What flag indicates separate I and D space?"
2850         . ./myread
2851         tans="$ans"
2852         case "$tans" in
2853         none) tans='';;
2854         esac
2855         split="$tans"
2856         unsplit='';;
2857 *large*|*small*|*medium*|*huge*)
2858         case "$models" in
2859         *large*)
2860                 case "$large" in
2861                 '') dflt='-Ml';;
2862                 *) dflt="$large";;
2863                 esac
2864         rp="What flag indicates large model?"
2865         . ./myread
2866         tans="$ans"
2867         case "$tans" in
2868         none) tans='';
2869         esac
2870         large="$tans";;
2871         *) large='';;
2872         esac
2873         case "$models" in
2874         *huge*) case "$huge" in
2875                 '') dflt='-Mh';;
2876                 *) dflt="$huge";;
2877                 esac
2878                 rp="What flag indicates huge model?"
2879                 . ./myread
2880                 tans="$ans"
2881                 case "$tans" in
2882                 none) tans='';
2883                 esac
2884                 huge="$tans";;
2885         *) huge="$large";;
2886         esac
2887         case "$models" in
2888         *medium*) case "$medium" in
2889                 '') dflt='-Mm';;
2890                 *) dflt="$medium";;
2891                 esac
2892                 rp="What flag indicates medium model?"
2893                 . ./myread
2894                 tans="$ans"
2895                 case "$tans" in
2896                 none) tans='';
2897                 esac
2898                 medium="$tans";;
2899         *) medium="$large";;
2900         esac
2901         case "$models" in
2902         *small*) case "$small" in
2903                 '') dflt='none';;
2904                 *) dflt="$small";;
2905                 esac
2906                 rp="What flag indicates small model?"
2907                 . ./myread
2908                 tans="$ans"
2909                 case "$tans" in
2910                 none) tans='';
2911                 esac
2912                 small="$tans";;
2913         *) small='';;
2914         esac
2915         ;;
2916 *)
2917         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2918         ;;
2919 esac
2920 $rm -f pdp11.* pdp11
2921
2922 : make some quick guesses about what we are up against
2923 echo " "
2924 $echo $n "Hmm...  $c"
2925 echo exit 1 >bsd
2926 echo exit 1 >usg
2927 echo exit 1 >v7
2928 echo exit 1 >osf1
2929 echo exit 1 >eunice
2930 echo exit 1 >xenix
2931 echo exit 1 >venix
2932 echo exit 1 >os2
2933 d_bsd="$undef"
2934 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2935 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2936 then
2937         echo "Looks kind of like an OSF/1 system, but we'll see..."
2938         echo exit 0 >osf1
2939 elif test `echo abc | tr a-z A-Z` = Abc ; then
2940         xxx=`./loc addbib blurfl $pth`
2941         if $test -f $xxx; then
2942         echo "Looks kind of like a USG system with BSD features, but we'll see..."
2943                 echo exit 0 >bsd
2944                 echo exit 0 >usg
2945         else
2946                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2947                         echo "Looks kind of like an extended USG system, but we'll see..."
2948                 else
2949                         echo "Looks kind of like a USG system, but we'll see..."
2950                 fi
2951                 echo exit 0 >usg
2952         fi
2953 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2954         echo "Looks kind of like a BSD system, but we'll see..."
2955         d_bsd="$define"
2956         echo exit 0 >bsd
2957 else
2958         echo "Looks kind of like a Version 7 system, but we'll see..."
2959         echo exit 0 >v7
2960 fi
2961 case "$eunicefix" in
2962 *unixtovms*)
2963         $cat <<'EOI'
2964 There is, however, a strange, musty smell in the air that reminds me of
2965 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2966 EOI
2967         echo exit 0 >eunice
2968         d_eunice="$define"
2969 : it so happens the Eunice I know will not run shell scripts in Unix format
2970         ;;
2971 *)
2972         echo " "
2973         echo "Congratulations.  You aren't running Eunice."
2974         d_eunice="$undef"
2975         ;;
2976 esac
2977 : Detect OS2.  The p_ variable is set above in the Head.U unit.
2978 case "$p_" in
2979 :) ;;
2980 *)
2981         $cat <<'EOI'
2982 I have the feeling something is not exactly right, however...don't tell me...
2983 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2984 EOI
2985         echo exit 0 >os2
2986         ;;
2987 esac
2988 if test -f /xenix; then
2989         echo "Actually, this looks more like a XENIX system..."
2990         echo exit 0 >xenix
2991         d_xenix="$define"
2992 else
2993         echo " "
2994         echo "It's not Xenix..."
2995         d_xenix="$undef"
2996 fi
2997 chmod +x xenix
2998 $eunicefix xenix
2999 if test -f /venix; then
3000         echo "Actually, this looks more like a VENIX system..."
3001         echo exit 0 >venix
3002 else
3003         echo " "
3004         if ./xenix; then
3005                 : null
3006         else
3007                 echo "Nor is it Venix..."
3008         fi
3009 fi
3010 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3011 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3012 $rm -f foo
3013
3014 : see if we need a special compiler
3015 echo " "
3016 if ./usg; then
3017         case "$cc" in
3018         '') case "$Mcc" in
3019                 /*) dflt='Mcc';;
3020                 *) case "$large" in
3021                         -M*) dflt='cc';;
3022                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3023                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3024                                                 dflt='cc'
3025                                         else
3026                                                 dflt='cc -M'
3027                                         fi
3028                                 else
3029                                         dflt='cc'
3030                                 fi;;
3031                         esac;;
3032                 esac;;
3033         *)  dflt="$cc";;
3034         esac
3035         case "$dflt" in
3036         *M*)    $cat <<'EOM'
3037 On some older systems the default C compiler will not resolve multiple global
3038 references that happen to have the same name.  On some such systems the "Mcc"
3039 command may be used to force these to be resolved.  On other systems a "cc -M"
3040 command is required.  (Note that the -M flag on other systems indicates a
3041 memory model to use!) If you have the Gnu C compiler, you might wish to use
3042 that instead.
3043
3044 EOM
3045         ;;
3046         esac
3047         rp="Use which C compiler?"
3048         . ./myread
3049         cc="$ans"
3050 else
3051         case "$cc" in
3052         '') dflt=cc;;
3053         *) dflt="$cc";;
3054         esac
3055         rp="Use which C compiler?"
3056         . ./myread
3057         cc="$ans"
3058 fi
3059 : Look for a hint-file generated 'call-back-unit'.  Now that the
3060 : user has specified the compiler, we may need to set or change some
3061 : other defaults.
3062 if $test -f cc.cbu; then
3063     . ./cc.cbu
3064 fi
3065 echo " "
3066 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3067 $cat >gccvers.c <<EOM
3068 #include <stdio.h>
3069 int main() {
3070 #ifdef __GNUC__
3071 #ifdef __VERSION__
3072         printf("%s\n", __VERSION__);
3073 #else
3074         printf("%s\n", "1");
3075 #endif
3076 #endif
3077         exit(0);
3078 }
3079 EOM
3080 if $cc $ldflags -o gccvers gccvers.c; then
3081         gccversion=`./gccvers`
3082         case "$gccversion" in
3083         '') echo "You are not using GNU cc." ;;
3084         *)  echo "You are using GNU cc $gccversion."
3085             ;;
3086         esac
3087 else
3088         echo " "
3089         echo "*** WHOA THERE!!! ***" >&4
3090         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3091         case "$knowitall" in
3092         '')
3093         echo "    You'd better start hunting for one and let me know about it." >&4
3094                 exit 1
3095                 ;;
3096         esac
3097 fi
3098 $rm -f gccvers*
3099 case "$gccversion" in
3100 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3101 esac
3102
3103 : decide how portable to be.  Allow command line overrides.
3104 case "$d_portable" in
3105 "$undef") ;;
3106 *)      d_portable="$define" ;;
3107 esac
3108
3109 : set up shell script to do ~ expansion
3110 cat >filexp <<EOSS
3111 $startsh
3112 : expand filename
3113 case "\$1" in
3114  ~/*|~)
3115         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3116         ;;
3117  ~*)
3118         if $test -f /bin/csh; then
3119                 /bin/csh -f -c "glob \$1"
3120                 failed=\$?
3121                 echo ""
3122                 exit \$failed
3123         else
3124                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3125                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3126                 if $test ! -d "\$dir"; then
3127                         me=\`basename \$0\`
3128                         echo "\$me: can't locate home directory for: \$name" >&2
3129                         exit 1
3130                 fi
3131                 case "\$1" in
3132                 */*)
3133                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3134                         ;;
3135                 *)
3136                         echo \$dir
3137                         ;;
3138                 esac
3139         fi
3140         ;;
3141 *)
3142         echo \$1
3143         ;;
3144 esac
3145 EOSS
3146 chmod +x filexp
3147 $eunicefix filexp
3148
3149 : now set up to get a file name
3150 cat <<EOS >getfile
3151 $startsh
3152 EOS
3153 cat <<'EOSC' >>getfile
3154 tilde=''
3155 fullpath=''
3156 already=''
3157 skip=''
3158 none_ok=''
3159 exp_file=''
3160 nopath_ok=''
3161 orig_rp="$rp"
3162 orig_dflt="$dflt"
3163 case "$gfpth" in
3164 '') gfpth='.' ;;
3165 esac
3166
3167 case "$fn" in
3168 *\(*)
3169         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3170         fn=`echo $fn | sed 's/(.*)//'`
3171         ;;
3172 esac
3173
3174 case "$fn" in
3175 *:*)
3176         loc_file=`expr $fn : '.*:\(.*\)'`
3177         fn=`expr $fn : '\(.*\):.*'`
3178         ;;
3179 esac
3180
3181 case "$fn" in
3182 *~*) tilde=true;;
3183 esac
3184 case "$fn" in
3185 */*) fullpath=true;;
3186 esac
3187 case "$fn" in
3188 *+*) skip=true;;
3189 esac
3190 case "$fn" in
3191 *n*) none_ok=true;;
3192 esac
3193 case "$fn" in
3194 *e*) exp_file=true;;
3195 esac
3196 case "$fn" in
3197 *p*) nopath_ok=true;;
3198 esac
3199
3200 case "$fn" in
3201 *f*) type='File';;
3202 *d*) type='Directory';;
3203 *l*) type='Locate';;
3204 esac
3205
3206 what="$type"
3207 case "$what" in
3208 Locate) what='File';;
3209 esac
3210
3211 case "$exp_file" in
3212 '')
3213         case "$d_portable" in
3214         "$define") ;;
3215         *) exp_file=true;;
3216         esac
3217         ;;
3218 esac
3219
3220 cd ..
3221 while test "$type"; do
3222         redo=''
3223         rp="$orig_rp"
3224         dflt="$orig_dflt"
3225         case "$tilde" in
3226         true) rp="$rp (~name ok)";;
3227         esac
3228         . UU/myread
3229         if test -f UU/getfile.ok && \
3230                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3231         then
3232                 value="$ans"
3233                 ansexp="$ans"
3234                 break
3235         fi
3236         case "$ans" in
3237         none)
3238                 value=''
3239                 ansexp=''
3240                 case "$none_ok" in
3241                 true) type='';;
3242                 esac
3243                 ;;
3244         *)
3245                 case "$tilde" in
3246                 '') value="$ans"
3247                         ansexp="$ans";;
3248                 *)
3249                         value=`UU/filexp $ans`
3250                         case $? in
3251                         0)
3252                                 if test "$ans" != "$value"; then
3253                                         echo "(That expands to $value on this system.)"
3254                                 fi
3255                                 ;;
3256                         *) value="$ans";;
3257                         esac
3258                         ansexp="$value"
3259                         case "$exp_file" in
3260                         '') value="$ans";;
3261                         esac
3262                         ;;
3263                 esac
3264                 case "$fullpath" in
3265                 true)
3266                         case "$ansexp" in
3267                         /*) value="$ansexp" ;;
3268                         *)
3269                                 redo=true
3270                                 case "$already" in
3271                                 true)
3272                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3273                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3274                                         ;;
3275                                 *)
3276                                 echo "Please give a full path name, starting with slash." >&4
3277                                         case "$tilde" in
3278                                         true)
3279                                 echo "Note that using ~name is ok provided it expands well." >&4
3280                                                 already=true
3281                                                 ;;
3282                                         esac
3283                                 esac
3284                                 ;;
3285                         esac
3286                         ;;
3287                 esac
3288                 case "$redo" in
3289                 '')
3290                         case "$type" in
3291                         File)
3292                                 for fp in $gfpth; do
3293                                         if test "X$fp" = X.; then
3294                                             pf="$ansexp"
3295                                         else    
3296                                             pf="$fp/$ansexp"
3297                                         fi
3298                                         if test -f "$pf"; then
3299                                                 type=''
3300                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3301                                         then
3302                                                 echo "($value is not a plain file, but that's ok.)"
3303                                                 type=''
3304                                         fi
3305                                         if test X"$type" = X; then
3306                                             value="$pf"
3307                                             break
3308                                         fi
3309                                 done
3310                                 ;;
3311                         Directory)
3312                                 for fp in $gfpth; do
3313                                         if test "X$fp" = X.; then
3314                                             pf="$ansexp"
3315                                         else    
3316                                             pf="$fp/$ansexp"
3317                                         fi
3318                                         if test -d "$pf"; then
3319                                                 type=''
3320                                                 value="$pf"
3321                                                 break
3322                                         fi
3323                                 done
3324                                 ;;
3325                         Locate)
3326                                 if test -d "$ansexp"; then
3327                                         echo "(Looking for $loc_file in directory $value.)"
3328                                         value="$value/$loc_file"
3329                                         ansexp="$ansexp/$loc_file"
3330                                 fi
3331                                 if test -f "$ansexp"; then
3332                                         type=''
3333                                 fi
3334                                 case "$nopath_ok" in
3335                                 true)   case "$value" in
3336                                         */*) ;;
3337                                         *)      echo "Assuming $value will be in people's path."
3338                                                 type=''
3339                                                 ;;
3340                                         esac
3341                                         ;;
3342                                 esac
3343                                 ;;
3344                         esac
3345
3346                         case "$skip" in
3347                         true) type='';
3348                         esac
3349
3350                         case "$type" in
3351                         '') ;;
3352                         *)
3353                                 if test "$fastread" = yes; then
3354                                         dflt=y
3355                                 else
3356                                         dflt=n
3357                                 fi
3358                                 rp="$what $value doesn't exist.  Use that name anyway?"
3359                                 . UU/myread
3360                                 dflt=''
3361                                 case "$ans" in
3362                                 y*) type='';;
3363                                 *) echo " ";;
3364                                 esac
3365                                 ;;
3366                         esac
3367                         ;;
3368                 esac
3369                 ;;
3370         esac
3371 done
3372 cd UU
3373 ans="$value"
3374 rp="$orig_rp"
3375 dflt="$orig_dflt"
3376 rm -f getfile.ok
3377 test "X$gfpthkeep" != Xy && gfpth=""
3378 EOSC
3379
3380 : What should the include directory be ?
3381 echo " "
3382 $echo $n "Hmm...  $c"
3383 dflt='/usr/include'
3384 incpath=''
3385 mips_type=''
3386 if $test -f /bin/mips && /bin/mips; then
3387         echo "Looks like a MIPS system..."
3388         $cat >usr.c <<'EOCP'
3389 #ifdef SYSTYPE_BSD43
3390 /bsd43
3391 #endif
3392 EOCP
3393         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3394                 dflt='/bsd43/usr/include'
3395                 incpath='/bsd43'
3396                 mips_type='BSD 4.3'
3397         else
3398                 mips_type='System V'
3399         fi
3400         $rm -f usr.c usr.out
3401         echo "and you're compiling with the $mips_type compiler and libraries."
3402         xxx_prompt=y
3403         echo "exit 0" >mips
3404 else
3405         echo "Doesn't look like a MIPS system."
3406         xxx_prompt=n
3407         echo "exit 1" >mips
3408 fi
3409 chmod +x mips
3410 $eunicefix mips
3411 case "$usrinc" in
3412 '') ;;
3413 *) dflt="$usrinc";;
3414 esac
3415 case "$xxx_prompt" in
3416 y)      fn=d/
3417         echo " "
3418         rp='Where are the include files you want to use?'
3419         . ./getfile
3420         usrinc="$ans"
3421         ;;
3422 *)      usrinc="$dflt"
3423         ;;
3424 esac
3425
3426 : see how we invoke the C preprocessor
3427 echo " "
3428 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3429 cat <<'EOT' >testcpp.c
3430 #define ABC abc
3431 #define XYZ xyz
3432 ABC.XYZ
3433 EOT
3434 cd ..
3435 if test ! -f cppstdin; then
3436         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3437                 # AIX cc -E doesn't show the absolute headerfile
3438                 # locations but we'll cheat by using the -M flag.
3439                 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
3440         else
3441                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3442         fi
3443 else
3444         echo "Keeping your $hint cppstdin wrapper."
3445 fi
3446 chmod 755 cppstdin
3447 wrapper=`pwd`/cppstdin
3448 ok='false'
3449 cd UU
3450
3451 if $test "X$cppstdin" != "X" && \
3452         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3453         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3454 then
3455         echo "You used to use $cppstdin $cppminus so we'll use that again."
3456         case "$cpprun" in
3457         '') echo "But let's see if we can live without a wrapper..." ;;
3458         *)
3459                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3460                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3461                 then
3462                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3463                         ok='true'
3464                 else
3465                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3466                 fi
3467                 ;;
3468         esac
3469 else
3470         case "$cppstdin" in
3471         '') ;;
3472         *)
3473                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3474                 ;;
3475         esac
3476 fi
3477
3478 if $ok; then
3479         : nothing
3480 elif echo '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"' -E -" will work...'; \
3487         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3488         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3489         echo "Yup, it does."
3490         x_cpp="$cc -E"
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 "Yipee, that works!"
3496         x_cpp="$cc -P"
3497         x_minus='';
3498 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3499         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3500         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3501         echo "At long last!"
3502         x_cpp="$cc -P"
3503         x_minus='-';
3504 elif echo 'No such luck, 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 "It works!"
3508         x_cpp="$cpp"
3509         x_minus='';
3510 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3511         $cpp - <testcpp.c >testcpp.out 2>&1; \
3512         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3513         echo "Hooray, it works!  I was beginning to wonder."
3514         x_cpp="$cpp"
3515         x_minus='-';
3516 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3517         $wrapper <testcpp.c >testcpp.out 2>&1; \
3518         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3519         x_cpp="$wrapper"
3520         x_minus=''
3521         echo "Eureka!"
3522 else
3523         dflt=''
3524         rp="No dice.  I can't find a C preprocessor.  Name one:"
3525         . ./myread
3526         x_cpp="$ans"
3527         x_minus=''
3528         $x_cpp <testcpp.c >testcpp.out 2>&1
3529         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3530                 echo "OK, that will do." >&4
3531         else
3532 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3533                 exit 1
3534         fi
3535 fi
3536
3537 case "$ok" in
3538 false)
3539         cppstdin="$x_cpp"
3540         cppminus="$x_minus"
3541         cpprun="$x_cpp"
3542         cpplast="$x_minus"
3543         set X $x_cpp
3544         shift
3545         case "$1" in
3546         "$cpp")
3547                 echo "Perhaps can we force $cc -E using a wrapper..."
3548                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3549                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3550                 then
3551                         echo "Yup, we can."
3552                         cppstdin="$wrapper"
3553                         cppminus='';
3554                 else
3555                         echo "Nope, we'll have to live without it..."
3556                 fi
3557                 ;;
3558         esac
3559         case "$cpprun" in
3560         "$wrapper")
3561                 cpprun=''
3562                 cpplast=''
3563                 ;;
3564         esac
3565         ;;
3566 esac
3567
3568 case "$cppstdin" in
3569 "$wrapper"|'cppstdin') ;;
3570 *) $rm -f $wrapper;;
3571 esac
3572 $rm -f testcpp.c testcpp.out
3573
3574 : Set private lib path
3575 case "$plibpth" in
3576 '') if ./mips; then
3577                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3578         fi;;
3579 esac
3580 case "$libpth" in
3581 ' ') dlist='';;
3582 '') dlist="$loclibpth $plibpth $glibpth";;
3583 *) dlist="$libpth";;
3584 esac
3585
3586 : Now check and see which directories actually exist, avoiding duplicates
3587 libpth=''
3588 for xxx in $dlist
3589 do
3590     if $test -d $xxx; then
3591                 case " $libpth " in
3592                 *" $xxx "*) ;;
3593                 *) libpth="$libpth $xxx";;
3594                 esac
3595     fi
3596 done
3597 $cat <<'EOM'
3598
3599 Some systems have incompatible or broken versions of libraries.  Among
3600 the directories listed in the question below, please remove any you
3601 know not to be holding relevant libraries, and add any that are needed.
3602 Say "none" for none.
3603
3604 EOM
3605 case "$libpth" in
3606 '') dflt='none';;
3607 *)
3608         set X $libpth
3609         shift
3610         dflt=${1+"$@"}
3611         ;;
3612 esac
3613 rp="Directories to use for library searches?"
3614 . ./myread
3615 case "$ans" in
3616 none) libpth=' ';;
3617 *) libpth="$ans";;
3618 esac
3619
3620 : compute shared library extension
3621 case "$so" in
3622 '')
3623         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3624                 dflt='sl'
3625         else
3626                 dflt='so'
3627         fi
3628         ;;
3629 *) dflt="$so";;
3630 esac
3631 $cat <<EOM
3632
3633 On some systems, shared libraries may be available.  Answer 'none' if
3634 you want to suppress searching of shared libraries for the remainder
3635 of this configuration.
3636
3637 EOM
3638 rp='What is the file extension used for shared libraries?'
3639 . ./myread
3640 so="$ans"
3641
3642 : Define several unixisms.
3643 : Hints files or command line option can be used to override them.
3644 : The convoluted testing is in case hints files set either the old
3645 : or the new name.
3646 case "$_exe" in
3647 '')     case "$exe_ext" in
3648     '') ;;
3649         *)      _exe="$exe_ext" ;;
3650         esac
3651         ;;
3652 esac
3653 case "$_a" in
3654 '')     case "$lib_ext" in
3655     '') _a='.a';;
3656         *)      _a="$lib_ext" ;;
3657         esac
3658         ;;
3659 esac
3660 case "$_o" in
3661 '') case "$obj_ext" in
3662         '')     _o='.o';;
3663         *)      _o="$obj_ext";;
3664         esac
3665         ;;
3666 esac
3667 case "$p_" in
3668 '') case "$path_sep" in
3669         '')     p_=':';;
3670         *)      p_="$path_sep";;
3671         esac
3672         ;;
3673 esac
3674 exe_ext=$_exe
3675 lib_ext=$_a
3676 obj_ext=$_o
3677 path_sep=$p_
3678
3679 : Which makefile gets called first.  This is used by make depend.
3680 case "$firstmakefile" in
3681 '') firstmakefile='makefile';;
3682 esac
3683
3684 case "$usesocks" in
3685 $define|true|[yY]*)     dflt='y';;
3686 *) dflt='n';;
3687 esac
3688 cat <<EOM
3689
3690 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3691 Configure must be run with -Dusesocks.
3692
3693 If this doesn't make any sense to you, just accept the default '$dflt'.
3694 EOM
3695 rp='Build Perl for SOCKS?'
3696 . ./myread
3697 case "$ans" in
3698 y|Y)    val="$define" ;;     
3699 *)      val="$undef" ;;
3700 esac
3701 set usesocks
3702 eval $setvar
3703
3704 : Looking for optional libraries
3705 echo " "
3706 echo "Checking for optional libraries..." >&4
3707 case "$libs" in
3708 ' '|'') dflt='';;
3709 *) dflt="$libs";;
3710 esac
3711 case "$libswanted" in
3712 '') libswanted='c_s';;
3713 esac
3714 case "$usesocks" in
3715 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3716 esac
3717 libsfound=''
3718 libsfiles=''
3719 libsdirs=''
3720 libspath=''
3721 for thisdir in $libpth $xlibpth; do
3722   test -d $thisdir && libspath="$libspath $thisdir"
3723 done
3724 for thislib in $libswanted; do
3725         for thisdir in $libspath; do
3726             xxx=''
3727             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3728                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3729                 $test -f "$xxx" && eval $libscheck
3730                 $test -f "$xxx" && libstyle=shared
3731             fi
3732             if test ! -f "$xxx"; then
3733                 xxx=$thisdir/lib$thislib.$so
3734                 $test -f "$xxx" && eval $libscheck
3735                 $test -f "$xxx" && libstyle=shared
3736             fi  
3737             if test ! -f "$xxx"; then
3738                 xxx=$thisdir/lib$thislib$_a
3739                 $test -f "$xxx" && eval $libscheck
3740                 $test -f "$xxx" && libstyle=static
3741             fi
3742             if test ! -f "$xxx"; then
3743                 xxx=$thisdir/$thislib$_a
3744                 $test -f "$xxx" && eval $libscheck
3745                 $test -f "$xxx" && libstyle=static
3746             fi
3747             if test ! -f "$xxx"; then
3748                 xxx=$thisdir/lib${thislib}_s$_a
3749                 $test -f "$xxx" && eval $libscheck
3750                 $test -f "$xxx" && libstyle=static
3751                 $test -f "$xxx" && thislib=${thislib}_s
3752             fi
3753             if test ! -f "$xxx"; then
3754                 xxx=$thisdir/Slib$thislib$_a
3755                 $test -f "$xxx" && eval $libscheck
3756                 $test -f "$xxx" && libstyle=static
3757             fi
3758             if $test -f "$xxx"; then
3759                 case "$libstyle" in
3760                 shared) echo "Found -l$thislib (shared)." ;;
3761                 static) echo "Found -l$thislib." ;;
3762                 *)      echo "Found -l$thislib ($libstyle)." ;;
3763                 esac
3764                 case " $dflt " in
3765                 *"-l$thislib "*);;
3766                 *) dflt="$dflt -l$thislib"
3767                    libsfound="$libsfound $xxx"
3768                    yyy=`basename $xxx`
3769                    libsfiles="$libsfiles $yyy"
3770                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3771                    case " $libsdirs " in
3772                    *" $yyy "*) ;;
3773                    *) libsdirs="$libsdirs $yyy" ;;
3774                    esac
3775                    ;;
3776                 esac
3777                 break
3778             fi  
3779         done
3780         if $test ! -f "$xxx"; then
3781             echo "No -l$thislib."
3782         fi
3783 done
3784 set X $dflt
3785 shift
3786 dflt="$*"
3787 case "$libs" in
3788 '') dflt="$dflt";;
3789 *) dflt="$libs";;
3790 esac
3791 case "$dflt" in
3792 ' '|'') dflt='none';;
3793 esac
3794
3795 $cat <<EOM
3796
3797 In order to compile $package on your machine, a number of libraries
3798 are usually needed.  Include any other special libraries here as well.
3799 Say "none" for none.  The default list is almost always right.
3800 EOM
3801
3802 echo " "
3803 rp="What libraries to use?"
3804 . ./myread
3805 case "$ans" in
3806 none) libs=' ';;
3807 *) libs="$ans";;
3808 esac
3809
3810 : determine optimization, if desired, or use for debug flag also
3811 case "$optimize" in
3812 ' '|$undef) dflt='none';;
3813 '') dflt='-O';;
3814 *) dflt="$optimize";;
3815 esac
3816 $cat <<EOH
3817
3818 By default, $package compiles with the -O flag to use the optimizer.
3819 Alternately, you might want to use the symbolic debugger, which uses
3820 the -g flag (on traditional Unix systems).  Either flag can be
3821 specified here.  To use neither flag, specify the word "none".
3822
3823 EOH
3824 rp="What optimizer/debugger flag should be used?"
3825 . ./myread
3826 optimize="$ans"
3827 case "$optimize" in
3828 'none') optimize=" ";;
3829 esac
3830
3831 dflt=''
3832 : We will not override a previous value, but we might want to
3833 : augment a hint file
3834 case "$hint" in
3835 default|recommended)
3836         case "$gccversion" in
3837         1*) dflt='-fpcc-struct-return' ;;
3838         esac
3839         case "$optimize" in
3840         *-g*) dflt="$dflt -DDEBUGGING";;
3841         esac
3842         case "$gccversion" in
3843         2*) if test -d /etc/conf/kconfig.d &&
3844                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3845                 then
3846                         dflt="$dflt -posix"
3847                 fi
3848                 ;;
3849         esac
3850         case "$gccversion" in
3851         1*) ;;
3852         2.[0-8]*) ;;
3853         ?*)     echo " "
3854                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3855                 echo 'int main(void) { return 0; }' > gcctest.c
3856                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3857                         echo "Yes, it does." 2>&1
3858                         case "$ccflags" in
3859                         *strict-aliasing*) 
3860                                 echo "Leaving current flags $ccflags alone." 2>&1
3861                                 ;;
3862                         *) dflt="$dflt -fno-strict-aliasing" ;;
3863                         esac
3864                 else
3865                         echo "Nope, it doesn't, but that's ok." 2>&1
3866                 fi
3867                 ;;
3868         esac
3869         ;;
3870 esac
3871
3872 case "$mips_type" in
3873 *BSD*|'') inclwanted="$locincpth $usrinc";;
3874 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3875 esac
3876 for thisincl in $inclwanted; do
3877         if $test -d $thisincl; then
3878                 if $test x$thisincl != x$usrinc; then
3879                         case "$dflt" in
3880                         *$thisincl*);;
3881                         *) dflt="$dflt -I$thisincl";;
3882                         esac
3883                 fi
3884         fi
3885 done
3886
3887 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3888         xxx=true;
3889 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3890         xxx=true;
3891 else
3892         xxx=false;
3893 fi;
3894 if $xxx; then
3895         case "$dflt" in
3896         *$2*);;
3897         *) dflt="$dflt -D$2";;
3898         esac;
3899 fi'
3900
3901 set signal.h LANGUAGE_C; eval $inctest
3902
3903 case "$usesocks" in
3904 $define)
3905         ccflags="$ccflags -DSOCKS"
3906         ;;
3907 esac
3908
3909 case "$hint" in
3910 default|recommended) dflt="$ccflags $dflt" ;;
3911 *) dflt="$ccflags";;
3912 esac
3913
3914 case "$dflt" in
3915 ''|' ') dflt=none;;
3916 esac
3917 $cat <<EOH
3918
3919 Your C compiler may want other flags.  For this question you should include
3920 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3921 but you should NOT include libraries or ld flags like -lwhatever.  If you
3922 want $package to honor its debug switch, you should include -DDEBUGGING here.
3923 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3924
3925 To use no flags, specify the word "none".
3926
3927 EOH
3928 set X $dflt
3929 shift
3930 dflt=${1+"$@"}
3931 rp="Any additional cc flags?"
3932 . ./myread
3933 case "$ans" in
3934 none) ccflags='';;
3935 *) ccflags="$ans";;
3936 esac
3937
3938 : the following weeds options from ccflags that are of no interest to cpp
3939 cppflags="$ccflags"
3940 case "$gccversion" in
3941 1*) cppflags="$cppflags -D__GNUC__"
3942 esac
3943 case "$mips_type" in
3944 '');;
3945 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3946 esac
3947 case "$cppflags" in
3948 '');;
3949 *)
3950         echo " "
3951         echo "Let me guess what the preprocessor flags are..." >&4
3952         set X $cppflags
3953         shift
3954         cppflags=''
3955         $cat >cpp.c <<'EOM'
3956 #define BLURFL foo
3957
3958 BLURFL xx LFRULB
3959 EOM
3960         previous=''
3961         for flag in $*
3962         do
3963                 case "$flag" in
3964                 -*) ftry="$flag";;
3965                 *) ftry="$previous $flag";;
3966                 esac
3967                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3968                         >cpp1.out 2>/dev/null && \
3969                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3970                         >cpp2.out 2>/dev/null && \
3971                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3972                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3973                 then
3974                         cppflags="$cppflags $ftry"
3975                         previous=''
3976                 else
3977                         previous="$flag"
3978                 fi
3979         done
3980         set X $cppflags
3981         shift
3982         cppflags=${1+"$@"}
3983         case "$cppflags" in
3984         *-*)  echo "They appear to be: $cppflags";;
3985         esac
3986         $rm -f cpp.c cpp?.out
3987         ;;
3988 esac
3989
3990 : flags used in final linking phase
3991 case "$ldflags" in
3992 '') if ./venix; then
3993                 dflt='-i -z'
3994         else
3995                 dflt=''
3996         fi
3997         case "$ccflags" in
3998         *-posix*) dflt="$dflt -posix" ;;
3999         esac
4000         ;;
4001 *) dflt="$ldflags";;
4002 esac
4003
4004 : Try to guess additional flags to pick up local libraries.
4005 for thislibdir in $libpth; do
4006         case " $loclibpth " in
4007         *" $thislibdir "*)
4008                 case "$dflt " in 
4009                 *"-L$thislibdir "*) ;;
4010                 *)  dflt="$dflt -L$thislibdir" ;;
4011                 esac
4012                 ;;
4013         esac
4014 done
4015
4016 case "$dflt" in
4017 '') dflt='none' ;;
4018 esac
4019
4020 $cat <<EOH
4021
4022 Your C linker may need flags.  For this question you should
4023 include -L/whatever and any other flags used by the C linker, but you
4024 should NOT include libraries like -lwhatever.
4025
4026 Make sure you include the appropriate -L/path flags if your C linker
4027 does not normally search all of the directories you specified above,
4028 namely
4029         $libpth
4030 To use no flags, specify the word "none".
4031
4032 EOH
4033
4034 rp="Any additional ld flags (NOT including libraries)?"
4035 . ./myread
4036 case "$ans" in
4037 none) ldflags='';;
4038 *) ldflags="$ans";;
4039 esac
4040 rmlist="$rmlist pdp11"
4041
4042 : coherency check
4043 echo " "
4044 echo "Checking your choice of C compiler and flags for coherency..." >&4
4045 $cat > try.c <<'EOF'
4046 #include <stdio.h>
4047 int main() { printf("Ok\n"); exit(0); }
4048 EOF
4049 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4050 shift
4051 $cat >try.msg <<'EOM'
4052 I've tried to compile and run the following simple program:
4053
4054 EOM
4055 $cat try.c >> try.msg
4056
4057 $cat >> try.msg <<EOM
4058
4059 I used the command:
4060
4061         $*
4062         ./try
4063
4064 and I got the following output:
4065
4066 EOM
4067 dflt=y
4068 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4069         if sh -c './try' >>try.msg 2>&1; then
4070                 xxx=`./try`
4071                 case "$xxx" in
4072                 "Ok") dflt=n ;;
4073                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4074                         case " $libs " in
4075                         *" -lsfio "*)
4076                                 cat >> try.msg <<'EOQS'
4077 If $libs contains -lsfio, and sfio is mis-configured, then it
4078 sometimes (apparently) runs and exits with a 0 status, but with no
4079 output!  It may have to do with sfio's use of _exit vs. exit.
4080
4081 EOQS
4082                                 rp="You have a big problem.  Shall I abort Configure"
4083                                 dflt=y
4084                                 ;;
4085                         esac
4086                         ;;
4087                 esac
4088         else
4089                 echo "The program compiled OK, but exited with status $?." >>try.msg
4090                 rp="You have a problem.  Shall I abort Configure"
4091                 dflt=y
4092         fi
4093 else
4094         echo "I can't compile the test program." >>try.msg
4095         rp="You have a BIG problem.  Shall I abort Configure"
4096         dflt=y
4097 fi
4098 case "$dflt" in
4099 y)
4100         $cat try.msg >&4
4101         case "$knowitall" in
4102         '')
4103                 echo "(The supplied flags or libraries might be incorrect.)"
4104                 ;;
4105         *) dflt=n;;
4106         esac
4107         echo " "
4108         . ./myread
4109         case "$ans" in
4110         n*|N*) ;;
4111         *)      echo "Ok.  Stopping Configure." >&4
4112                 exit 1
4113                 ;;
4114         esac
4115         ;;
4116 n) echo "OK, that should do.";;
4117 esac
4118 $rm -f try try.* core
4119
4120 : define an is-a-typedef? function
4121 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4122 case "$inclist" in
4123 "") inclist="sys/types.h";;
4124 esac;
4125 eval "varval=\$$var";
4126 case "$varval" in
4127 "")
4128         $rm -f temp.c;
4129         for inc in $inclist; do
4130                 echo "#include <$inc>" >>temp.c;
4131         done;
4132         echo "#ifdef $type" >> temp.c;
4133         echo "printf(\"We have $type\");" >> temp.c;
4134         echo "#endif" >> temp.c;
4135         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4136         if $contains $type temp.E >/dev/null 2>&1; then
4137                 eval "$var=\$type";
4138         else
4139                 eval "$var=\$def";
4140         fi;
4141         $rm -f temp.?;;
4142 *) eval "$var=\$varval";;
4143 esac'
4144
4145 : define an is-a-typedef? function that prompts if the type is not available.
4146 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4147 case "$inclist" in
4148 "") inclist="sys/types.h";;
4149 esac;
4150 eval "varval=\$$var";
4151 case "$varval" in
4152 "")
4153         $rm -f temp.c;
4154         for inc in $inclist; do
4155                 echo "#include <$inc>" >>temp.c;
4156         done;
4157         echo "#ifdef $type" >> temp.c;
4158         echo "printf(\"We have $type\");" >> temp.c;
4159         echo "#endif" >> temp.c;
4160         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4161         echo " " ;
4162         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4163         if $contains $type temp.E >/dev/null 2>&1; then
4164                 echo "$type found." >&4;
4165                 eval "$var=\$type";
4166         else
4167                 echo "$type NOT found." >&4;
4168                 dflt="$def";
4169                 . ./myread ;
4170                 eval "$var=\$ans";
4171         fi;
4172         $rm -f temp.?;;
4173 *) eval "$var=\$varval";;
4174 esac'
4175
4176 : define a shorthand compile call
4177 compile='
4178 mc_file=$1;
4179 shift;
4180 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4181 : define a shorthand compile call for compilations that should be ok.
4182 compile_ok='
4183 mc_file=$1;
4184 shift;
4185 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4186
4187 : check for lengths of integral types
4188 echo " "
4189 case "$intsize" in
4190 '')
4191         echo "Checking to see how big your integers are..." >&4
4192         $cat >intsize.c <<'EOCP'
4193 #include <stdio.h>
4194 int main()
4195 {
4196         printf("intsize=%d;\n", (int)sizeof(int));
4197         printf("longsize=%d;\n", (int)sizeof(long));
4198         printf("shortsize=%d;\n", (int)sizeof(short));
4199         exit(0);
4200 }
4201 EOCP
4202         set intsize
4203         if eval $compile_ok && ./intsize > /dev/null; then
4204                 eval `./intsize`
4205                 echo "Your integers are $intsize bytes long."
4206                 echo "Your long integers are $longsize bytes long."
4207                 echo "Your short integers are $shortsize bytes long."
4208         else
4209                 $cat >&4 <<EOM
4210 !
4211 Help! I can't compile and run the intsize test program: please enlighten me!
4212 (This is probably a misconfiguration in your system or libraries, and
4213 you really ought to fix it.  Still, I'll try anyway.)
4214 !
4215 EOM
4216                 dflt=4
4217                 rp="What is the size of an integer (in bytes)?"
4218                 . ./myread
4219                 intsize="$ans"
4220                 dflt=$intsize
4221                 rp="What is the size of a long integer (in bytes)?"
4222                 . ./myread
4223                 longsize="$ans"
4224                 dflt=2
4225                 rp="What is the size of a short integer (in bytes)?"
4226                 . ./myread
4227                 shortsize="$ans"
4228         fi
4229         ;;
4230 esac
4231 $rm -f intsize intsize.*
4232
4233 : see what type lseek is declared as in the kernel
4234 rp="What is the type used for lseek's offset on this system?"
4235 set off_t lseektype long stdio.h sys/types.h
4236 eval $typedef_ask
4237
4238 echo " "
4239 echo "Checking to see how big your file offsets are..." >&4
4240 $cat >try.c <<EOCP
4241 #include <sys/types.h>
4242 #include <stdio.h>
4243 int main()
4244 {
4245     printf("%d\n", (int)sizeof($lseektype));
4246     return(0); 
4247 }
4248 EOCP
4249 set try
4250 if eval $compile_ok; then
4251         lseeksize=`./try`
4252         echo "Your file offsets are $lseeksize bytes long."
4253 else
4254         dflt=$longsize
4255         echo " "
4256         echo "(I can't seem to compile the test program.  Guessing...)"
4257         rp="What is the size of your file offsets (in bytes)?"
4258         . ./myread
4259         lseeksize="$ans"
4260 fi
4261 $rm -f try.c try
4262
4263 : see what type file positions are declared as in the library
4264 rp="What is the type for file position used by fsetpos()?"
4265 set fpos_t fpostype long stdio.h sys/types.h
4266 eval $typedef_ask
4267
4268 echo " "
4269 case "$fpostype" in
4270 *_t) zzz="$fpostype"    ;;
4271 *)   zzz="fpos_t"       ;;
4272 esac
4273 echo "Checking the size of $zzz..." >&4 
4274 cat > try.c <<EOCP
4275 #include <sys/types.h>
4276 #include <stdio.h>
4277 int main() {
4278     printf("%d\n", (int)sizeof($fpostype));
4279     exit(0);
4280 }
4281 EOCP
4282 set try
4283 if eval $compile_ok; then
4284         yyy=`./try`
4285         case "$yyy" in
4286         '')     fpossize=4
4287                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4288                 ;;
4289         *)      fpossize=$yyy
4290                 echo "Your $zzz is $fpossize bytes long."
4291                 ;;
4292         esac
4293 else
4294         dflt="$longsize"
4295         echo " " >&4
4296         echo "(I can't compile the test program.  Guessing...)" >&4
4297         rp="What is the size of your file positions (in bytes)?"
4298         . ./myread
4299         fpossize="$ans"
4300 fi
4301
4302
4303
4304 # Backward compatibility (uselfs is deprecated).
4305 case "$uselfs" in
4306 "$define"|true|[yY]*)
4307         cat <<EOM >&4
4308
4309 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4310 EOM
4311         uselargefiles="$define"
4312         ;;
4313 esac                          
4314
4315 case "$lseeksize:$fpossize" in
4316 8:8) cat <<EOM
4317
4318 You can have files larger than 2 gigabytes.
4319 EOM
4320    val="$define" ;;
4321 *)    case "$uselargefiles" in
4322    "$undef"|false|[nN]*) dflt='n' ;;
4323    *)   dflt='y' ;;
4324    esac
4325    cat <<EOM
4326
4327 Perl can be built to understand large files (files larger than 2 gigabytes)
4328 on some systems.  To do so, Configure can be run with -Duselargefiles.
4329
4330 If this doesn't make any sense to you, just accept the default '$dflt'.
4331 EOM
4332    rp='Try to understand large files, if available?'
4333    . ./myread
4334    case "$ans" in
4335    y|Y)         val="$define" ;;
4336    *)           val="$undef"  ;;
4337    esac
4338    ;;
4339 esac
4340 set uselargefiles
4341 eval $setvar
4342 case "$uselargefiles" in
4343 "$define")
4344 : Look for a hint-file generated 'call-back-unit'.  If the
4345 : user has specified that a large files perl is to be built,
4346 : we may need to set or change some other defaults.
4347         if $test -f uselargefiles.cbu; then
4348                 echo "Your platform has some specific hints for large file builds, using them..."
4349                 . ./uselargefiles.cbu
4350                 echo " "
4351                 echo "Rechecking to see how big your file offsets are..." >&4
4352                 $cat >try.c <<EOCP
4353 #include <sys/types.h>
4354 #include <stdio.h>
4355 int main()
4356 {
4357     printf("%d\n", (int)sizeof($lseektype));
4358     return(0); 
4359 }
4360 EOCP
4361                 set try
4362                 if eval $compile_ok; then
4363                         lseeksize=`./try`
4364                         $echo "Your file offsets are now $lseeksize bytes long."
4365                 else
4366                         dflt="$lseeksize"
4367                         echo " "
4368                         echo "(I can't seem to compile the test program.  Guessing...)"
4369                         rp="What is the size of your file offsets (in bytes)?"
4370                         . ./myread
4371                         lseeksize="$ans"
4372                 fi
4373                 case "$fpostype" in
4374                 *_t) zzz="$fpostype"    ;;
4375                 *)   zzz="fpos_t"       ;;
4376                 esac
4377                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4378                 $cat > try.c <<EOCP
4379 #include <sys/types.h>
4380 #include <stdio.h>
4381 int main() {
4382     printf("%d\n", (int)sizeof($fpostype));
4383     exit(0);
4384 }
4385 EOCP
4386                 set try
4387                 if eval $compile_ok; then
4388                         yyy=`./try`
4389                         dflt="$lseeksize"
4390                         case "$yyy" in
4391                         '')     echo " "
4392                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4393                                 ;;
4394                         *)      fpossize=$yyy
4395                                 echo " $fpossize bytes." >&4
4396                                 ;;
4397                         esac
4398                 else
4399                         dflt="$fpossize"
4400                         echo " "
4401                         echo "(I can't compile the test program.  Guessing...)" >&4
4402                         rp="What is the size of your file positions (in bytes)?"
4403                         . ./myread
4404                         fpossize="$ans"
4405                 fi
4406                 $rm -f try.c try
4407         fi
4408         ;;
4409 esac
4410
4411
4412 case "$usemorebits" in
4413 "$define"|true|[yY]*)
4414         use64bitint="$define"
4415         uselongdouble="$define"
4416         usemorebits="$define"
4417         ;;
4418 *)      usemorebits="$undef"
4419         ;;
4420 esac
4421
4422
4423 case "$uselonglong" in
4424 "$define"|true|[yY]*)
4425         cat <<EOM >&4
4426
4427 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4428 EOM
4429         use64bitint="$define"
4430         ;;
4431 esac                          
4432 case "$use64bits" in
4433 "$define"|true|[yY]*)
4434         cat <<EOM >&4
4435
4436 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4437 EOM
4438         use64bitint="$define"
4439         ;;
4440 esac                          
4441 case "$use64bitints" in
4442 "$define"|true|[yY]*)
4443         cat <<EOM >&4
4444
4445 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4446 EOM
4447         use64bitint="$define"
4448         ;;
4449 esac                          
4450 case "$use64bitsint" in
4451 "$define"|true|[yY]*)
4452         cat <<EOM >&4
4453
4454 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4455 EOM
4456         use64bitint="$define"
4457         ;;
4458 esac                          
4459 case "$uselonglongs" in
4460 "$define"|true|[yY]*)
4461         cat <<EOM >&4
4462
4463 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4464 EOM
4465         use64bitint="$define"
4466         ;;
4467 esac                          
4468 case "$use64bitsall" in
4469 "$define"|true|[yY]*)
4470         cat <<EOM >&4
4471
4472 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4473 EOM
4474         use64bitall="$define"
4475         ;;
4476 esac                          
4477
4478 case "$ccflags" in
4479 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4480 esac
4481 case "$use64bitall" in
4482 "$define"|true|[yY]*) use64bitint="$define" ;;
4483 esac
4484
4485 case "$longsize" in
4486 8) cat <<EOM
4487
4488 You have natively 64-bit long integers.
4489 EOM
4490    val="$define"
4491    ;;
4492 *) case "$use64bitint" in
4493    "$define"|true|[yY]*) dflt='y';;
4494    *) dflt='n';;
4495    esac
4496    cat <<EOM
4497
4498 Perl can be built to take advantage of 64-bit integer types
4499 on some systems.  To do so, Configure can be run with -Duse64bitint.
4500 Choosing this option will most probably introduce binary incompatibilities.
4501
4502 If this doesn't make any sense to you, just accept the default '$dflt'.
4503 EOM
4504    rp='Try to use 64-bit integers, if available?'
4505    . ./myread
4506    case "$ans" in
4507    [yY]*) val="$define" ;;
4508    *)     val="$undef"  ;;
4509    esac
4510    ;;
4511 esac
4512 set use64bitint
4513 eval $setvar
4514
4515 case "$use64bitall" in
4516 "$define"|true|[yY]*) dflt='y' ;;
4517 *) case "$longsize" in
4518    8) dflt='y' ;;
4519    *) dflt='n' ;;
4520    esac
4521    ;;
4522 esac    
4523 cat <<EOM
4524
4525 You may also choose to try maximal 64-bitness.  It means using as much
4526 64-bitness as possible on the platform.  This in turn means even more
4527 binary incompatibilities.  On the other hand, your platform may not
4528 have any more 64-bitness available than what you already have chosen.
4529
4530 If this doesn't make any sense to you, just accept the default '$dflt'.
4531 EOM
4532 rp='Try to use maximal 64-bit support, if available?'
4533 . ./myread
4534 case "$ans" in
4535 [yY]*) val="$define" ;;
4536 *)     val="$undef"  ;;
4537 esac
4538 set use64bitall
4539 eval $setvar
4540 case "$use64bitall" in
4541 "$define")
4542         case "$use64bitint" in
4543         "$undef")
4544                 cat <<EOM
4545
4546 Since you have chosen a maximally 64-bit build, I'm also turning on
4547 the use of 64-bit integers.
4548 EOM
4549                 use64bitint="$define" ;;
4550         esac
4551         ;;
4552 esac
4553
4554 case "$use64bitint" in
4555 "$define"|true|[yY]*)
4556 : Look for a hint-file generated 'call-back-unit'.  If the
4557 : user has specified that a 64-bit perl is to be built,
4558 : we may need to set or change some other defaults.
4559         if $test -f use64bitint.cbu; then
4560                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4561                 . ./use64bitint.cbu
4562         fi
4563         case "$longsize" in
4564         4) case "$archname64" in
4565            '') archname64=64int ;;
4566            esac
4567            ;;
4568         esac
4569         ;;
4570 esac
4571
4572 case "$use64bitall" in
4573 "$define"|true|[yY]*)
4574 : Look for a hint-file generated 'call-back-unit'.  If the
4575 : user has specified that a maximally 64-bit perl is to be built,
4576 : we may need to set or change some other defaults.
4577         if $test -f use64bitall.cbu; then
4578                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4579                 . ./use64bitall.cbu
4580         fi
4581         case "$longsize" in
4582         4) case "$archname64" in
4583            ''|64int) archname64=64all ;;
4584            esac
4585            ;;
4586         esac
4587         ;;
4588 esac
4589
4590 : determine the architecture name
4591 echo " "
4592 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4593         tarch=`arch`"-$osname"
4594 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4595         if uname -m > tmparch 2>&1 ; then
4596                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4597                         -e 's/$/'"-$osname/" tmparch`
4598         else
4599                 tarch="$osname"
4600         fi
4601         $rm -f tmparch
4602 else
4603         tarch="$osname"
4604 fi
4605 case "$myarchname" in
4606 ''|"$tarch") ;;
4607 *)
4608         echo "(Your architecture name used to be $myarchname.)"
4609         archname=''
4610         ;;
4611 esac
4612 myarchname="$tarch"
4613 case "$archname" in
4614 '') dflt="$tarch";;
4615 *) dflt="$archname";;
4616 esac
4617 rp='What is your architecture name'
4618 . ./myread
4619 archname="$ans"
4620 case "$usethreads" in
4621 $define)
4622         echo "Threads selected." >&4
4623         case "$archname" in
4624         *-thread*) echo "...and architecture name already has -thread." >&4
4625                 ;;
4626         *)      archname="$archname-thread"
4627                 echo "...setting architecture name to $archname." >&4
4628                 ;;
4629         esac
4630         ;;
4631 esac
4632 case "$usemultiplicity" in
4633 $define)
4634         echo "Multiplicity selected." >&4
4635         case "$archname" in
4636         *-multi*) echo "...and architecture name already has -multi." >&4
4637                 ;;
4638         *)      archname="$archname-multi"
4639                 echo "...setting architecture name to $archname." >&4
4640                 ;;
4641         esac
4642         ;;
4643 esac
4644 case "$use64bitint" in
4645 $define)
4646         case "$archname64" in
4647         '')
4648                 ;;
4649         *)
4650                 case "$archname" in
4651                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4652                         ;;
4653                 *)      archname="$archname-$archname64"
4654                         echo "...setting architecture name to $archname." >&4
4655                         ;;
4656                 esac
4657                 ;;
4658         esac
4659 esac
4660
4661 : determine root of directory hierarchy where package will be installed.
4662 case "$prefix" in
4663 '')
4664         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4665         ;;
4666 *)
4667         dflt="$prefix"
4668         ;;
4669 esac
4670 $cat <<EOM
4671
4672 By default, $package will be installed in $dflt/bin, manual pages
4673 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4674 installation directories. Typically this is something like /usr/local.
4675 If you wish to have binaries under /usr/bin but other parts of the
4676 installation under /usr/local, that's ok: you will be prompted
4677 separately for each of the installation directories, the prefix being
4678 only used to set the defaults.
4679
4680 EOM
4681 fn=d~
4682 rp='Installation prefix to use?'
4683 . ./getfile
4684 oldprefix=''
4685 case "$prefix" in
4686 '') ;;
4687 *)
4688         case "$ans" in
4689         "$prefix") ;;
4690         *) oldprefix="$prefix";;
4691         esac
4692         ;;
4693 esac
4694 prefix="$ans"
4695 prefixexp="$ansexp"
4696
4697 : is AFS running?
4698 echo " "
4699 case "$afs" in
4700 $define|true)   afs=true ;;
4701 $undef|false)   afs=false ;;
4702 *)      if test -d /afs; then
4703                 afs=true
4704         else
4705                 afs=false
4706         fi
4707         ;;
4708 esac
4709 if $afs; then
4710         echo "AFS may be running... I'll be extra cautious then..." >&4
4711 else
4712         echo "AFS does not seem to be running..." >&4
4713 fi
4714
4715 : determine installation prefix for where package is to be installed.
4716 if $afs; then 
4717 $cat <<EOM
4718
4719 Since you are running AFS, I need to distinguish the directory in which
4720 files will reside from the directory in which they are installed (and from
4721 which they are presumably copied to the former directory by occult means).
4722
4723 EOM
4724         case "$installprefix" in
4725         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4726         *) dflt="$installprefix";;
4727         esac
4728 else
4729 $cat <<EOM
4730
4731 In some special cases, particularly when building $package for distribution,
4732 it is convenient to distinguish between the directory in which files should 
4733 be installed from the directory ($prefix) in which they 
4734 will eventually reside.  For most users, these two directories are the same.
4735
4736 EOM
4737         case "$installprefix" in
4738         '') dflt=$prefix ;;
4739         *) dflt=$installprefix;;
4740         esac
4741 fi
4742 fn=d~
4743 rp='What installation prefix should I use for installing files?'
4744 . ./getfile
4745 installprefix="$ans"
4746 installprefixexp="$ansexp"
4747
4748 : set the prefixit variable, to compute a suitable default value
4749 prefixit='case "$3" in
4750 ""|none)
4751         case "$oldprefix" in
4752         "") eval "$1=\"\$$2\"";;
4753         *)
4754                 case "$3" in
4755                 "") eval "$1=";;
4756                 none)
4757                         eval "tp=\"\$$2\"";
4758                         case "$tp" in
4759                         ""|" ") eval "$1=\"\$$2\"";;
4760                         *) eval "$1=";;
4761                         esac;;
4762                 esac;;
4763         esac;;
4764 *)
4765         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4766         case "$tp" in
4767         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4768         /*-$oldprefix/*|\~*-$oldprefix/*)
4769                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4770         *) eval "$1=\"\$$2\"";;
4771         esac;;
4772 esac'
4773
4774
4775 : get the patchlevel
4776 echo " "
4777 echo "Getting the current patchlevel..." >&4
4778 if $test -r $rsrc/patchlevel.h;then
4779         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4780         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4781         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4782         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4783         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4784         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4785 else
4786         revision=0
4787         patchlevel=0
4788         subversion=0
4789         api_revision=0
4790         api_version=0
4791         api_subversion=0
4792 fi
4793 $echo $n "(You have $package revision $revision" $c
4794 $echo $n " patchlevel $patchlevel" $c
4795 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4796 echo ".)"
4797 case "$osname" in
4798 dos|vms)
4799         : XXX Should be a Configure test for double-dots in filenames.
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 *)
4806         version=`echo $revision $patchlevel $subversion | \
4807                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4808         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4809                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4810         ;;
4811 esac
4812 : Special case the 5.005_xx maintenance series, which used 5.005
4813 : without any subversion label as a subdirectory in $sitelib
4814 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4815         api_versionstring='5.005'
4816 fi
4817
4818 : determine installation style
4819 : For now, try to deduce it from prefix unless it is already set.
4820 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4821 case "$installstyle" in
4822 '')     case "$prefix" in
4823                 *perl*) dflt='lib';;
4824                 *) dflt='lib/perl5' ;;
4825         esac
4826         ;;
4827 *)      dflt="$installstyle" ;;
4828 esac
4829 : Probably not worth prompting for this since we prompt for all
4830 : the directories individually, and the prompt would be too long and
4831 : confusing anyway.
4832 installstyle=$dflt
4833
4834 : determine where private library files go
4835 : Usual default is /usr/local/lib/perl5/$version.
4836 : Also allow things like /opt/perl/lib/$version, since 
4837 : /opt/perl/lib/perl5... would be redundant.
4838 : The default "style" setting is made in installstyle.U
4839 case "$installstyle" in
4840 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4841 *)       set dflt privlib lib/$version ;;
4842 esac
4843 eval $prefixit
4844 $cat <<EOM
4845
4846 There are some auxiliary files for $package that need to be put into a
4847 private library directory that is accessible by everyone.
4848
4849 EOM
4850 fn=d~+
4851 rp='Pathname where the private library files will reside?'
4852 . ./getfile
4853 privlib="$ans"
4854 privlibexp="$ansexp"
4855 : Change installation prefix, if necessary.
4856 if $test X"$prefix" != X"$installprefix"; then
4857         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4858 else
4859         installprivlib="$privlibexp"
4860 fi
4861
4862 : set the prefixup variable, to restore leading tilda escape
4863 prefixup='case "$prefixexp" in
4864 "$prefix") ;;
4865 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4866 esac'
4867
4868 : determine where public architecture dependent libraries go
4869 set archlib archlib
4870 eval $prefixit
4871 : privlib default is /usr/local/lib/$package/$version
4872 : archlib default is /usr/local/lib/$package/$version/$archname
4873 : privlib may have an optional trailing /share.
4874 tdflt=`echo $privlib | $sed 's,/share$,,'`
4875 tdflt=$tdflt/$archname
4876 case "$archlib" in
4877 '')     dflt=$tdflt
4878         ;;
4879 *)      dflt="$archlib"
4880     ;;
4881 esac
4882 $cat <<EOM
4883
4884 $spackage contains architecture-dependent library files.  If you are
4885 sharing libraries in a heterogeneous environment, you might store
4886 these files in a separate location.  Otherwise, you can just include
4887 them with the rest of the public library files.
4888
4889 EOM
4890 fn=d+~
4891 rp='Where do you want to put the public architecture-dependent libraries?'
4892 . ./getfile
4893 archlib="$ans"
4894 archlibexp="$ansexp"
4895 if $test X"$archlib" = X"$privlib"; then
4896         d_archlib="$undef"
4897 else
4898         d_archlib="$define"
4899 fi
4900 : Change installation prefix, if necessary.
4901 if $test X"$prefix" != X"$installprefix"; then
4902         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4903 else
4904         installarchlib="$archlibexp"
4905 fi
4906
4907
4908 : Binary compatibility with 5.005 is not possible for builds
4909 : with advanced features
4910 case "$usethreads$usemultiplicity" in
4911 *define*)
4912         bincompat5005="$undef"
4913         d_bincompat5005="$undef"
4914         ;;
4915 *)      $cat <<EOM
4916
4917 Perl 5.006 can be compiled for binary compatibility with 5.005.
4918 If you decide to do so, you will be able to continue using most
4919 of the extensions that were compiled for Perl 5.005.
4920
4921 EOM
4922         case "$bincompat5005$d_bincompat5005" in
4923         *"$undef"*) dflt=n ;;
4924         *) dflt=y ;;
4925         esac
4926         rp='Binary compatibility with Perl 5.005?'
4927         . ./myread
4928         case "$ans" in
4929         y*) val="$define" ;;
4930         *)  val="$undef" ;;
4931         esac
4932         set d_bincompat5005
4933         eval $setvar
4934         case "$d_bincompat5005" in
4935         "$define")
4936                 bincompat5005="$define"
4937                 ;;
4938         *)      bincompat5005="$undef"
4939                 d_bincompat5005="$undef"
4940                 ;;
4941         esac
4942         ;;
4943 esac
4944
4945
4946 : see if setuid scripts can be secure
4947 $cat <<EOM
4948
4949 Some kernels have a bug that prevents setuid #! scripts from being
4950 secure.  Some sites have disabled setuid #! scripts because of this.
4951
4952 First let's decide if your kernel supports secure setuid #! scripts.
4953 (If setuid #! scripts would be secure but have been disabled anyway,
4954 don't say that they are secure if asked.)
4955
4956 EOM
4957
4958 val="$undef"
4959 if $test -d /dev/fd; then
4960         echo "#!$ls" >reflect
4961         chmod +x,u+s reflect
4962         ./reflect >flect 2>&1
4963         if $contains "/dev/fd" flect >/dev/null; then
4964                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4965                 val="$define"
4966         else
4967                 $cat <<EOM
4968 If you are not sure if they are secure, I can check but I'll need a
4969 username and password different from the one you are using right now.
4970 If you don't have such a username or don't want me to test, simply
4971 enter 'none'.
4972
4973 EOM
4974                 rp='Other username to test security of setuid scripts with?'
4975                 dflt='none'
4976                 . ./myread
4977                 case "$ans" in
4978                 n|none)
4979                         case "$d_suidsafe" in
4980                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
4981                                 dflt=n;;
4982                         "$undef")
4983                                 echo "Well, the $hint value is *not* secure." >&4
4984                                 dflt=n;;
4985                         *)      echo "Well, the $hint value *is* secure." >&4
4986                                 dflt=y;;
4987                         esac
4988                         ;;
4989                 *)
4990                         $rm -f reflect flect
4991                         echo "#!$ls" >reflect
4992                         chmod +x,u+s reflect
4993                         echo >flect
4994                         chmod a+w flect
4995                         echo '"su" will (probably) prompt you for '"$ans's password."
4996                         su $ans -c './reflect >flect'
4997                         if $contains "/dev/fd" flect >/dev/null; then
4998                                 echo "Okay, it looks like setuid scripts are secure." >&4
4999                                 dflt=y
5000                         else
5001                                 echo "I don't think setuid scripts are secure." >&4
5002                                 dflt=n
5003                         fi
5004                         ;;
5005                 esac
5006                 rp='Does your kernel have *secure* setuid scripts?'
5007                 . ./myread
5008                 case "$ans" in
5009                 [yY]*)  val="$define";;
5010                 *)      val="$undef";;
5011                 esac
5012         fi
5013 else
5014         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5015         echo "(That's for file descriptors, not floppy disks.)"
5016         val="$undef"
5017 fi
5018 set d_suidsafe
5019 eval $setvar
5020
5021 $rm -f reflect flect
5022
5023 : now see if they want to do setuid emulation
5024 echo " "
5025 val="$undef"
5026 case "$d_suidsafe" in
5027 "$define")
5028         val="$undef"
5029         echo "No need to emulate SUID scripts since they are secure here." >& 4
5030         ;;
5031 *)
5032         $cat <<EOM
5033 Some systems have disabled setuid scripts, especially systems where
5034 setuid scripts cannot be secure.  On systems where setuid scripts have
5035 been disabled, the setuid/setgid bits on scripts are currently
5036 useless.  It is possible for $package to detect those bits and emulate
5037 setuid/setgid in a secure fashion.  This emulation will only work if
5038 setuid scripts have been disabled in your kernel.
5039
5040 EOM
5041         case "$d_dosuid" in
5042         "$define") dflt=y ;;
5043         *) dflt=n ;;
5044         esac
5045         rp="Do you want to do setuid/setgid emulation?"
5046         . ./myread
5047         case "$ans" in
5048         [yY]*)  val="$define";;
5049         *)      val="$undef";;
5050         esac
5051         ;;
5052 esac
5053 set d_dosuid
5054 eval $setvar
5055
5056 : determine filename position in cpp output
5057 echo " "
5058 echo "Computing filename position in cpp output for #include directives..." >&4
5059 echo '#include <stdio.h>' > foo.c
5060 $cat >fieldn <<EOF
5061 $startsh
5062 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5063 $grep '^[       ]*#.*stdio\.h' | \
5064 while read cline; do
5065         pos=1
5066         set \$cline
5067         while $test \$# -gt 0; do
5068                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5069                         echo "\$pos"
5070                         exit 0
5071                 fi
5072                 shift
5073                 pos=\`expr \$pos + 1\`
5074         done
5075 done
5076 EOF
5077 chmod +x fieldn
5078 fieldn=`./fieldn`
5079 $rm -f foo.c fieldn
5080 case $fieldn in
5081 '') pos='???';;
5082 1) pos=first;;
5083 2) pos=second;;
5084 3) pos=third;;
5085 *) pos="${fieldn}th";;
5086 esac
5087 echo "Your cpp writes the filename in the $pos field of the line."
5088
5089 : locate header file
5090 $cat >findhdr <<EOF
5091 $startsh
5092 wanted=\$1
5093 name=''
5094 for usrincdir in $usrinc
5095 do
5096         if test -f \$usrincdir/\$wanted; then
5097                 echo "\$usrincdir/\$wanted"
5098                 exit 0
5099         fi
5100 done
5101 awkprg='{ print \$$fieldn }'
5102 echo "#include <\$wanted>" > foo\$\$.c
5103 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5104 $grep "^[       ]*#.*\$wanted" | \
5105 while read cline; do
5106         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5107         case "\$name" in
5108         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5109         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5110         *) exit 2;;
5111         esac;
5112 done;
5113 #
5114 # status = 0: grep returned 0 lines, case statement not executed
5115 # status = 1: headerfile found
5116 # status = 2: while loop executed, no headerfile found
5117 #
5118 status=\$?
5119 $rm -f foo\$\$.c;
5120 if test \$status -eq 1; then
5121         exit 0;
5122 fi
5123 exit 1
5124 EOF
5125 chmod +x findhdr
5126
5127 : define an alternate in-header-list? function
5128 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5129 cont=true; xxf="echo \"<\$1> found.\" >&4";
5130 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5131 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5132 esac;
5133 case $# in 4) instead=instead;; *) instead="at last";; esac;
5134 while $test "$cont"; do
5135         xxx=`./findhdr $1`
5136         var=$2; eval "was=\$$2";
5137         if $test "$xxx" && $test -r "$xxx";
5138         then eval $xxf;
5139         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5140                 cont="";
5141         else eval $xxnf;
5142         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5143         set $yyy; shift; shift; yyy=$@;
5144         case $# in 0) cont="";;
5145         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5146                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5147         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5148                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5149         esac;
5150 done;
5151 while $test "$yyy";
5152 do set $yyy; var=$2; eval "was=\$$2";
5153         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5154         set $yyy; shift; shift; yyy=$@;
5155 done'
5156
5157 : see if this is a malloc.h system
5158 set malloc.h i_malloc
5159 eval $inhdr
5160
5161 : see if stdlib is available
5162 set stdlib.h i_stdlib
5163 eval $inhdr
5164
5165 : determine which malloc to compile in
5166 echo " "
5167 case "$usemymalloc" in
5168 ''|[yY]*|true|$define)  dflt='y' ;;
5169 *)      dflt='n' ;;
5170 esac
5171 rp="Do you wish to attempt to use the malloc that comes with $package?"
5172 . ./myread
5173 usemymalloc="$ans"
5174 case "$ans" in
5175 y*|true)
5176         usemymalloc='y'
5177         mallocsrc='malloc.c'
5178         mallocobj="malloc$_o"
5179         d_mymalloc="$define"
5180         case "$libs" in
5181         *-lmalloc*)
5182                 : Remove malloc from list of libraries to use
5183                 echo "Removing unneeded -lmalloc from library list" >&4
5184                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5185                 shift
5186                 libs="$*"
5187                 echo "libs = $libs" >&4
5188                 ;;
5189         esac
5190         ;;
5191 *)
5192         usemymalloc='n'
5193         mallocsrc=''
5194         mallocobj=''
5195         d_mymalloc="$undef"
5196         ;;
5197 esac
5198
5199 : compute the return types of malloc and free
5200 echo " "
5201 $cat >malloc.c <<END
5202 #$i_malloc I_MALLOC
5203 #$i_stdlib I_STDLIB
5204 #include <stdio.h>
5205 #include <sys/types.h>
5206 #ifdef I_MALLOC
5207 #include <malloc.h>
5208 #endif
5209 #ifdef I_STDLIB
5210 #include <stdlib.h>
5211 #endif
5212 #ifdef TRY_MALLOC
5213 void *malloc();
5214 #endif
5215 #ifdef TRY_FREE
5216 void free();
5217 #endif
5218 END
5219 case "$malloctype" in
5220 '')
5221         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5222                 malloctype='void *'
5223         else
5224                 malloctype='char *'
5225         fi
5226         ;;
5227 esac
5228 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5229
5230 case "$freetype" in
5231 '')
5232         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5233                 freetype='void'
5234         else
5235                 freetype='int'
5236         fi
5237         ;;
5238 esac
5239 echo "Your system uses $freetype free(), it would seem." >&4
5240 $rm -f malloc.[co]
5241 $cat <<EOM
5242
5243 The installation process will also create a directory for
5244 vendor-supplied add-ons.  Vendors who supply perl with their system
5245 may find it convenient to place all vendor-supplied files in this
5246 directory rather than in the main distribution directory.  This will
5247 ease upgrades between binary-compatible maintenance versions of perl.
5248
5249 Of course you may also use these directories in whatever way you see
5250 fit.  For example, you might use them to access modules shared over a
5251 company-wide network.
5252
5253 The default answer should be fine for most people.
5254 This causes further questions about vendor add-ons to be skipped
5255 and no vendor-specific directories will be configured for perl.
5256
5257 EOM
5258 rp='Do you want to configure vendor-specific add-on directories?'
5259 case "$usevendorprefix" in
5260 define|true|[yY]*) dflt=y ;;
5261 *)      : User may have set vendorprefix directly on Configure command line.
5262         case "$vendorprefix" in
5263         ''|' ') dflt=n ;;
5264         *)      dflt=y ;;
5265         esac
5266         ;;
5267 esac
5268 . ./myread
5269 case "$ans" in
5270 [yY]*)  fn=d~+
5271         rp='Installation prefix to use for vendor-supplied add-ons?'
5272         case "$vendorprefix" in
5273         '') dflt='' ;;
5274         *)  dflt=$vendorprefix ;;
5275         esac
5276         . ./getfile
5277         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5278         oldvendorprefix=''
5279         case "$vendorprefix" in
5280         '') ;;
5281         *)      case "$ans" in
5282                 "$prefix") ;;
5283                 *) oldvendorprefix="$prefix";;
5284                 esac
5285                 ;;
5286         esac
5287         usevendorprefix="$define"
5288         vendorprefix="$ans"
5289         vendorprefixexp="$ansexp"
5290         ;;
5291 *)      usevendorprefix="$undef"
5292         vendorprefix=''
5293         vendorprefixexp=''
5294         ;;
5295 esac
5296
5297 case "$vendorprefix" in
5298 '')     d_vendorlib="$undef"
5299         vendorlib=''
5300         vendorlibexp=''
5301         ;;
5302 *)      d_vendorlib="$define"
5303         : determine where vendor-supplied modules go.
5304         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5305         case "$vendorlib" in
5306         '')
5307                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5308                 case "$installstyle" in
5309                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5310                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5311                 esac
5312                 ;;
5313         *)      dflt="$vendorlib"
5314                 ;;
5315         esac
5316         fn=d~+
5317         rp='Pathname for the vendor-supplied library files?'
5318         . ./getfile
5319         vendorlib="$ans"
5320         vendorlibexp="$ansexp"
5321         ;;
5322 esac
5323 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
5324 : Change installation prefix, if necessary.
5325 if $test X"$prefix" != X"$installprefix"; then
5326         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5327 else
5328         installvendorlib="$vendorlibexp"
5329 fi
5330
5331 case "$vendorprefix" in
5332 '')     d_vendorarch="$undef"
5333         vendorarch=''
5334         vendorarchexp=''
5335         ;;
5336 *)      d_vendorarch="$define"
5337         : determine where vendor-supplied architecture-dependent libraries go.
5338         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
5339         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
5340         : vendorlib may have an optional trailing /share.
5341         case "$vendorarch" in
5342         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
5343                 dflt="$dflt/$archname"
5344                 ;;
5345         *)      dflt="$vendorarch" ;;
5346         esac
5347         fn=d~+
5348         rp='Pathname for vendor-supplied architecture-dependent files?'
5349         . ./getfile
5350         vendorarch="$ans"
5351         vendorarchexp="$ansexp"
5352         ;;
5353 esac
5354 : Change installation prefix, if necessary.
5355 if $test X"$prefix" != X"$installprefix"; then
5356         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
5357 else
5358         installvendorarch="$vendorarchexp"
5359 fi
5360
5361 : Cruising for prototypes
5362 echo " "
5363 echo "Checking out function prototypes..." >&4
5364 $cat >prototype.c <<'EOCP'
5365 int main(int argc, char *argv[]) {
5366         exit(0);}
5367 EOCP
5368 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5369         echo "Your C compiler appears to support function prototypes."
5370         val="$define"
5371 else
5372         echo "Your C compiler doesn't seem to understand function prototypes."
5373         val="$undef"
5374 fi
5375 set prototype
5376 eval $setvar
5377 $rm -f prototype*
5378
5379 case "$prototype" in
5380 "$define") ;;
5381 *)      ansi2knr='ansi2knr'
5382         echo " "
5383         cat <<EOM >&4
5384
5385 $me:  FATAL ERROR:
5386 This version of $package can only be compiled by a compiler that 
5387 understands function prototypes.  Unfortunately, your C compiler 
5388         $cc $ccflags
5389 doesn't seem to understand them.  Sorry about that.
5390
5391 If GNU cc is available for your system, perhaps you could try that instead.  
5392
5393 Eventually, we hope to support building Perl with pre-ANSI compilers.
5394 If you would like to help in that effort, please contact <perlbug@perl.org>.
5395
5396 Aborting Configure now.
5397 EOM
5398         exit 2
5399         ;;
5400 esac
5401
5402 : determine where public executables go
5403 echo " "
5404 set dflt bin bin
5405 eval $prefixit
5406 fn=d~
5407 rp='Pathname where the public executables will reside?'
5408 . ./getfile
5409 if $test "X$ansexp" != "X$binexp"; then
5410         installbin=''
5411 fi
5412 bin="$ans"
5413 binexp="$ansexp"
5414 : Change installation prefix, if necessary.
5415 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5416 if $test X"$prefix" != X"$installprefix"; then
5417         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5418 else
5419         installbin="$binexp"
5420 fi
5421
5422 : Find perl5.005 or later.
5423 echo "Looking for a previously installed perl5.005 or later... "
5424 case "$perl5" in
5425 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
5426                 : Check if this perl is recent and can load a simple module
5427                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5428                         perl5=$tdir/perl
5429                         break;
5430                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5431                         perl5=$tdir/perl
5432                         break;
5433                 fi
5434         done
5435         ;;
5436 *)      perl5="$perl5"
5437         ;;
5438 esac
5439 case "$perl5" in
5440 '')     echo "None found.  That's ok.";;
5441 *)      echo "Using $perl5." ;;
5442 esac
5443
5444 $cat <<EOM
5445
5446 After $package is installed, you may wish to install various
5447 add-on modules and utilities.  Typically, these add-ons will
5448 be installed under $prefix with the rest
5449 of this package.  However, you may wish to install such add-ons
5450 elsewhere under a different prefix.
5451
5452 If you do not wish to put everything under a single prefix, that's
5453 ok.  You will be prompted for the individual locations; this siteprefix
5454 is only used to suggest the defaults.
5455
5456 The default should be fine for most people.
5457
5458 EOM
5459 fn=d~+
5460 rp='Installation prefix to use for add-on modules and utilities?'
5461 : XXX Here might be another good place for an installstyle setting.
5462 case "$siteprefix" in
5463 '') dflt=$prefix ;;
5464 *)  dflt=$siteprefix ;;
5465 esac
5466 . ./getfile
5467 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5468 oldsiteprefix=''
5469 case "$siteprefix" in
5470 '') ;;
5471 *)      case "$ans" in
5472         "$prefix") ;;
5473         *) oldsiteprefix="$prefix";;
5474         esac
5475         ;;
5476 esac
5477 siteprefix="$ans"
5478 siteprefixexp="$ansexp"
5479
5480 : determine where site specific libraries go.
5481 : Usual default is /usr/local/lib/perl5/site_perl/$version
5482 : The default "style" setting is made in installstyle.U
5483 : XXX No longer works with Prefixit stuff.
5484 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5485 case "$sitelib" in
5486 '') case "$installstyle" in
5487         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5488         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5489         esac
5490         ;;
5491 *)      dflt="$sitelib"
5492         ;;
5493 esac
5494 $cat <<EOM
5495
5496 The installation process will create a directory for
5497 site-specific extensions and modules.  Most users find it convenient
5498 to place all site-specific files in this directory rather than in the
5499 main distribution directory.
5500
5501 EOM
5502 fn=d~+
5503 rp='Pathname for the site-specific library files?'
5504 . ./getfile
5505 sitelib="$ans"
5506 sitelibexp="$ansexp"
5507 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
5508 : Change installation prefix, if necessary.
5509 if $test X"$prefix" != X"$installprefix"; then
5510         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5511 else
5512         installsitelib="$sitelibexp"
5513 fi
5514
5515 : Determine list of previous versions to include in @INC
5516 $cat > getverlist <<EOPL
5517 #!$perl5 -w
5518 use File::Basename;
5519 \$api_versionstring = "$api_versionstring";
5520 \$version = "$version";
5521 \$sitelib = "$sitelib";
5522 \$archname = "$archname";
5523 EOPL
5524         $cat >> getverlist <<'EOPL'
5525 # Can't have leading @ because metaconfig interprets it as a command!
5526 ;@inc_version_list=();
5527 $stem=dirname($sitelib);
5528 # XXX Redo to do opendir/readdir? 
5529 if (-d $stem) {
5530     chdir($stem);
5531     ;@candidates = glob("5.*");
5532 }
5533 else {
5534     ;@candidates = ();
5535 }
5536
5537 # XXX ToDo:  These comparisons must be reworked when two-digit
5538 # subversions come along, so that 5.7.10 compares as greater than
5539 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
5540 # widespread that we can use the built-in version vectors rather
5541 # than reinventing them here.  For 5.6.0, however, we must
5542 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
5543 foreach $d (@candidates) {
5544     if ($d lt $version) {
5545         if ($d ge $api_versionstring) {
5546             unshift(@inc_version_list, "$d/$archname", $d);
5547         }
5548         elsif ($d ge "5.005") {
5549             unshift(@inc_version_list, $d);
5550         }
5551     }
5552     else {
5553         # Skip newer version.  I.e. don't look in
5554         # 5.7.0 if we're installing 5.6.1.
5555     }
5556 }
5557
5558 if (@inc_version_list) {
5559     print join(' ', @inc_version_list);
5560 }
5561 else {
5562     # Blank space to preserve value for next Configure run.
5563     print " ";
5564 }
5565 EOPL
5566 chmod +x getverlist
5567 case "$inc_version_list" in
5568 '')     if test -x "$perl5"; then
5569                 dflt=`$perl5 getverlist`
5570         else
5571                 dflt='none'
5572         fi
5573         ;;
5574 $undef) dflt='none' ;;
5575 *)  dflt="$inc_version_list" ;;
5576 esac
5577 case "$dflt" in
5578 ''|' ') dflt=none ;;
5579 esac
5580 $cat <<'EOM'
5581
5582 In order to ease the process of upgrading, this version of perl 
5583 can be configured to use modules built and installed with earlier 
5584 versions of perl that were installed under $prefix.  Specify here
5585 the list of earlier versions that this version of perl should check.
5586 If Configure detected no earlier versions of perl installed under
5587 $prefix, then the list will be empty.  Answer 'none' to tell perl
5588 to not search earlier versions.
5589
5590 The default should almost always be sensible, so if you're not sure,
5591 just accept the default.
5592 EOM
5593
5594 rp='List of earlier versions to include in @INC?'
5595 . ./myread
5596 case "$ans" in
5597 [Nn]one|''|' ') inc_version_list=' ' ;;
5598 *) inc_version_list="$ans" ;;
5599 esac
5600 case "$inc_version_list" in
5601 ''|' ') 
5602         inc_version_list_init='0';;
5603 *)      inc_version_list_init=`echo $inc_version_list |
5604                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5605         ;;
5606 esac
5607 $rm -f getverlist
5608
5609 : determine whether to install perl also as /usr/bin/perl
5610
5611 echo " "
5612 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5613         $cat <<EOM
5614 Many scripts expect perl to be installed as /usr/bin/perl.
5615 I can install the perl you are about to compile also as /usr/bin/perl
5616 (in addition to $installbin/perl).
5617 EOM
5618         case "$installusrbinperl" in
5619         "$undef"|[nN]*) dflt='n';;
5620         *)              dflt='y';;
5621         esac
5622         rp="Do you want to install perl as /usr/bin/perl?"
5623         . ./myread
5624         case "$ans" in
5625         [yY]*)  val="$define";;
5626         *)      val="$undef" ;;
5627         esac
5628 else
5629         val="$undef"
5630 fi
5631 set installusrbinperl
5632 eval $setvar
5633
5634 echo " "
5635 echo "Checking for GNU C Library..." >&4
5636 cat >gnulibc.c <<EOM
5637 #include <stdio.h>
5638 int main()
5639 {
5640 #ifdef __GLIBC__
5641     exit(0);
5642 #else
5643     exit(1);
5644 #endif
5645 }
5646 EOM
5647 set gnulibc
5648 if eval $compile_ok && ./gnulibc; then
5649         val="$define"
5650         echo "You are using the GNU C Library"
5651 else
5652         val="$undef"
5653         echo "You are not using the GNU C Library"
5654 fi
5655 $rm -f gnulibc*
5656 set d_gnulibc
5657 eval $setvar
5658
5659 : see if nm is to be used to determine whether a symbol is defined or not
5660 case "$usenm" in
5661 '')
5662         dflt=''
5663         case "$d_gnulibc" in
5664         "$define")
5665                 echo " "
5666                 echo "nm probably won't work on the GNU C Library." >&4
5667                 dflt=n
5668                 ;;
5669         esac
5670         case "$dflt" in
5671         '') 
5672                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5673                         echo " "
5674                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5675                         echo "'nm' won't be sufficient on this sytem." >&4
5676                         dflt=n
5677                 fi
5678                 ;;
5679         esac
5680         case "$dflt" in
5681         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5682                 if $test $dflt -gt 20; then
5683                         dflt=y
5684                 else
5685                         dflt=n
5686                 fi
5687                 ;;
5688         esac
5689         ;;
5690 *)
5691         case "$usenm" in
5692         true|$define) dflt=y;;
5693         *) dflt=n;;
5694         esac
5695         ;;
5696 esac
5697 $cat <<EOM
5698
5699 I can use $nm to extract the symbols from your C libraries. This
5700 is a time consuming task which may generate huge output on the disk (up
5701 to 3 megabytes) but that should make the symbols extraction faster. The
5702 alternative is to skip the 'nm' extraction part and to compile a small
5703 test program instead to determine whether each symbol is present. If
5704 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5705 this may be the best solution.
5706
5707 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5708
5709 EOM
5710 rp="Shall I use $nm to extract C symbols from the libraries?"
5711 . ./myread
5712 case "$ans" in
5713 [Nn]*) usenm=false;;
5714 *) usenm=true;;
5715 esac
5716
5717 runnm=$usenm
5718 case "$reuseval" in
5719 true) runnm=false;;
5720 esac
5721
5722 : nm options which may be necessary
5723 case "$nm_opt" in
5724 '') if $test -f /mach_boot; then
5725                 nm_opt=''       # Mach
5726         elif $test -d /usr/ccs/lib; then
5727                 nm_opt='-p'     # Solaris (and SunOS?)
5728         elif $test -f /dgux; then
5729                 nm_opt='-p'     # DG-UX
5730         elif $test -f /lib64/rld; then
5731                 nm_opt='-p'     # 64-bit Irix
5732         else
5733                 nm_opt=''
5734         fi;;
5735 esac
5736
5737 : nm options which may be necessary for shared libraries but illegal
5738 : for archive libraries.  Thank you, Linux.
5739 case "$nm_so_opt" in
5740 '')     case "$myuname" in
5741         *linux*)
5742                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5743                         nm_so_opt='--dynamic'
5744                 fi
5745                 ;;
5746         esac
5747         ;;
5748 esac
5749
5750 case "$runnm" in
5751 true)
5752 : get list of predefined functions in a handy place
5753 echo " "
5754 case "$libc" in
5755 '') libc=unknown
5756         case "$libs" in
5757         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5758         esac
5759         ;;
5760 esac
5761 libnames='';
5762 case "$libs" in
5763 '') ;;
5764 *)  for thislib in $libs; do
5765         case "$thislib" in
5766         -lc|-lc_s)
5767                 : Handle C library specially below.
5768                 ;;
5769         -l*)
5770                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5771                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5772                         :
5773                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5774                         :
5775                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5776                         :
5777                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5778                         :
5779                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5780                         :
5781                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5782                         :
5783                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5784                         :
5785                 else
5786                         try=''
5787                 fi
5788                 libnames="$libnames $try"
5789                 ;;
5790         *) libnames="$libnames $thislib" ;;
5791         esac
5792         done
5793         ;;
5794 esac
5795 xxx=normal
5796 case "$libc" in
5797 unknown)
5798         set /lib/libc.$so
5799         for xxx in $libpth; do
5800                 $test -r $1 || set $xxx/libc.$so
5801                 : The messy sed command sorts on library version numbers.
5802                 $test -r $1 || \
5803                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5804                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5805                                 h
5806                                 s/[0-9][0-9]*/0000&/g
5807                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5808                                 G
5809                                 s/\n/ /' | \
5810                          sort | $sed -e 's/^.* //'`
5811                 eval set \$$#
5812         done
5813         $test -r $1 || set /usr/ccs/lib/libc.$so
5814         $test -r $1 || set /lib/libsys_s$_a
5815         ;;
5816 *)
5817         set blurfl
5818         ;;
5819 esac
5820 if $test -r "$1"; then
5821         echo "Your (shared) C library seems to be in $1."
5822         libc="$1"
5823 elif $test -r /lib/libc && $test -r /lib/clib; then
5824         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5825         xxx=apollo
5826         libc='/lib/clib /lib/libc'
5827         if $test -r /lib/syslib; then
5828                 echo "(Your math library is in /lib/syslib.)"
5829                 libc="$libc /lib/syslib"
5830         fi
5831 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5832         echo "Your C library seems to be in $libc, as you said before."
5833 elif $test -r $incpath/usr/lib/libc$_a; then
5834         libc=$incpath/usr/lib/libc$_a;
5835         echo "Your C library seems to be in $libc.  That's fine."
5836 elif $test -r /lib/libc$_a; then
5837         libc=/lib/libc$_a;
5838         echo "Your C library seems to be in $libc.  You're normal."
5839 else
5840         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5841                 :
5842         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5843                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5844         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5845                 :
5846         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5847                 :
5848         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5849                 :
5850         else
5851                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5852         fi
5853         if $test -r "$tans"; then
5854                 echo "Your C library seems to be in $tans, of all places."
5855                 libc=$tans
5856         else
5857                 libc='blurfl'
5858         fi
5859 fi
5860 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5861         dflt="$libc"
5862         cat <<EOM
5863
5864 If the guess above is wrong (which it might be if you're using a strange
5865 compiler, or your machine supports multiple models), you can override it here.
5866
5867 EOM
5868 else
5869         dflt=''
5870         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5871         cat >&4 <<EOM
5872 I can't seem to find your C library.  I've looked in the following places:
5873
5874 EOM
5875         $sed 's/^/      /' libpath
5876         cat <<EOM
5877
5878 None of these seems to contain your C library. I need to get its name...
5879
5880 EOM
5881 fi
5882 fn=f
5883 rp='Where is your C library?'
5884 . ./getfile
5885 libc="$ans"
5886
5887 echo " "
5888 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5889 set X `cat libnames`
5890 shift
5891 xxx=files
5892 case $# in 1) xxx=file; esac
5893 echo "Extracting names from the following $xxx for later perusal:" >&4
5894 echo " "
5895 $sed 's/^/      /' libnames >&4
5896 echo " "
5897 $echo $n "This may take a while...$c" >&4
5898
5899 for file in $*; do
5900         case $file in
5901         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5902         *) $nm $nm_opt $file 2>/dev/null;;
5903         esac
5904 done >libc.tmp
5905
5906 $echo $n ".$c"
5907 $grep fprintf libc.tmp > libc.ptf
5908 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5909 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5910 xxx='[ADTSIW]'
5911 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5912         eval $xscan;\
5913         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5914                 eval $xrun
5915 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5916         eval $xscan;\
5917         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5918                 eval $xrun
5919 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5920         eval $xscan;\
5921         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5922                 eval $xrun
5923 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5924         eval $xscan;\
5925         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5926                 eval $xrun
5927 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5928         eval $xscan;\
5929         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5930                 eval $xrun
5931 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5932         eval $xscan;\
5933         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5934                 eval $xrun
5935 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5936                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5937         eval $xscan;\
5938         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5939                 eval $xrun
5940 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5941         eval $xscan;\
5942         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5943                 eval $xrun
5944 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5945         eval $xscan;\
5946         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5947                 eval $xrun
5948 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5949         eval $xscan;\
5950         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5951                 eval $xrun
5952 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5953         eval $xscan;\
5954         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5955                 eval $xrun
5956 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5957         eval $xscan;\
5958         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5959                 eval $xrun
5960 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5961         eval $xscan;\
5962         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5963                 eval $xrun
5964 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5965         eval $xscan;\
5966         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5967                 eval $xrun
5968 else
5969         $nm -p $* 2>/dev/null >libc.tmp
5970         $grep fprintf libc.tmp > libc.ptf
5971         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5972                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5973         then
5974                 nm_opt='-p'
5975                 eval $xrun
5976         else
5977                 echo " "
5978                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5979                 com=''
5980                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5981                         for thisname in $libnames $libc; do
5982                                 $ar t $thisname >>libc.tmp
5983                         done
5984                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5985                         echo "Ok." >&4
5986                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5987                         # Repeat libc to extract forwarders to DLL entries too
5988                         for thisname in $libnames $libc; do
5989                                 $ar tv $thisname >>libc.tmp
5990                                 # Revision 50 of EMX has bug in $ar.
5991                                 # it will not extract forwarders to DLL entries
5992                                 # Use emximp which will extract exactly them.
5993                                 emximp -o tmp.imp $thisname \
5994                                     2>/dev/null && \
5995                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5996                                     < tmp.imp >>libc.tmp
5997                                 $rm tmp.imp
5998                         done
5999                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
6000                         echo "Ok." >&4
6001                 else
6002                         echo "$ar didn't seem to work right." >&4
6003                         echo "Maybe this is a Cray...trying bld instead..." >&4
6004                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
6005                         then
6006                                 for thisname in $libnames; do
6007                                         bld t $libnames | \
6008                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
6009                                         $ar t $thisname >>libc.tmp
6010                                 done
6011                                 echo "Ok." >&4
6012                         else
6013                                 echo "That didn't work either.  Giving up." >&4
6014                                 exit 1
6015                         fi
6016                 fi
6017         fi
6018 fi
6019 nm_extract="$com"
6020 if $test -f /lib/syscalls.exp; then
6021         echo " "
6022         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
6023         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
6024 fi
6025 ;;
6026 esac
6027 $rm -f libnames libpath
6028
6029 : see if dld is available
6030 set dld.h i_dld
6031 eval $inhdr
6032
6033 : is a C symbol defined?
6034 csym='tlook=$1;
6035 case "$3" in
6036 -v) tf=libc.tmp; tc=""; tdc="";;
6037 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
6038 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
6039 esac;
6040 tx=yes;
6041 case "$reuseval-$4" in
6042 true-) ;;
6043 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
6044 esac;
6045 case "$tx" in
6046 yes)
6047         case "$runnm" in
6048         true)
6049                 if $contains $tlook $tf >/dev/null 2>&1;
6050                 then tval=true;
6051                 else tval=false;
6052                 fi;;
6053         *)
6054                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
6055                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
6056                 then tval=true;
6057                 else tval=false;
6058                 fi;
6059                 $rm -f t t.c;;
6060         esac;;
6061 *)
6062         case "$tval" in
6063         $define) tval=true;;
6064         *) tval=false;;
6065         esac;;
6066 esac;
6067 eval "$2=$tval"'
6068
6069 : define an is-in-libc? function
6070 inlibc='echo " "; td=$define; tu=$undef;
6071 sym=$1; var=$2; eval "was=\$$2";
6072 tx=yes;
6073 case "$reuseval$was" in
6074 true) ;;
6075 true*) tx=no;;
6076 esac;
6077 case "$tx" in
6078 yes)
6079         set $sym tres -f;
6080         eval $csym;
6081         case "$tres" in
6082         true)
6083                 echo "$sym() found." >&4;
6084                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
6085         *)
6086                 echo "$sym() NOT found." >&4;
6087                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
6088         esac;;
6089 *)
6090         case "$was" in
6091         $define) echo "$sym() found." >&4;;
6092         *) echo "$sym() NOT found." >&4;;
6093         esac;;
6094 esac'
6095
6096 : see if dlopen exists
6097 xxx_runnm="$runnm"
6098 runnm=false
6099 set dlopen d_dlopen
6100 eval $inlibc
6101 runnm="$xxx_runnm"
6102
6103 : determine which dynamic loading, if any, to compile in
6104 echo " "
6105 dldir="ext/DynaLoader"
6106 case "$usedl" in
6107 $define|y|true)
6108         dflt='y'
6109         usedl="$define"
6110         ;;
6111 $undef|n|false)
6112         dflt='n'
6113         usedl="$undef"
6114         ;;
6115 *) 
6116         dflt='n'
6117         case "$d_dlopen" in
6118             $define) dflt='y' ;;
6119         esac
6120         case "$i_dld" in
6121             $define) dflt='y' ;;
6122         esac
6123         : Does a dl_xxx.xs file exist for this operating system
6124         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6125         ;;
6126 esac
6127 rp="Do you wish to use dynamic loading?"
6128 . ./myread
6129 usedl="$ans"
6130 case "$ans" in
6131 y*) usedl="$define"
6132         case "$dlsrc" in
6133         '')
6134                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6135                         dflt="$dldir/dl_${osname}.xs"
6136                 elif $test "$d_dlopen" = "$define" ; then
6137                         dflt="$dldir/dl_dlopen.xs"
6138                 elif $test "$i_dld" = "$define" ; then
6139                         dflt="$dldir/dl_dld.xs"
6140                 else
6141                         dflt=''
6142                 fi
6143                 ;;
6144         *)      dflt="$dldir/$dlsrc"
6145                 ;;
6146         esac
6147     echo "The following dynamic loading files are available:"
6148         : Can not go over to $dldir because getfile has path hard-coded in.
6149         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6150         rp="Source file to use for dynamic loading"
6151         fn="fne"
6152         gfpth="$src"
6153         . ./getfile
6154         usedl="$define"
6155         : emulate basename
6156         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6157
6158         $cat << EOM
6159
6160 Some systems may require passing special flags to $cc -c to
6161 compile modules that will be used to create a shared library.
6162 To use no flags, say "none".
6163
6164 EOM
6165     case "$cccdlflags" in
6166     '') case "$gccversion" in
6167                 '') case "$osname" in
6168                         hpux)   dflt='+z' ;;
6169                         next)   dflt='none' ;;
6170                         irix*)  dflt='-KPIC' ;;
6171                         svr4*|esix*|solaris) dflt='-KPIC' ;;
6172                         sunos)  dflt='-pic' ;;
6173                         *)      dflt='none' ;;
6174                     esac
6175                         ;;
6176                 *)  case "$osname" in
6177                         svr4*|esix*|solaris) dflt='-fPIC' ;;
6178                         *)      dflt='-fpic' ;;
6179                     esac ;;
6180             esac ;;
6181         ' ') dflt='none' ;;
6182     *)  dflt="$cccdlflags" ;;
6183     esac
6184     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6185     . ./myread
6186     case "$ans" in
6187     none) cccdlflags=' ' ;;
6188     *) cccdlflags="$ans" ;;
6189     esac
6190
6191     cat << EOM
6192
6193 Some systems use ld to create libraries that can be dynamically loaded,
6194 while other systems (such as those using ELF) use $cc.
6195
6196 EOM
6197         case "$ld" in
6198         '')     $cat >try.c <<'EOM'
6199 /* Test for whether ELF binaries are produced */
6200 #include <fcntl.h>
6201 #include <stdlib.h>
6202 int main() {
6203         char b[4];
6204         int i = open("a.out",O_RDONLY);
6205         if(i == -1) 
6206                 exit(1); /* fail */
6207         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6208                 exit(0); /* succeed (yes, it's ELF) */
6209         else
6210                 exit(1); /* fail */
6211 }
6212 EOM
6213                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6214                         cat <<EOM
6215 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6216 EOM
6217                         dflt="$cc"
6218                 else
6219                         echo "I'll use ld to build dynamic libraries."
6220                         dflt='ld'
6221                 fi
6222                 rm -f try.c a.out
6223                 ;;
6224         *)      dflt="$ld"
6225                 ;;
6226         esac
6227
6228     rp="What command should be used to create dynamic libraries?"
6229     . ./myread
6230         ld="$ans"
6231
6232     cat << EOM
6233
6234 Some systems may require passing special flags to $ld to create a
6235 library that can be dynamically loaded.  If your ld flags include
6236 -L/other/path options to locate libraries outside your loader's normal
6237 search path, you may need to specify those -L options here as well.  To
6238 use no flags, say "none".
6239
6240 EOM
6241     case "$lddlflags" in
6242     '') case "$osname" in
6243                         beos) dflt='-nostart' ;;
6244                         hpux) dflt='-b';
6245                               case "$gccversion" in
6246                               '') dflt="$dflt +vnocompatwarnings" ;;
6247                               esac
6248                               ;;        
6249                         linux|irix*)    dflt='-shared' ;;
6250                         next)  dflt='none' ;;
6251                         solaris) dflt='-G' ;;
6252                         sunos) dflt='-assert nodefinitions' ;;
6253                         svr4*|esix*) dflt="-G $ldflags" ;;
6254                 *)     dflt='none' ;;
6255                         esac
6256                         ;;
6257     *) dflt="$lddlflags" ;;
6258     esac
6259
6260         : Try to guess additional flags to pick up local libraries.
6261         : Be careful not to append to a plain 'none'
6262         case "$dflt" in
6263         none) dflt='' ;;
6264         esac
6265         for thisflag in $ldflags; do
6266                 case "$thisflag" in
6267                 -L*)
6268                         case " $dflt " in
6269                         *" $thisflag "*) ;;
6270                         *) dflt="$dflt $thisflag" ;;
6271                         esac
6272                         ;;
6273                 esac
6274         done
6275
6276         case "$dflt" in
6277         ''|' ') dflt='none' ;;
6278         esac
6279
6280     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6281     . ./myread
6282     case "$ans" in
6283     none) lddlflags=' ' ;;
6284     *) lddlflags="$ans" ;;
6285     esac
6286
6287         cat <<EOM
6288
6289 Some systems may require passing special flags to $cc to indicate that
6290 the resulting executable will use dynamic linking.  To use no flags,
6291 say "none".
6292
6293 EOM
6294     case "$ccdlflags" in
6295     '') case "$osname" in
6296                 hpux)   dflt='-Wl,-E' ;;
6297                 linux)  dflt='-rdynamic' ;;
6298                 next)   dflt='none' ;;
6299                 sunos)  dflt='none' ;;
6300                 *)      dflt='none' ;;
6301             esac ;;
6302     ' ')  dflt='none' ;;
6303     *)  dflt="$ccdlflags" ;;
6304     esac
6305     rp="Any special flags to pass to $cc to use dynamic linking?"
6306     . ./myread
6307     case "$ans" in
6308     none) ccdlflags=' ' ;;
6309     *) ccdlflags="$ans" ;;
6310     esac
6311     ;;
6312 *)  usedl="$undef"
6313         ld='ld'
6314     dlsrc='dl_none.xs'
6315     lddlflags=''
6316     ccdlflags=''
6317     ;;
6318 esac
6319
6320 also=''
6321 case "$usedl" in
6322 $undef)
6323         # No dynamic loading being used, so don't bother even to prompt.
6324         useshrplib='false'
6325         ;;
6326 *)      case "$useshrplib" in
6327         '')     case "$osname" in
6328                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6329                         dflt=y
6330                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6331                         ;;
6332                 next*)
6333                         case "$osvers" in
6334                         4*)     dflt=y
6335                                 also='Building a shared libperl is needed for MAB support.'
6336                                 ;;
6337                         *)      dflt=n
6338                                 ;;
6339                         esac
6340                         ;;
6341                 *)      dflt=n
6342                         ;;
6343                 esac
6344                 ;;
6345         $define|true|[Yy]*)
6346                 dflt=y
6347                 ;;
6348         *)      dflt=n
6349                 ;;
6350         esac
6351         $cat << EOM
6352
6353 The perl executable is normally obtained by linking perlmain.c with
6354 libperl${_a}, any static extensions (usually just DynaLoader), and
6355 any other libraries needed on this system (such as -lm, etc.).  Since
6356 your system supports dynamic loading, it is probably possible to build
6357 a shared libperl.$so.  If you will have more than one executable linked
6358 to libperl.$so, this will significantly reduce the size of each
6359 executable, but it may have a noticeable affect on performance.  The
6360 default is probably sensible for your system.
6361 $also
6362
6363 EOM
6364         rp="Build a shared libperl.$so (y/n)"
6365         . ./myread
6366         case "$ans" in
6367         true|$define|[Yy]*)
6368                 useshrplib='true'  ;;
6369         *)      useshrplib='false' ;;
6370         esac
6371         ;;
6372 esac
6373
6374 case "$useshrplib" in
6375 true)
6376         case "$libperl" in
6377         '')
6378                 # Figure out a good name for libperl.so.  Since it gets stored in
6379                 # a version-specific architecture-dependent library, the version
6380                 # number isn't really that important, except for making cc/ld happy.
6381                 #
6382                 # A name such as libperl.so.3.1
6383                 majmin="libperl.$so.$patchlevel.$subversion"
6384                 # A name such as libperl.so.301
6385                 majonly=`echo $patchlevel $subversion |
6386                         $awk '{printf "%d%02d", $1, $2}'`
6387                 majonly=libperl.$so.$majonly
6388                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6389                 # rely on figuring it out from the naming of libc.
6390                 case "${osname}${osvers}" in
6391                 next4*)
6392                         dflt=libperl.5.$so
6393                         # XXX How handle the --version stuff for MAB?
6394                         ;;
6395                 linux*)  # ld won't link with a bare -lperl otherwise.
6396                         dflt=libperl.$so
6397                         ;;
6398                 cygwin*) # include version
6399                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6400                         ;;
6401                 *)      # Try to guess based on whether libc has major.minor.
6402                         case "$libc" in
6403                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6404                         *libc.$so.[0-9]*) dflt=$majonly ;;
6405                         *)      dflt=libperl.$so ;;
6406                         esac
6407                         ;;
6408                 esac
6409                 ;;
6410         *)      dflt=$libperl
6411                 ;;
6412         esac
6413         cat << EOM
6414
6415 I need to select a good name for the shared libperl.  If your system uses
6416 library names with major and minor numbers, then you might want something
6417 like $majmin.  Alternatively, if your system uses a single version
6418 number for shared libraries, then you might want to use $majonly.
6419 Or, your system might be quite happy with a simple libperl.$so.
6420
6421 Since the shared libperl will get installed into a version-specific
6422 architecture-dependent directory, the version number of the shared perl
6423 library probably isn't important, so the default should be o.k.
6424
6425 EOM
6426         rp='What name do you want to give to the shared libperl?'
6427         . ./myread
6428         libperl=$ans
6429         echo "Ok, I'll use $libperl"
6430         ;;
6431 *)
6432         libperl="libperl${_a}"
6433         ;;
6434 esac
6435
6436 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6437 case "$shrpdir" in
6438 '') ;;
6439 *)      $cat >&4 <<EOM
6440 WARNING:  Use of the shrpdir variable for the installation location of
6441 the shared $libperl is not supported.  It was never documented and
6442 will not work in this version.  Let me (perlbug@perl.com)
6443 know of any problems this may cause.
6444
6445 EOM
6446         case "$shrpdir" in
6447         "$archlibexp/CORE")
6448                 $cat >&4 <<EOM
6449 But your current setting of $shrpdir is
6450 the default anyway, so it's harmless.
6451 EOM
6452                 ;;
6453         *)
6454                 $cat >&4 <<EOM
6455 Further, your current attempted setting of $shrpdir
6456 conflicts with the value of $archlibexp/CORE
6457 that installperl will use.
6458 EOM
6459                 ;;
6460         esac
6461         ;;
6462 esac
6463
6464 # How will the perl executable find the installed shared $libperl?
6465 # Add $xxx to ccdlflags.
6466 # If we can't figure out a command-line option, use $shrpenv to
6467 # set env LD_RUN_PATH.  The main perl makefile uses this.
6468 shrpdir=$archlibexp/CORE
6469 xxx=''
6470 tmp_shrpenv=''
6471 if "$useshrplib"; then
6472     case "$osname" in 
6473         aix)
6474                 # We'll set it in Makefile.SH...
6475                 ;;
6476         solaris|netbsd)
6477                 xxx="-R $shrpdir"
6478                 ;;
6479         freebsd)
6480                 xxx="-Wl,-R$shrpdir"
6481                 ;;
6482         linux|irix*|dec_osf)
6483                 xxx="-Wl,-rpath,$shrpdir"
6484                 ;;
6485         next)
6486                 # next doesn't like the default...
6487                 ;;
6488         beos)
6489                 # beos doesn't like the default, either.
6490                 ;;
6491         hpux*)
6492                 # hpux doesn't like the default, either.
6493                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6494                 ;;
6495         *)
6496                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6497                 ;;
6498         esac
6499         case "$xxx" in
6500         '') ;;
6501         *)      
6502                 # Only add $xxx if it isn't already in ccdlflags.
6503                 case " $ccdlflags " in
6504                 *" $xxx "*)     ;;
6505                 *)      ccdlflags="$ccdlflags $xxx"
6506                         cat <<EOM >&4
6507
6508 Adding $xxx to the flags
6509 passed to $ld so that the perl executable will find the 
6510 installed shared $libperl.
6511
6512 EOM
6513                         ;;
6514                 esac
6515                 ;;
6516         esac
6517 fi
6518 # Fix ccdlflags in AIX for building external extensions.
6519 # (For building Perl itself bare -bE:perl.exp is needed,
6520 #  Makefile.SH takes care of this.)
6521 case "$osname" in
6522 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6523 esac
6524 # Respect a hint or command-line value.
6525 case "$shrpenv" in
6526 '') shrpenv="$tmp_shrpenv" ;;
6527 esac
6528 case "$ldlibpthname" in
6529 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6530 none)   ldlibpthname='' ;;
6531 esac
6532
6533 : determine where manual pages go
6534 set man1dir man1dir none
6535 eval $prefixit
6536 $cat <<EOM
6537
6538 $spackage has manual pages available in source form.
6539 EOM
6540 case "$nroff" in
6541 nroff)
6542         echo "However, you don't have nroff, so they're probably useless to you."
6543         case "$man1dir" in
6544         '') man1dir="none";;
6545         esac;;
6546 esac
6547 echo "If you don't want the manual sources installed, answer 'none'."
6548 case "$man1dir" in
6549 ' ') dflt=none
6550         ;;
6551 '')
6552         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6553         lookpath="$lookpath $prefixexp/man/p_man/man1"
6554         lookpath="$lookpath $prefixexp/man/u_man/man1"
6555         lookpath="$lookpath $prefixexp/man/man.1"
6556         case "$sysman" in
6557         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6558         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6559         esac
6560         set dflt
6561         eval $prefixup
6562         ;;
6563 *)  dflt="$man1dir"
6564         ;;
6565 esac
6566 echo " "
6567 fn=dn+~
6568 rp="Where do the main $spackage manual pages (source) go?"
6569 . ./getfile
6570 if $test "X$man1direxp" != "X$ansexp"; then
6571         installman1dir=''
6572 fi
6573 man1dir="$ans"
6574 man1direxp="$ansexp"
6575 case "$man1dir" in
6576 '')     man1dir=' '
6577         installman1dir='';;
6578 esac
6579
6580 : Change installation prefix, if necessary.
6581 if $test X"$prefix" != X"$installprefix"; then
6582         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6583 else
6584         installman1dir="$man1direxp"
6585 fi
6586
6587 : What suffix to use on installed man pages
6588
6589 case "$man1dir" in
6590 ' ')
6591         man1ext='0'
6592         ;;
6593 *)
6594         rp="What suffix should be used for the main $spackage man pages?"
6595         case "$man1ext" in
6596         '')     case "$man1dir" in
6597                 *1)  dflt=1 ;;
6598                 *1p) dflt=1p ;;
6599                 *1pm) dflt=1pm ;;
6600                 *l) dflt=l;;
6601                 *n) dflt=n;;
6602                 *o) dflt=o;;
6603                 *p) dflt=p;;
6604                 *C) dflt=C;;
6605                 *L) dflt=L;;
6606                 *L1) dflt=L1;;
6607                 *) dflt=1;;
6608                 esac
6609                 ;;
6610         *)      dflt="$man1ext";;
6611         esac
6612         . ./myread
6613         man1ext="$ans"
6614         ;;
6615 esac
6616
6617 : see if we can have long filenames
6618 echo " "
6619 rmlist="$rmlist /tmp/cf$$"
6620 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
6621 first=123456789abcdef
6622 second=/tmp/cf$$/$first
6623 $rm -f $first $second
6624 if (echo hi >$first) 2>/dev/null; then
6625         if $test -f 123456789abcde; then
6626                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6627                 val="$undef"
6628         else
6629                 if (echo hi >$second) 2>/dev/null; then
6630                         if $test -f /tmp/cf$$/123456789abcde; then
6631                                 $cat <<'EOM'
6632 That's peculiar... You can have filenames longer than 14 characters, but only
6633 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
6634 I shall consider your system cannot support long filenames at all.
6635 EOM
6636                                 val="$undef"
6637                         else
6638                                 echo 'You can have filenames longer than 14 characters.' >&4
6639                                 val="$define"
6640                         fi
6641                 else
6642                         $cat <<'EOM'
6643 How confusing! Some of your filesystems are sane enough to allow filenames
6644 longer than 14 characters but some others like /tmp can't even think about them.
6645 So, for now on, I shall assume your kernel does not allow them at all.
6646 EOM
6647                         val="$undef"
6648                 fi
6649         fi
6650 else
6651         $cat <<'EOM'
6652 You can't have filenames longer than 14 chars.  You can't even think about them!
6653 EOM
6654         val="$undef"
6655 fi 
6656 set d_flexfnam
6657 eval $setvar
6658 $rm -rf /tmp/cf$$ 123456789abcde*
6659
6660 : determine where library module manual pages go
6661 set man3dir man3dir none
6662 eval $prefixit
6663 $cat <<EOM
6664
6665 $spackage has manual pages for many of the library modules.
6666 EOM
6667
6668 case "$nroff" in
6669 nroff)
6670         $cat <<'EOM'
6671 However, you don't have nroff, so they're probably useless to you.
6672 EOM
6673         case "$man3dir" in
6674         '') man3dir="none";;
6675         esac;;
6676 esac
6677
6678 case "$d_flexfnam" in
6679 undef)
6680         $cat <<'EOM'
6681 However, your system can't handle the long file names like File::Basename.3. 
6682 EOM
6683         case "$man3dir" in
6684         '') man3dir="none";;
6685         esac;;
6686 esac
6687
6688 echo "If you don't want the manual sources installed, answer 'none'."
6689 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6690 case "$man3dir" in
6691 '')     dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6692         if $test -d "$privlib/man/man3"; then
6693                 cat <<EOM >&4
6694
6695 WARNING:  Previous versions of perl installed man3 pages into
6696 $privlib/man/man3.  This version will suggest a 
6697 new default of $dflt.  
6698 EOM
6699                 tdflt=$dflt
6700                 dflt='n'
6701                 rp='Do you wish to preserve the old behavior?(y/n)'
6702                 . ./myread
6703                 case "$ans" in
6704                 y*) dflt="$privlib/man/man3" ;;
6705                 *)  dflt=$tdflt ;;
6706                 esac
6707     fi
6708         ;;
6709 ' ') dflt=none;;
6710 *)      dflt="$man3dir" ;;
6711 esac
6712 echo " "
6713 fn=dn+~
6714 rp="Where do the $package library man pages (source) go?"
6715 . ./getfile
6716 man3dir="$ans"
6717 man3direxp="$ansexp"
6718 case "$man1dir" in
6719 '')     man3dir=' '
6720         installman3dir='';;
6721 esac
6722
6723 : Change installation prefix, if necessary.
6724 if $test X"$prefix" != X"$installprefix"; then
6725         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6726 else
6727         installman3dir="$man3direxp"
6728 fi
6729
6730 : What suffix to use on installed man pages
6731 case "$man3dir" in
6732 ' ')
6733         man3ext='0'
6734         ;;
6735 *)
6736         rp="What suffix should be used for the $package library man pages?"
6737         case "$man3ext" in
6738         '')     case "$man3dir" in
6739                 *3)  dflt=3 ;;
6740                 *3p) dflt=3p ;;
6741                 *3pm) dflt=3pm ;;
6742                 *l) dflt=l;;
6743                 *n) dflt=n;;
6744                 *o) dflt=o;;
6745                 *p) dflt=p;;
6746                 *C) dflt=C;;
6747                 *L) dflt=L;;
6748                 *L3) dflt=L3;;
6749                 *) dflt=3;;
6750                 esac
6751                 ;;
6752         *)      dflt="$man3ext";;
6753         esac
6754         . ./myread
6755         man3ext="$ans"
6756         ;;
6757 esac
6758
6759 : see if we have to deal with yellow pages, now NIS.
6760 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6761         if $test -f /usr/etc/nibindd; then
6762                 echo " "
6763                 echo "I'm fairly confident you're on a NeXT."
6764                 echo " "
6765                 rp='Do you get the hosts file via NetInfo?'
6766                 dflt=y
6767                 case "$hostcat" in
6768                 nidump*) ;;
6769                 '') ;;
6770                 *) dflt=n;;
6771                 esac
6772                 . ./myread
6773                 case "$ans" in
6774                 y*) hostcat='nidump hosts .';;
6775                 *)      case "$hostcat" in
6776                         nidump*) hostcat='';;
6777                         esac
6778                         ;;
6779                 esac
6780         fi
6781         case "$hostcat" in
6782         nidump*) ;;
6783         *)
6784                 case "$hostcat" in
6785                 *ypcat*) dflt=y;;
6786                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6787                                 dflt=y
6788                         else
6789                                 dflt=n
6790                         fi;;
6791                 *) dflt=n;;
6792                 esac
6793                 echo " "
6794                 rp='Are you getting the hosts file via yellow pages?'
6795                 . ./myread
6796                 case "$ans" in
6797                 y*) hostcat='ypcat hosts';;
6798                 *) hostcat='cat /etc/hosts';;
6799                 esac
6800                 ;;
6801         esac
6802 fi
6803 case "$hostcat" in
6804 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6805 esac
6806 case "$groupcat" in
6807 '') test -f /etc/group && groupcat='cat /etc/group';;
6808 esac
6809 case "$passcat" in
6810 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6811 esac
6812
6813 : now get the host name
6814 echo " "
6815 echo "Figuring out host name..." >&4
6816 case "$myhostname" in
6817 '') cont=true
6818         echo 'Maybe "hostname" will work...'
6819         if tans=`sh -c hostname 2>&1` ; then
6820                 myhostname=$tans
6821                 phostname=hostname
6822                 cont=''
6823         fi
6824         ;;
6825 *) cont='';;
6826 esac
6827 if $test "$cont"; then
6828         if ./xenix; then
6829                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
6830                 if tans=`cat /etc/systemid 2>&1` ; then
6831                         myhostname=$tans
6832                         phostname='cat /etc/systemid'
6833                         echo "Whadyaknow.  Xenix always was a bit strange..."
6834                         cont=''
6835                 fi
6836         elif $test -r /etc/systemid; then
6837                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6838         fi
6839 fi
6840 if $test "$cont"; then
6841         echo 'No, maybe "uuname -l" will work...'
6842         if tans=`sh -c 'uuname -l' 2>&1` ; then
6843                 myhostname=$tans
6844                 phostname='uuname -l'
6845         else
6846                 echo 'Strange.  Maybe "uname -n" will work...'
6847                 if tans=`sh -c 'uname -n' 2>&1` ; then
6848                         myhostname=$tans
6849                         phostname='uname -n'
6850                 else
6851                         echo 'Oh well, maybe I can mine it out of whoami.h...'
6852                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6853                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6854                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6855                         else
6856                                 case "$myhostname" in
6857                                 '') echo "Does this machine have an identity crisis or something?"
6858                                         phostname='';;
6859                                 *)
6860                                         echo "Well, you said $myhostname before..."
6861                                         phostname='echo $myhostname';;
6862                                 esac
6863                         fi
6864                 fi
6865         fi
6866 fi
6867 : you do not want to know about this
6868 set $myhostname
6869 myhostname=$1
6870
6871 : verify guess
6872 if $test "$myhostname" ; then
6873         dflt=y
6874         rp='Your host name appears to be "'$myhostname'".'" Right?"
6875         . ./myread
6876         case "$ans" in
6877         y*) ;;
6878         *) myhostname='';;
6879         esac
6880 fi
6881
6882 : bad guess or no guess
6883 while $test "X$myhostname" = X ; do
6884         dflt=''
6885         rp="Please type the (one word) name of your host:"
6886         . ./myread
6887         myhostname="$ans"
6888 done
6889
6890 : translate upper to lower if necessary
6891 case "$myhostname" in
6892 *[A-Z]*)
6893         echo "(Normalizing case in your host name)"
6894         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6895         ;;
6896 esac
6897
6898 case "$myhostname" in
6899 *.*)
6900         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6901         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6902         echo "(Trimming domain name from host name--host name is now $myhostname)"
6903         ;;
6904 *) case "$mydomain" in
6905         '')
6906                 {
6907                         test "X$hostcat" = "Xypcat hosts" &&
6908                         ypmatch "$myhostname" hosts 2>/dev/null |\
6909                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
6910                         $test -s hosts
6911                 } || {
6912                         test "X$hostcat" != "X" &&
6913                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
6914                                         /[       ]$myhostname[  . ]/p" > hosts
6915                 }
6916                 tmp_re="[       . ]"
6917                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
6918                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
6919                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6920                         hosts | $sort | $uniq | \
6921                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6922                 case `$echo X$dflt` in
6923                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
6924                         dflt=.
6925                         ;;
6926                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6927                         ;;
6928                 esac
6929                 case "$dflt" in
6930                 .)
6931                         tans=`./loc resolv.conf X /etc /usr/etc`
6932                         if $test -f "$tans"; then
6933                                 echo "(Attempting domain name extraction from $tans)"
6934                                 dflt=.`$sed -n -e 's/   / /g' \
6935                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
6936                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6937                                 case "$dflt" in
6938                                 .) dflt=.`$sed -n -e 's/        / /g' \
6939                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
6940                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6941                                         ;;
6942                                 esac
6943                         fi
6944                         ;;
6945                 esac
6946                 case "$dflt" in
6947                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6948                         dflt=.`sh -c domainname 2>/dev/null`
6949                         case "$dflt" in
6950                         '') dflt='.';;
6951                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6952                         esac
6953                         ;;
6954                 esac
6955                 case "$dflt" in
6956                 .) echo "(Lost all hope -- silly guess then)"
6957                         dflt='.uucp'
6958                         ;;
6959                 esac
6960                 $rm -f hosts
6961                 ;;
6962         *) dflt="$mydomain";;
6963         esac;;
6964 esac
6965 echo " "
6966 rp="What is your domain name?"
6967 . ./myread
6968 tans="$ans"
6969 case "$ans" in
6970 '') ;;
6971 .*) ;;
6972 *) tans=".$tans";;
6973 esac
6974 mydomain="$tans"
6975
6976 : translate upper to lower if necessary
6977 case "$mydomain" in
6978 *[A-Z]*)
6979         echo "(Normalizing case in your domain name)"
6980         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6981         ;;
6982 esac
6983
6984 : a little sanity check here
6985 case "$phostname" in
6986 '') ;;
6987 *)
6988         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6989         $myhostname$mydomain|$myhostname) ;;
6990         *)
6991                 case "$phostname" in
6992                 sed*)
6993                         echo "(That doesn't agree with your whoami.h file, by the way.)"
6994                         ;;
6995                 *)
6996                         echo "(That doesn't agree with your $phostname command, by the way.)"
6997                         ;;
6998                 esac
6999         ;;
7000         esac
7001         ;;
7002 esac
7003
7004 $cat <<EOM
7005
7006 I need to get your e-mail address in Internet format if possible, i.e.
7007 something like user@host.domain. Please answer accurately since I have
7008 no easy means to double check it. The default value provided below
7009 is most probably close to reality but may not be valid from outside
7010 your organization...
7011
7012 EOM
7013 cont=x
7014 while test "$cont"; do
7015         case "$cf_email" in
7016         '') dflt="$cf_by@$myhostname$mydomain";;
7017         *) dflt="$cf_email";;
7018         esac
7019         rp='What is your e-mail address?'
7020         . ./myread
7021         cf_email="$ans"
7022         case "$cf_email" in
7023         *@*.*) cont='' ;;
7024         *)
7025                 rp='Address does not look like an Internet one.  Use it anyway?'
7026                 case "$fastread" in
7027                 yes) dflt=y ;;
7028                 *) dflt=n ;;
7029                 esac
7030                 . ./myread
7031                 case "$ans" in
7032                 y*) cont='' ;;
7033                 *) echo " " ;;
7034                 esac
7035                 ;;
7036         esac
7037 done
7038
7039 $cat <<EOM
7040
7041 If you or somebody else will be maintaining perl at your site, please
7042 fill in the correct e-mail address here so that they may be contacted
7043 if necessary. Currently, the "perlbug" program included with perl
7044 will send mail to this address in addition to perlbug@perl.com. You may
7045 enter "none" for no administrator.
7046
7047 EOM
7048 case "$perladmin" in
7049 '') dflt="$cf_email";;
7050 *) dflt="$perladmin";;
7051 esac
7052 rp='Perl administrator e-mail address'
7053 . ./myread
7054 perladmin="$ans"
7055
7056 : figure out how to guarantee perl startup
7057 case "$startperl" in
7058 '')
7059         case "$sharpbang" in
7060         *!)
7061                 $cat <<EOH
7062
7063 I can use the #! construct to start perl on your system. This will
7064 make startup of perl scripts faster, but may cause problems if you
7065 want to share those scripts and perl is not in a standard place
7066 ($binexp/perl) on all your platforms. The alternative is to force
7067 a shell by starting the script with a single ':' character.
7068
7069 EOH
7070                 dflt="$binexp/perl"
7071                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7072                 . ./myread
7073                 case "$ans" in
7074                 none)   startperl=": # use perl";;
7075                 *)      startperl="#!$ans"
7076                         if $test 30 -lt `echo "$ans" | wc -c`; then
7077                                 $cat >&4 <<EOM
7078
7079 WARNING:  Some systems limit the #! command to 32 characters.
7080 If you experience difficulty running Perl scripts with #!, try
7081 installing Perl in a directory with a shorter pathname.
7082
7083 EOM
7084                         fi ;;
7085                 esac
7086                 ;;
7087         *) startperl=": # use perl"
7088                 ;;
7089         esac
7090         ;;
7091 esac
7092 echo "I'll use $startperl to start perl scripts."
7093
7094 : figure best path for perl in scripts
7095 case "$perlpath" in
7096 '')
7097         perlpath="$binexp/perl"
7098         case "$startperl" in
7099         *!*) ;;
7100         *)
7101                 $cat <<EOH
7102
7103 I will use the "eval 'exec'" idiom to start Perl on your system.
7104 I can use the full path of your Perl binary for this purpose, but
7105 doing so may cause problems if you want to share those scripts and
7106 Perl is not always in a standard place ($binexp/perl).
7107
7108 EOH
7109                 dflt="$binexp/perl"
7110                 rp="What path shall I use in \"eval 'exec'\"?"
7111                 . ./myread
7112                 perlpath="$ans"
7113                 ;;
7114         esac
7115         ;;
7116 esac
7117 case "$startperl" in
7118 *!*)    ;;
7119 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7120 esac
7121
7122 : determine where public executable scripts go
7123 set scriptdir scriptdir
7124 eval $prefixit
7125 case "$scriptdir" in
7126 '')
7127         dflt="$bin"
7128         : guess some guesses
7129         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7130         $test -d /usr/share/bin     && dflt=/usr/share/bin
7131         $test -d /usr/local/script  && dflt=/usr/local/script
7132         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7133         $test -d $prefixexp/script  && dflt=$prefixexp/script
7134         set dflt
7135         eval $prefixup
7136         ;;
7137 *)  dflt="$scriptdir"
7138         ;;
7139 esac
7140 $cat <<EOM
7141  
7142 Some installations have a separate directory just for executable scripts so
7143 that they can mount it across multiple architectures but keep the scripts in
7144 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7145 Or you might just lump your scripts in with all your other executables.
7146  
7147 EOM
7148 fn=d~
7149 rp='Where do you keep publicly executable scripts?'
7150 . ./getfile
7151 if $test "X$ansexp" != "X$scriptdirexp"; then
7152         installscript=''
7153 fi
7154 scriptdir="$ans"
7155 scriptdirexp="$ansexp"
7156 : Change installation prefix, if necessary.
7157 if $test X"$prefix" != X"$installprefix"; then
7158         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7159 else
7160         installscript="$scriptdirexp"
7161 fi
7162
7163 : determine where site specific architecture-dependent libraries go.
7164 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
7165 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
7166 : sitelib may have an optional trailing /share.
7167 case "$sitearch" in
7168 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
7169         dflt="$dflt/$archname"
7170         ;;
7171 *)      dflt="$sitearch"
7172         ;;
7173 esac
7174 set sitearch sitearch none
7175 eval $prefixit
7176 $cat <<EOM
7177
7178 The installation process will also create a directory for
7179 architecture-dependent site-specific extensions and modules.
7180
7181 EOM
7182 fn=d~+
7183 rp='Pathname for the site-specific architecture-dependent library files?'
7184 . ./getfile
7185 sitearch="$ans"
7186 sitearchexp="$ansexp"
7187 : Change installation prefix, if necessary.
7188 if $test X"$prefix" != X"$installprefix"; then
7189         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
7190 else
7191         installsitearch="$sitearchexp"
7192 fi
7193
7194 : determine where add-on public executables go
7195 case "$sitebin" in
7196 '')     dflt=$siteprefix/bin ;;
7197 *)      dflt=$sitebin ;;
7198 esac
7199 fn=d~
7200 rp='Pathname where the add-on public executables should be installed?'
7201 . ./getfile
7202 sitebin="$ans"
7203 sitebinexp="$ansexp"
7204 : Change installation prefix, if necessary.
7205 if $test X"$prefix" != X"$installprefix"; then
7206         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7207 else
7208         installsitebin="$sitebinexp"
7209 fi
7210
7211 : see if sqrtl exists
7212 set sqrtl d_sqrtl
7213 eval $inlibc
7214
7215 case "$ccflags" in
7216 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7217 esac
7218
7219 case "$uselongdouble" in
7220 $define|true|[yY]*)     dflt='y';;
7221 *) dflt='n';;
7222 esac
7223 cat <<EOM
7224
7225 Perl can be built to take advantage of long doubles which
7226 (if available) may give more accuracy and range for floating point numbers.
7227
7228 If this doesn't make any sense to you, just accept the default '$dflt'.
7229 EOM
7230 rp='Try to use long doubles if available?'
7231 . ./myread
7232 case "$ans" in
7233 y|Y)    val="$define"   ;;
7234 *)      val="$undef"    ;;
7235 esac
7236 set uselongdouble
7237 eval $setvar
7238
7239 case "$uselongdouble" in
7240 true|[yY]*) uselongdouble="$define" ;;
7241 esac
7242
7243 case "$uselongdouble" in
7244 $define)
7245 : Look for a hint-file generated 'call-back-unit'.  If the
7246 : user has specified that long doubles should be used,
7247 : we may need to set or change some other defaults.
7248         if $test -f uselongdouble.cbu; then
7249                 echo "Your platform has some specific hints for long doubles, using them..."
7250                 . ./uselongdouble.cbu
7251         else
7252                 $cat <<EOM
7253 (Your platform doesn't have any specific hints for long doubles.)
7254 EOM
7255         fi
7256         ;;
7257 esac
7258
7259 case "$uselongdouble:$d_sqrtl" in
7260 $define:$undef)
7261                 $cat <<EOM >&4
7262
7263 *** You requested the use of long doubles but you do not seem to have
7264 *** the mathematic functions for long doubles.  I'm disabling the use
7265 *** of long doubles.
7266
7267 EOM
7268         uselongdouble=$undef
7269         ;;
7270 esac
7271
7272 case "$useperlio" in
7273 $define|true|[yY]*)     dflt='y';;
7274 *) dflt='n';;
7275 esac
7276 cat <<EOM
7277
7278 Previous version of $package used the standard IO mechanisms as defined
7279 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7280 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7281 the default.  This abstraction layer can use AT&T's sfio (if you already
7282 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7283 problems with some extension modules.  Using PerlIO with stdio is safe,
7284 but it is slower than plain stdio and therefore is not the default.
7285
7286 If this doesn't make any sense to you, just accept the default '$dflt'.
7287 EOM
7288 rp='Use the experimental PerlIO abstraction layer?'
7289 . ./myread
7290 case "$ans" in
7291 y|Y) 
7292         val="$define"
7293         ;;     
7294 *)      
7295         echo "Ok, doing things the stdio way"
7296         val="$undef"
7297         ;;
7298 esac
7299 set useperlio
7300 eval $setvar 
7301
7302 case "$vendorprefix" in
7303 '')     d_vendorbin="$undef"
7304         vendorbin=''
7305         vendorbinexp=''
7306         ;;
7307 *)      d_vendorbin="$define"
7308         : determine where vendor-supplied executables go.
7309         case "$vendorbin" in
7310         '') dflt=$vendorprefix/bin ;;
7311         *)      dflt="$vendorbin" ;;
7312         esac
7313         fn=d~+
7314         rp='Pathname for the vendor-supplied executables directory?'
7315         . ./getfile
7316         vendorbin="$ans"
7317         vendorbinexp="$ansexp"
7318         ;;
7319 esac
7320 : Change installation prefix, if necessary.
7321 if $test X"$prefix" != X"$installprefix"; then
7322         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7323 else
7324         installvendorbin="$vendorbinexp"
7325 fi
7326
7327 : see if qgcvt exists
7328 set qgcvt d_qgcvt
7329 eval $inlibc
7330
7331 : check for length of double
7332 echo " "
7333 case "$doublesize" in
7334 '')
7335         echo "Checking to see how big your double precision numbers are..." >&4
7336         $cat >try.c <<'EOCP'
7337 #include <stdio.h>
7338 int main()
7339 {
7340     printf("%d\n", (int)sizeof(double));
7341     exit(0);
7342 }
7343 EOCP
7344         set try
7345         if eval $compile_ok; then
7346                 doublesize=`./try`
7347                 echo "Your double is $doublesize bytes long."
7348         else
7349                 dflt='8'
7350                 echo "(I can't seem to compile the test program.  Guessing...)"
7351                 rp="What is the size of a double precision number (in bytes)?"
7352                 . ./myread
7353                 doublesize="$ans"
7354         fi
7355         ;;
7356 esac
7357 $rm -f try.c try
7358
7359 : check for long doubles
7360 echo " "
7361 echo "Checking to see if you have long double..." >&4
7362 echo 'int main() { long double x = 7.0; }' > try.c
7363 set try
7364 if eval $compile; then
7365         val="$define"
7366         echo "You have long double."
7367 else
7368         val="$undef"
7369         echo "You do not have long double."
7370 fi
7371 $rm try.*
7372 set d_longdbl
7373 eval $setvar
7374
7375 : check for length of long double
7376 case "${d_longdbl}${longdblsize}" in
7377 $define)
7378         echo " "
7379         echo "Checking to see how big your long doubles are..." >&4
7380         $cat >try.c <<'EOCP'
7381 #include <stdio.h>
7382 int main()
7383 {
7384         printf("%d\n", sizeof(long double));
7385 }
7386 EOCP
7387         set try
7388         set try
7389         if eval $compile; then
7390                 longdblsize=`./try$exe_ext`
7391                 echo "Your long doubles are $longdblsize bytes long."
7392         else
7393                 dflt='8'
7394                 echo " "
7395                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7396                 rp="What is the size of a long double (in bytes)?"
7397                 . ./myread
7398                 longdblsize="$ans"
7399         fi
7400         if $test "X$doublesize" = "X$longdblsize"; then
7401                 echo "(That isn't any different from an ordinary double.)"
7402         fi      
7403         ;;
7404 esac
7405 $rm -f try.* try
7406
7407 echo " "
7408
7409 if $test X"$d_longdbl" = X"$define"; then
7410
7411 echo "Checking how to print long doubles..." >&4
7412
7413 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7414         $cat >try.c <<'EOCP'
7415 #include <sys/types.h>
7416 #include <stdio.h>
7417 int main() {
7418   double d = 123.456;
7419   printf("%.3f\n", d);
7420 }
7421 EOCP
7422         set try
7423         if eval $compile; then
7424                 yyy=`./try$exe_ext`
7425                 case "$yyy" in
7426                 123.456)
7427                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7428                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7429                         echo "We will use %f."
7430                         ;;
7431                 esac
7432         fi
7433 fi
7434
7435 if $test X"$sPRIfldbl" = X; then
7436         $cat >try.c <<'EOCP'
7437 #include <sys/types.h>
7438 #include <stdio.h>
7439 int main() {
7440   long double d = 123.456;
7441   printf("%.3llf\n", d);
7442 }
7443 EOCP
7444         set try
7445         if eval $compile; then
7446                 yyy=`./try$exe_ext`
7447                 case "$yyy" in
7448                 123.456)
7449                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7450                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7451                         echo "We will use %llf."
7452                         ;;
7453                 esac
7454         fi
7455 fi
7456
7457 if $test X"$sPRIfldbl" = X; then
7458         $cat >try.c <<'EOCP'
7459 #include <sys/types.h>
7460 #include <stdio.h>
7461 int main() {
7462   long double d = 123.456;
7463   printf("%.3Lf\n", d);
7464 }
7465 EOCP
7466         set try
7467         if eval $compile; then
7468                 yyy=`./try$exe_ext`
7469                 case "$yyy" in
7470                 123.456)
7471                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7472                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7473                         echo "We will use %Lf."
7474                         ;;
7475                 esac
7476         fi
7477 fi
7478
7479 if $test X"$sPRIfldbl" = X; then
7480         $cat >try.c <<'EOCP'
7481 #include <sys/types.h>
7482 #include <stdio.h>
7483 int main() {
7484   long double d = 123.456;
7485   printf("%.3lf\n", d);
7486 }
7487 EOCP
7488         set try
7489         if eval $compile; then
7490                 yyy=`./try$exe_ext`
7491                 case "$yyy" in
7492                 123.456)
7493                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7494                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7495                         echo "We will use %lf."
7496                         ;;
7497                 esac
7498         fi
7499 fi
7500
7501 if $test X"$sPRIfldbl" = X; then
7502         echo "Cannot figure out how to print long doubles." >&4
7503 fi
7504
7505 $rm -f try try.*
7506
7507 fi # d_longdbl
7508
7509 case "$sPRIfldbl" in
7510 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7511         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7512         ;;
7513 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7514         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7515         ;;
7516 esac
7517
7518 : Check how to convert floats to strings.
7519 if test "X$d_Gconvert" = X; then
7520         echo " "
7521         echo "Checking for an efficient way to convert floats to strings."
7522         echo " " > try.c
7523         case "$uselongdouble" in
7524         "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7525         esac
7526         case "$d_longdbl" in
7527         "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7528         esac
7529         case "$d_PRIgldbl" in
7530         "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7531         esac
7532         $cat >>try.c <<EOP
7533 #ifdef TRY_gconvert
7534 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7535 char *myname = "gconvert";
7536 #endif
7537 #ifdef TRY_gcvt
7538 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7539 char *myname = "gcvt";
7540 #endif
7541 #ifdef TRY_qgcvt
7542 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7543 char *myname = "qgcvt";
7544 #define DOUBLETYPE long double
7545 #endif
7546 #ifdef TRY_sprintf
7547 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7548 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7549 #else
7550 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7551 #endif
7552 char *myname = "sprintf";
7553 #endif
7554
7555 #ifndef DOUBLETYPE
7556 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7557 #define DOUBLETYPE long double
7558 #else
7559 #define DOUBLETYPE double
7560 #endif
7561 #endif
7562
7563 #include <stdio.h>
7564
7565 #define I_STDLIB $i_stdlib
7566 #ifdef I_STDLIB
7567 #include <stdlib.h>
7568 #endif
7569
7570 int
7571 checkit(expect, got)
7572 char *expect;
7573 char *got;
7574 {
7575     if (strcmp(expect, got)) {
7576                 printf("%s oddity:  Expected %s, got %s\n",
7577                         myname, expect, got);
7578                 exit(1);
7579         }
7580 }
7581
7582 int main()
7583
7584         char buf[64]; 
7585         buf[63] = '\0';
7586
7587         /* This must be 1st test on (which?) platform */
7588         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7589         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7590         checkit("0.1", buf);
7591
7592         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7593         checkit("1", buf);
7594
7595         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7596         checkit("1.1", buf);
7597
7598         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7599         checkit("1.01", buf);
7600
7601         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7602         checkit("1.001", buf);
7603
7604         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7605         checkit("1.0001", buf);
7606
7607         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7608         checkit("1.00001", buf);
7609
7610         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7611         checkit("1.000001", buf);
7612
7613         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7614         checkit("0", buf);
7615
7616         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7617         checkit("-1", buf);
7618
7619         /* Some Linux gcvt's give 1.e+5 here. */
7620         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7621         checkit("100000", buf);
7622         
7623         /* Some Linux gcvt's give -1.e+5 here. */
7624         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7625         checkit("-100000", buf);
7626
7627         exit(0);
7628 }
7629 EOP
7630         case "$d_Gconvert" in
7631         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7632         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7633         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7634         *) xxx_list='gconvert gcvt sprintf' ;;
7635         esac
7636
7637         case "$d_longdbl$uselongdouble$d_qgcvt" in
7638         "$define$define$define") xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7639         esac
7640
7641         for xxx_convert in $xxx_list; do
7642                 echo "Trying $xxx_convert..."
7643                 $rm -f try try$_o
7644                 set try -DTRY_$xxx_convert
7645                 if eval $compile; then
7646                         echo "$xxx_convert() found." >&4
7647                         if ./try; then
7648                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
7649                                 break;
7650                         else
7651                                 echo "...But $xxx_convert didn't work as I expected."
7652                         fi
7653                 else
7654                         echo "$xxx_convert NOT found." >&4
7655                 fi
7656         done
7657                 
7658         case "$xxx_convert" in
7659         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7660         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7661         qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7662         *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7663            "$define$define$define")
7664               d_Gconvert="sprintf((b),\"%.*$sPRIgldbl\",(n),(x))" ;;
7665            *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7666            esac
7667            ;;  
7668         esac
7669 fi
7670
7671 : Initialize h_fcntl
7672 h_fcntl=false
7673
7674 : Initialize h_sysfile
7675 h_sysfile=false
7676
7677 : access call always available on UNIX
7678 set access d_access
7679 eval $inlibc
7680
7681 : locate the flags for 'access()'
7682 case "$d_access" in
7683 "$define")
7684         echo " "
7685         $cat >access.c <<'EOCP'
7686 #include <sys/types.h>
7687 #ifdef I_FCNTL
7688 #include <fcntl.h>
7689 #endif
7690 #ifdef I_SYS_FILE
7691 #include <sys/file.h>
7692 #endif
7693 #ifdef I_UNISTD
7694 #include <unistd.h>
7695 #endif
7696 int main() {
7697         exit(R_OK);
7698 }
7699 EOCP
7700         : check sys/file.h first, no particular reason here
7701         if $test `./findhdr sys/file.h` && \
7702                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7703                 h_sysfile=true;
7704                 echo "<sys/file.h> defines the *_OK access constants." >&4
7705         elif $test `./findhdr fcntl.h` && \
7706                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7707                 h_fcntl=true;
7708                 echo "<fcntl.h> defines the *_OK access constants." >&4
7709         elif $test `./findhdr unistd.h` && \
7710                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7711                 echo "<unistd.h> defines the *_OK access constants." >&4
7712         else
7713                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7714         fi
7715         ;;
7716 esac
7717 $rm -f access*
7718
7719 : see if accessx exists
7720 set accessx d_accessx
7721 eval $inlibc
7722
7723 : see if alarm exists
7724 set alarm d_alarm
7725 eval $inlibc
7726
7727 : see if atolf exists
7728 set atolf d_atolf
7729 eval $inlibc
7730
7731 : see if atoll exists
7732 set atoll d_atoll
7733 eval $inlibc
7734
7735 : Look for GNU-cc style attribute checking
7736 echo " "
7737 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7738 $cat >attrib.c <<'EOCP'
7739 #include <stdio.h>
7740 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7741 EOCP
7742 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7743         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7744                 echo "Your C compiler doesn't fully support __attribute__."
7745                 val="$undef"
7746         else
7747                 echo "Your C compiler supports __attribute__."
7748                 val="$define"
7749         fi
7750 else
7751         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7752         val="$undef"
7753 fi
7754 set d_attribut
7755 eval $setvar
7756 $rm -f attrib*
7757
7758 : see if bcmp exists
7759 set bcmp d_bcmp
7760 eval $inlibc
7761
7762 : see if bcopy exists
7763 set bcopy d_bcopy
7764 eval $inlibc
7765
7766 : see if this is a unistd.h system
7767 set unistd.h i_unistd
7768 eval $inhdr
7769
7770 : see if getpgrp exists
7771 set getpgrp d_getpgrp
7772 eval $inlibc
7773
7774 case "$d_getpgrp" in
7775 "$define")
7776         echo " "
7777         echo "Checking to see which flavor of getpgrp is in use..."
7778         $cat >set.c <<EOP
7779 #$i_unistd I_UNISTD
7780 #include <sys/types.h>
7781 #ifdef I_UNISTD
7782 #  include <unistd.h>
7783 #endif
7784 int main()
7785 {
7786         if (getuid() == 0) {
7787                 printf("(I see you are running Configure as super-user...)\n");
7788                 setuid(1);
7789         }
7790 #ifdef TRY_BSD_PGRP
7791         if (getpgrp(1) == 0)
7792                 exit(0);
7793 #else
7794         if (getpgrp() > 0)
7795                 exit(0);
7796 #endif
7797         exit(1);
7798 }
7799 EOP
7800         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7801                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7802                 val="$define"
7803         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7804                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7805                 val="$undef"
7806         else
7807                 echo "I can't seem to compile and run the test program."
7808                 if ./usg; then
7809                         xxx="a USG one, i.e. you use getpgrp()."
7810                 else
7811                         # SVR4 systems can appear rather BSD-ish.
7812                         case "$i_unistd" in
7813                         $undef)
7814                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7815                                 val="$define"
7816                                 ;;
7817                         $define)
7818                                 xxx="probably a USG one, i.e. you use getpgrp()."
7819                                 val="$undef"
7820                                 ;;
7821                         esac
7822                 fi
7823                 echo "Assuming your getpgrp is $xxx" >&4
7824         fi
7825         ;;
7826 *) val="$undef";;
7827 esac
7828 set d_bsdgetpgrp
7829 eval $setvar
7830 $rm -f set set.c
7831
7832 : see if setpgrp exists
7833 set setpgrp d_setpgrp
7834 eval $inlibc
7835
7836 case "$d_setpgrp" in
7837 "$define")
7838         echo " "
7839         echo "Checking to see which flavor of setpgrp is in use..."
7840         $cat >set.c <<EOP
7841 #$i_unistd I_UNISTD
7842 #include <sys/types.h>
7843 #ifdef I_UNISTD
7844 #  include <unistd.h>
7845 #endif
7846 int main()
7847 {
7848         if (getuid() == 0) {
7849                 printf("(I see you are running Configure as super-user...)\n");
7850                 setuid(1);
7851         }
7852 #ifdef TRY_BSD_PGRP
7853         if (-1 == setpgrp(1, 1))
7854                 exit(0);
7855 #else
7856         if (setpgrp() != -1)
7857                 exit(0);
7858 #endif
7859         exit(1);
7860 }
7861 EOP
7862         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7863                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7864                 val="$define"
7865         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7866                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7867                 val="$undef"
7868         else
7869                 echo "(I can't seem to compile and run the test program.)"
7870                 if ./usg; then
7871                         xxx="a USG one, i.e. you use setpgrp()."
7872                 else
7873                         # SVR4 systems can appear rather BSD-ish.
7874                         case "$i_unistd" in
7875                         $undef)
7876                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7877                                 val="$define"
7878                                 ;;
7879                         $define)
7880                                 xxx="probably a USG one, i.e. you use setpgrp()."
7881                                 val="$undef"
7882                                 ;;
7883                         esac
7884                 fi
7885                 echo "Assuming your setpgrp is $xxx" >&4
7886         fi
7887         ;;
7888 *) val="$undef";;
7889 esac
7890 set d_bsdsetpgrp
7891 eval $setvar
7892 $rm -f set set.c
7893 : see if bzero exists
7894 set bzero d_bzero
7895 eval $inlibc
7896
7897 : see if signal is declared as pointer to function returning int or void
7898 echo " "
7899 xxx=`./findhdr signal.h`
7900 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7901 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7902         echo "You have int (*signal())() instead of void." >&4
7903         val="$undef"
7904 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
7905         echo "You have void (*signal())()." >&4
7906         val="$define"
7907 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7908         echo "You have int (*signal())() instead of void." >&4
7909         val="$undef"
7910 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7911         echo "You have void (*signal())()." >&4
7912         val="$define"
7913 else
7914         case "$d_voidsig" in
7915         '')
7916         echo "I can't determine whether signal handler returns void or int..." >&4
7917                 dflt=void
7918                 rp="What type does your signal handler return?"
7919                 . ./myread
7920                 case "$ans" in
7921                 v*) val="$define";;
7922                 *) val="$undef";;
7923                 esac;;
7924         "$define")
7925                 echo "As you already told me, signal handler returns void." >&4
7926                 val="$define"
7927                 ;;
7928         *)      echo "As you already told me, signal handler returns int." >&4
7929                 val="$undef"
7930                 ;;
7931         esac
7932 fi
7933 set d_voidsig
7934 eval $setvar
7935 case "$d_voidsig" in
7936 "$define") signal_t="void";;
7937 *) signal_t="int";;
7938 esac
7939 $rm -f $$.tmp
7940
7941 : check for ability to cast large floats to 32-bit ints.
7942 echo " "
7943 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7944 if $test "$intsize" -ge 4; then
7945         xxx=int
7946 else
7947         xxx=long
7948 fi
7949 $cat >try.c <<EOCP
7950 #include <stdio.h>
7951 #include <sys/types.h>
7952 #include <signal.h>
7953 $signal_t blech(s) int s; { exit(3); }
7954 int main()
7955 {
7956         $xxx i32;
7957         double f, g;
7958         int result = 0;
7959         char str[16];
7960         signal(SIGFPE, blech);
7961
7962         /* Don't let compiler optimize the test away.  Store the number 
7963            in a writable string for gcc to pass to sscanf under HP/UX.
7964         */
7965         sprintf(str, "2147483647");
7966         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7967         g = 10 * f;
7968         i32  = ($xxx) g;
7969
7970         /* x86 processors will probably give 0x8000 0000, which is a
7971        sign change.  We don't want that.  We want to mimic SPARC
7972            behavior here, which is to preserve the sign and give
7973            back 0x7fff ffff.
7974         */
7975         if (i32 != ($xxx) f)
7976                 result |= 1;
7977         exit(result);
7978 }
7979 EOCP
7980 set try
7981 if eval $compile_ok; then
7982         ./try
7983         yyy=$?
7984 else
7985         echo "(I can't seem to compile the test program--assuming it can't)"
7986         yyy=1
7987 fi
7988 case "$yyy" in
7989 0)      val="$define"
7990         echo "Yup, it can."
7991         ;;
7992 *)      val="$undef"
7993         echo "Nope, it can't."
7994         ;;
7995 esac
7996 set d_casti32
7997 eval $setvar
7998 $rm -f try try.*
7999
8000 : check for ability to cast negative floats to unsigned
8001 echo " "
8002 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8003 $cat >try.c <<EOCP
8004 #include <stdio.h>
8005 #include <sys/types.h>
8006 #include <signal.h>
8007 $signal_t blech(s) int s; { exit(7); }
8008 $signal_t blech_in_list(s) int s; { exit(4); }
8009 unsigned long dummy_long(p) unsigned long p; { return p; }
8010 unsigned int dummy_int(p) unsigned int p; { return p; }
8011 unsigned short dummy_short(p) unsigned short p; { return p; }
8012 int main()
8013 {
8014         double f;
8015         unsigned long along;
8016         unsigned int aint;
8017         unsigned short ashort;
8018         int result = 0;
8019         char str[16];
8020         
8021         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8022            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8023            optimized the whole file away
8024         */
8025         /* Store the number in a writable string for gcc to pass to 
8026            sscanf under HP/UX.
8027         */
8028         sprintf(str, "-123");
8029         sscanf(str, "%lf", &f);  /* f = -123.; */
8030
8031         signal(SIGFPE, blech);
8032         along = (unsigned long)f;
8033         aint = (unsigned int)f;
8034         ashort = (unsigned short)f;
8035         if (along != (unsigned long)-123)
8036                 result |= 1;
8037         if (aint != (unsigned int)-123)
8038                 result |= 1;
8039         if (ashort != (unsigned short)-123)
8040                 result |= 1;
8041         sprintf(str, "1073741824.");
8042         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8043         f = f + f;
8044         along = 0;
8045         along = (unsigned long)f;
8046         if (along != 0x80000000)
8047                 result |= 2;
8048         f -= 1.;
8049         along = 0;
8050         along = (unsigned long)f;
8051         if (along != 0x7fffffff)
8052                 result |= 1;
8053         f += 2.;
8054         along = 0;
8055         along = (unsigned long)f;
8056         if (along != 0x80000001)
8057                 result |= 2;
8058         if (result)
8059                 exit(result);
8060         signal(SIGFPE, blech_in_list);
8061         sprintf(str, "123.");
8062         sscanf(str, "%lf", &f);  /* f = 123.; */
8063         along = dummy_long((unsigned long)f);
8064         aint = dummy_int((unsigned int)f);
8065         ashort = dummy_short((unsigned short)f);
8066         if (along != (unsigned long)123)
8067                 result |= 4;
8068         if (aint != (unsigned int)123)
8069                 result |= 4;
8070         if (ashort != (unsigned short)123)
8071                 result |= 4;
8072         exit(result);
8073
8074 }
8075 EOCP
8076 set try
8077 if eval $compile_ok; then
8078         ./try
8079         castflags=$?
8080 else
8081         echo "(I can't seem to compile the test program--assuming it can't)"
8082         castflags=7
8083 fi
8084 case "$castflags" in
8085 0)      val="$define"
8086         echo "Yup, it can."
8087         ;;
8088 *)      val="$undef"
8089         echo "Nope, it can't."
8090         ;;
8091 esac
8092 set d_castneg
8093 eval $setvar
8094 $rm -f try.*
8095
8096 : see if vprintf exists
8097 echo " "
8098 if set vprintf val -f d_vprintf; eval $csym; $val; then
8099         echo 'vprintf() found.' >&4
8100         val="$define"
8101         $cat >vprintf.c <<'EOF'
8102 #include <varargs.h>
8103
8104 int main() { xxx("foo"); }
8105
8106 xxx(va_alist)
8107 va_dcl
8108 {
8109         va_list args;
8110         char buf[10];
8111
8112         va_start(args);
8113         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8114 }
8115 EOF
8116         set vprintf
8117         if eval $compile && ./vprintf; then
8118                 echo "Your vsprintf() returns (int)." >&4
8119                 val2="$undef"
8120         else
8121                 echo "Your vsprintf() returns (char*)." >&4
8122                 val2="$define"
8123         fi
8124 else
8125         echo 'vprintf() NOT found.' >&4
8126                 val="$undef"
8127                 val2="$undef"
8128 fi
8129 set d_vprintf
8130 eval $setvar
8131 val=$val2
8132 set d_charvspr
8133 eval $setvar
8134
8135 : see if chown exists
8136 set chown d_chown
8137 eval $inlibc
8138
8139 : see if chroot exists
8140 set chroot d_chroot
8141 eval $inlibc
8142
8143 : see if chsize exists
8144 set chsize d_chsize
8145 eval $inlibc
8146
8147 : check for const keyword
8148 echo " "
8149 echo 'Checking to see if your C compiler knows about "const"...' >&4
8150 $cat >const.c <<'EOCP'
8151 typedef struct spug { int drokk; } spug;
8152 int main()
8153 {
8154         const char *foo;
8155         const spug y;
8156 }
8157 EOCP
8158 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8159         val="$define"
8160         echo "Yup, it does."
8161 else
8162         val="$undef"
8163         echo "Nope, it doesn't."
8164 fi
8165 set d_const
8166 eval $setvar
8167
8168 : see if crypt exists
8169 echo " "
8170 if set crypt val -f d_crypt; eval $csym; $val; then
8171         echo 'crypt() found.' >&4
8172         val="$define"
8173         cryptlib=''
8174 else
8175         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8176         if $test -z "$cryptlib"; then
8177                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8178         else
8179                 cryptlib=-lcrypt
8180         fi
8181         if $test -z "$cryptlib"; then
8182                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8183         else
8184                 cryptlib=-lcrypt
8185         fi
8186         if $test -z "$cryptlib"; then
8187                 cryptlib=`./loc libcrypt$_a "" $libpth`
8188         else
8189                 cryptlib=-lcrypt
8190         fi
8191         if $test -z "$cryptlib"; then
8192                 echo 'crypt() NOT found.' >&4
8193                 val="$undef"
8194         else
8195                 val="$define"
8196         fi
8197 fi
8198 set d_crypt
8199 eval $setvar
8200
8201 : get csh whereabouts
8202 case "$csh" in
8203 'csh') val="$undef" ;;
8204 *) val="$define" ;;
8205 esac
8206 set d_csh
8207 eval $setvar
8208 : Respect a hint or command line value for full_csh.
8209 case "$full_csh" in
8210 '') full_csh=$csh ;;
8211 esac
8212
8213 : see if cuserid exists
8214 set cuserid d_cuserid
8215 eval $inlibc
8216
8217 : see if this is a limits.h system
8218 set limits.h i_limits
8219 eval $inhdr
8220
8221 : see if this is a float.h system
8222 set float.h i_float
8223 eval $inhdr
8224
8225 : See if number of significant digits in a double precision number is known
8226 echo " "
8227 $cat >dbl_dig.c <<EOM
8228 #$i_limits I_LIMITS
8229 #$i_float I_FLOAT
8230 #ifdef I_LIMITS
8231 #include <limits.h>
8232 #endif
8233 #ifdef I_FLOAT
8234 #include <float.h>
8235 #endif
8236 #ifdef DBL_DIG
8237 printf("Contains DBL_DIG");
8238 #endif
8239 EOM
8240 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8241 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8242         echo "DBL_DIG found." >&4
8243         val="$define"
8244 else
8245         echo "DBL_DIG NOT found." >&4
8246         val="$undef"
8247 fi
8248 $rm -f dbl_dig.?
8249 set d_dbl_dig
8250 eval $setvar
8251
8252 : see if difftime exists
8253 set difftime d_difftime
8254 eval $inlibc
8255
8256 : see if this is a dirent system
8257 echo " "
8258 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8259         val="$define"
8260         echo "<dirent.h> found." >&4
8261 else
8262         val="$undef"
8263         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8264                 echo "<sys/dir.h> found." >&4
8265                 echo " "
8266         else
8267                 xinc=`./findhdr sys/ndir.h`
8268         fi
8269         echo "<dirent.h> NOT found." >&4
8270 fi
8271 set i_dirent
8272 eval $setvar
8273
8274 : Look for type of directory structure.
8275 echo " "
8276 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8277
8278 case "$direntrytype" in
8279 ''|' ')
8280         case "$i_dirent" in
8281         $define) guess1='struct dirent' ;;
8282         *) guess1='struct direct'  ;;
8283         esac
8284         ;;
8285 *)      guess1="$direntrytype"
8286         ;;
8287 esac
8288
8289 case "$guess1" in
8290 'struct dirent') guess2='struct direct' ;;
8291 *) guess2='struct dirent' ;;
8292 esac
8293                 
8294 if $contains "$guess1" try.c >/dev/null 2>&1; then
8295         direntrytype="$guess1"
8296         echo "Your directory entries are $direntrytype." >&4
8297 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8298         direntrytype="$guess2"
8299         echo "Your directory entries seem to be $direntrytype." >&4
8300 else
8301         echo "I don't recognize your system's directory entries." >&4
8302         rp="What type is used for directory entries on this system?"
8303         dflt="$guess1"
8304         . ./myread
8305         direntrytype="$ans"
8306 fi
8307 $rm -f try.c
8308
8309
8310 : see if the directory entry stores field length
8311 echo " "
8312 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8313 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8314         echo "Good, your directory entry keeps length information in d_namlen." >&4
8315         val="$define"
8316 else
8317         echo "Your directory entry does not know about the d_namlen field." >&4
8318         val="$undef"
8319 fi
8320 set d_dirnamlen
8321 eval $setvar
8322 $rm -f try.c
8323
8324 : see if dlerror exists
8325 xxx_runnm="$runnm"
8326 runnm=false
8327 set dlerror d_dlerror
8328 eval $inlibc
8329 runnm="$xxx_runnm"
8330
8331 : see if dlfcn is available
8332 set dlfcn.h i_dlfcn
8333 eval $inhdr
8334
8335 case "$usedl" in
8336 $define|y|true)
8337         $cat << EOM
8338
8339 On a few systems, the dynamically loaded modules that perl generates and uses
8340 will need a different extension than shared libs. The default will probably
8341 be appropriate.
8342
8343 EOM
8344         case "$dlext" in
8345         '')     dflt="$so" ;;
8346         *)      dflt="$dlext" ;;
8347         esac
8348         rp='What is the extension of dynamically loaded modules'
8349         . ./myread
8350         dlext="$ans"
8351         ;;
8352 *)
8353         dlext="none"
8354         ;;
8355 esac
8356
8357 : Check if dlsym need a leading underscore
8358 echo " "
8359 val="$undef"
8360
8361 case "$dlsrc" in
8362 dl_dlopen.xs)
8363         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8364         $cat >dyna.c <<'EOM'
8365 fred () { }
8366 EOM
8367
8368 $cat >fred.c<<EOM
8369
8370 #include <stdio.h>
8371 #$i_dlfcn I_DLFCN
8372 #ifdef I_DLFCN
8373 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8374 #else
8375 #include <sys/types.h>
8376 #include <nlist.h>
8377 #include <link.h>
8378 #endif
8379
8380 extern int fred() ;
8381
8382 int main()
8383 {
8384     void * handle ;
8385     void * symbol ;
8386 #ifndef RTLD_LAZY
8387     int mode = 1 ;
8388 #else
8389     int mode = RTLD_LAZY ;
8390 #endif
8391     handle = dlopen("./dyna.$dlext", mode) ;
8392     if (handle == NULL) {
8393         printf ("1\n") ;
8394         fflush (stdout) ;
8395         exit(0);
8396     }
8397     symbol = dlsym(handle, "fred") ;
8398     if (symbol == NULL) {
8399         /* try putting a leading underscore */
8400         symbol = dlsym(handle, "_fred") ;
8401         if (symbol == NULL) {
8402             printf ("2\n") ;
8403             fflush (stdout) ;
8404             exit(0);
8405         }
8406         printf ("3\n") ;
8407     }
8408     else
8409         printf ("4\n") ;
8410     fflush (stdout) ;
8411     exit(0);
8412 }
8413 EOM
8414         : Call the object file tmp-dyna.o in case dlext=o.
8415         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8416                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8417                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8418                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8419                 xxx=`./fred`
8420                 case $xxx in
8421                 1)      echo "Test program failed using dlopen." >&4
8422                         echo "Perhaps you should not use dynamic loading." >&4;;
8423                 2)      echo "Test program failed using dlsym." >&4
8424                         echo "Perhaps you should not use dynamic loading." >&4;;
8425                 3)      echo "dlsym needs a leading underscore" >&4
8426                         val="$define" ;;
8427                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8428                 esac
8429         else
8430                 echo "I can't compile and run the test program." >&4
8431                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8432         fi
8433         ;;
8434 esac
8435                 
8436 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8437
8438 set d_dlsymun
8439 eval $setvar
8440
8441 hasproto='varname=$1; func=$2; shift; shift;
8442 while $test $# -ge 2; do
8443         case "$1" in
8444         $define) echo "#include <$2>";;
8445         esac ;
8446     shift 2;
8447 done > try.c;
8448 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8449 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8450         echo "$func() prototype found.";
8451         val="$define";
8452 else
8453         echo "$func() prototype NOT found.";
8454         val="$undef";
8455 fi;
8456 set $varname;
8457 eval $setvar;
8458 $rm -f try.c tryout.c'
8459
8460 : see if prototype for drand48 is available
8461 echo " "
8462 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8463 eval $hasproto
8464
8465 : see if dup2 exists
8466 set dup2 d_dup2
8467 eval $inlibc
8468
8469 : see if eaccess exists
8470 set eaccess d_eaccess
8471 eval $inlibc
8472
8473 : see if endgrent exists
8474 set endgrent d_endgrent
8475 eval $inlibc
8476
8477 : see if endhostent exists
8478 set endhostent d_endhent
8479 eval $inlibc
8480
8481 : see if endnetent exists
8482 set endnetent d_endnent
8483 eval $inlibc
8484
8485 : see if endprotoent exists
8486 set endprotoent d_endpent
8487 eval $inlibc
8488
8489 : see if endpwent exists
8490 set endpwent d_endpwent
8491 eval $inlibc
8492
8493 : see if endservent exists
8494 set endservent d_endsent
8495 eval $inlibc
8496
8497 : see if endspent exists
8498 set endspent d_endspent
8499 eval $inlibc
8500
8501 : Locate the flags for 'open()'
8502 echo " "
8503 $cat >open3.c <<'EOCP'
8504 #include <sys/types.h>
8505 #ifdef I_FCNTL
8506 #include <fcntl.h>
8507 #endif
8508 #ifdef I_SYS_FILE
8509 #include <sys/file.h>
8510 #endif
8511 int main() {
8512         if(O_RDONLY);
8513 #ifdef O_TRUNC
8514         exit(0);
8515 #else
8516         exit(1);
8517 #endif
8518 }
8519 EOCP
8520 : check sys/file.h first to get FREAD on Sun
8521 if $test `./findhdr sys/file.h` && \
8522                 set open3 -DI_SYS_FILE && eval $compile; then
8523         h_sysfile=true;
8524         echo "<sys/file.h> defines the O_* constants..." >&4
8525         if ./open3; then
8526                 echo "and you have the 3 argument form of open()." >&4
8527                 val="$define"
8528         else
8529                 echo "but not the 3 argument form of open().  Oh, well." >&4
8530                 val="$undef"
8531         fi
8532 elif $test `./findhdr fcntl.h` && \
8533                 set open3 -DI_FCNTL && eval $compile; then
8534         h_fcntl=true;
8535         echo "<fcntl.h> defines the O_* constants..." >&4
8536         if ./open3; then
8537                 echo "and you have the 3 argument form of open()." >&4
8538                 val="$define"
8539         else
8540                 echo "but not the 3 argument form of open().  Oh, well." >&4
8541                 val="$undef"
8542         fi
8543 else
8544         val="$undef"
8545         echo "I can't find the O_* constant definitions!  You got problems." >&4
8546 fi
8547 set d_open3
8548 eval $setvar
8549 $rm -f open3*
8550
8551 : see which of string.h or strings.h is needed
8552 echo " "
8553 strings=`./findhdr string.h`
8554 if $test "$strings" && $test -r "$strings"; then
8555         echo "Using <string.h> instead of <strings.h>." >&4
8556         val="$define"
8557 else
8558         val="$undef"
8559         strings=`./findhdr strings.h`
8560         if $test "$strings" && $test -r "$strings"; then
8561                 echo "Using <strings.h> instead of <string.h>." >&4
8562         else
8563                 echo "No string header found -- You'll surely have problems." >&4
8564         fi
8565 fi
8566 set i_string
8567 eval $setvar
8568 case "$i_string" in
8569 "$undef") strings=`./findhdr strings.h`;;
8570 *)        strings=`./findhdr string.h`;;
8571 esac
8572
8573 : check for non-blocking I/O stuff
8574 case "$h_sysfile" in
8575 true) echo "#include <sys/file.h>" > head.c;;
8576 *)
8577         case "$h_fcntl" in
8578         true) echo "#include <fcntl.h>" > head.c;;
8579         *) echo "#include <sys/fcntl.h>" > head.c;;
8580         esac
8581         ;;
8582 esac
8583 echo " "
8584 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8585 case "$o_nonblock" in
8586 '')
8587         $cat head.c > try.c
8588         $cat >>try.c <<'EOCP'
8589 #include <stdio.h>
8590 int main() {
8591 #ifdef O_NONBLOCK
8592         printf("O_NONBLOCK\n");
8593         exit(0);
8594 #endif
8595 #ifdef O_NDELAY
8596         printf("O_NDELAY\n");
8597         exit(0);
8598 #endif
8599 #ifdef FNDELAY
8600         printf("FNDELAY\n");
8601         exit(0);
8602 #endif
8603         exit(0);
8604 }
8605 EOCP
8606         set try
8607         if eval $compile_ok; then
8608                 o_nonblock=`./try`
8609                 case "$o_nonblock" in
8610                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8611                 *) echo "Seems like we can use $o_nonblock.";;
8612                 esac
8613         else
8614                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8615         fi
8616         ;;
8617 *) echo "Using $hint value $o_nonblock.";;
8618 esac
8619 $rm -f try try.* .out core
8620
8621 echo " "
8622 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8623 case "$eagain" in
8624 '')
8625         $cat head.c > try.c
8626         $cat >>try.c <<EOCP
8627 #include <errno.h>
8628 #include <sys/types.h>
8629 #include <signal.h>
8630 #include <stdio.h> 
8631 #define MY_O_NONBLOCK $o_nonblock
8632 #ifndef errno  /* XXX need better Configure test */
8633 extern int errno;
8634 #endif
8635 #$i_unistd I_UNISTD
8636 #ifdef I_UNISTD
8637 #include <unistd.h>
8638 #endif
8639 #$i_string I_STRING
8640 #ifdef I_STRING
8641 #include <string.h>
8642 #else
8643 #include <strings.h>
8644 #endif
8645 $signal_t blech(x) int x; { exit(3); }
8646 EOCP
8647         $cat >> try.c <<'EOCP'
8648 int main()
8649 {
8650         int pd[2];
8651         int pu[2];
8652         char buf[1];
8653         char string[100];
8654
8655         pipe(pd);       /* Down: child -> parent */
8656         pipe(pu);       /* Up: parent -> child */
8657         if (0 != fork()) {
8658                 int ret;
8659                 close(pd[1]);   /* Parent reads from pd[0] */
8660                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8661                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8662                         exit(1);
8663                 signal(SIGALRM, blech);
8664                 alarm(5);
8665                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8666                         exit(2);
8667                 sprintf(string, "%d\n", ret);
8668                 write(2, string, strlen(string));
8669                 alarm(0);
8670 #ifdef EAGAIN
8671                 if (errno == EAGAIN) {
8672                         printf("EAGAIN\n");
8673                         goto ok;
8674                 }
8675 #endif
8676 #ifdef EWOULDBLOCK
8677                 if (errno == EWOULDBLOCK)
8678                         printf("EWOULDBLOCK\n");
8679 #endif
8680         ok:
8681                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8682                 sleep(2);                               /* Give it time to close our pipe */
8683                 alarm(5);
8684                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8685                 alarm(0);
8686                 sprintf(string, "%d\n", ret);
8687                 write(3, string, strlen(string));
8688                 exit(0);
8689         }
8690
8691         close(pd[0]);                   /* We write to pd[1] */
8692         close(pu[1]);                   /* We read from pu[0] */
8693         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8694         close(pd[1]);                   /* Pipe pd is now fully closed! */
8695         exit(0);                                /* Bye bye, thank you for playing! */
8696 }
8697 EOCP
8698         set try
8699         if eval $compile_ok; then
8700                 echo "$startsh" >mtry
8701                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8702                 chmod +x mtry
8703                 ./mtry >/dev/null 2>&1
8704                 case $? in
8705                 0) eagain=`$cat try.out`;;
8706                 1) echo "Could not perform non-blocking setting!";;
8707                 2) echo "I did a successful read() for something that was not there!";;
8708                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8709                 *) echo "Something terribly wrong happened during testing.";;
8710                 esac
8711                 rd_nodata=`$cat try.ret`
8712                 echo "A read() system call with no data present returns $rd_nodata."
8713                 case "$rd_nodata" in
8714                 0|-1) ;;
8715                 *)
8716                         echo "(That's peculiar, fixing that to be -1.)"
8717                         rd_nodata=-1
8718                         ;;
8719                 esac
8720                 case "$eagain" in
8721                 '')
8722                         echo "Forcing errno EAGAIN on read() with no data available."
8723                         eagain=EAGAIN
8724                         ;;
8725                 *)
8726                         echo "Your read() sets errno to $eagain when no data is available."
8727                         ;;
8728                 esac
8729                 status=`$cat try.err`
8730                 case "$status" in
8731                 0) echo "And it correctly returns 0 to signal EOF.";;
8732                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8733                 *) echo "However, your read() returns '$status' on EOF??";;
8734                 esac
8735                 val="$define"
8736                 if test "$status" = "$rd_nodata"; then
8737                         echo "WARNING: you can't distinguish between EOF and no data!"
8738                         val="$undef"
8739                 fi
8740         else
8741                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8742                 eagain=EAGAIN
8743         fi
8744         set d_eofnblk
8745         eval $setvar
8746         ;;
8747 *)
8748         echo "Using $hint value $eagain."
8749         echo "Your read() returns $rd_nodata when no data is present."
8750         case "$d_eofnblk" in
8751         "$define") echo "And you can see EOF because read() returns 0.";;
8752         "$undef") echo "But you can't see EOF status from read() returned value.";;
8753         *)
8754                 echo "(Assuming you can't see EOF status from read anyway.)"
8755                 d_eofnblk=$undef
8756                 ;;
8757         esac
8758         ;;
8759 esac
8760 $rm -f try try.* .out core head.c mtry
8761
8762 : see if fchmod exists
8763 set fchmod d_fchmod
8764 eval $inlibc
8765
8766 : see if fchown exists
8767 set fchown d_fchown
8768 eval $inlibc
8769
8770 : see if this is an fcntl system
8771 set fcntl d_fcntl
8772 eval $inlibc
8773
8774 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8775 while $test $# -ge 2; do
8776         case "$1" in
8777         $define) echo "#include <$2>";;
8778         esac ;
8779     shift 2;
8780 done > try.c;
8781 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8782 set try;
8783 if eval $compile; then
8784         val="$define";
8785 else
8786         val="$undef";
8787 fi;
8788 set $varname;
8789 eval $setvar;
8790 $rm -f try.c try.o'
8791
8792 socketlib=''
8793 sockethdr=''
8794 : see whether socket exists
8795 echo " "
8796 $echo $n "Hmm... $c" >&4
8797 if set socket val -f d_socket; eval $csym; $val; then
8798         echo "Looks like you have Berkeley networking support." >&4
8799         d_socket="$define"
8800         if set setsockopt val -f; eval $csym; $val; then
8801                 d_oldsock="$undef"
8802         else
8803                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8804                 d_oldsock="$define"
8805         fi
8806 else
8807         if $contains socklib libc.list >/dev/null 2>&1; then
8808                 echo "Looks like you have Berkeley networking support." >&4
8809                 d_socket="$define"
8810                 : we will have to assume that it supports the 4.2 BSD interface
8811                 d_oldsock="$undef"
8812         else
8813                 echo "You don't have Berkeley networking in libc$_a..." >&4
8814                 if test "X$d_socket" = "X$define"; then
8815                    echo "...but you seem to believe that you have sockets." >&4
8816                 else
8817                         for net in net socket
8818                         do
8819                                 if test -f /usr/lib/lib$net$_a; then
8820                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8821                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8822                                         if $contains socket libc.list >/dev/null 2>&1; then
8823                                                 d_socket="$define"
8824                                                 socketlib="-l$net"
8825                                                 case "$net" in
8826                                                 net)
8827                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8828                                                         sockethdr="-I/usr/netinclude"
8829                                                         ;;
8830                                                 esac
8831                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8832                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8833                                                         d_oldsock="$undef"
8834                                                 else
8835                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8836                                                         d_oldsock="$define"
8837                                                 fi
8838                                                 break
8839                                         fi
8840                                 fi
8841                         done
8842                         if test "X$d_socket" != "X$define"; then
8843                            echo "or anywhere else I see." >&4
8844                            d_socket="$undef"
8845                            d_oldsock="$undef"
8846                         fi
8847                 fi
8848         fi
8849 fi
8850
8851 : see if socketpair exists
8852 set socketpair d_sockpair
8853 eval $inlibc
8854
8855
8856 echo " "
8857 echo "Checking the availability of certain socket constants..." >& 4
8858 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8859         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8860         $cat >try.c <<EOF
8861 #include <sys/types.h>
8862 #include <sys/socket.h>
8863 int main() {
8864     int i = $ENUM;
8865 }
8866 EOF
8867         val="$undef"
8868         set try; if eval $compile; then
8869                 val="$define"
8870         fi
8871         set d_${enum}; eval $setvar
8872         $rm -f try.c try
8873 done
8874
8875 : see if sys/select.h has to be included
8876 set sys/select.h i_sysselct
8877 eval $inhdr
8878
8879 : see if we should include time.h, sys/time.h, or both
8880 echo " "
8881 if test "X$timeincl" = X; then
8882         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8883         $echo $n "I'm now running the test program...$c"
8884         $cat >try.c <<'EOCP'
8885 #include <sys/types.h>
8886 #ifdef I_TIME
8887 #include <time.h>
8888 #endif
8889 #ifdef I_SYSTIME
8890 #ifdef SYSTIMEKERNEL
8891 #define KERNEL
8892 #endif
8893 #include <sys/time.h>
8894 #endif
8895 #ifdef I_SYSSELECT
8896 #include <sys/select.h>
8897 #endif
8898 int main()
8899 {
8900         struct tm foo;
8901 #ifdef S_TIMEVAL
8902         struct timeval bar;
8903 #endif
8904 #ifdef S_TIMEZONE
8905         struct timezone tzp;
8906 #endif
8907         if (foo.tm_sec == foo.tm_sec)
8908                 exit(0);
8909 #ifdef S_TIMEVAL
8910         if (bar.tv_sec == bar.tv_sec)
8911                 exit(0);
8912 #endif
8913         exit(1);
8914 }
8915 EOCP
8916         flags=''
8917         for s_timezone in '-DS_TIMEZONE' ''; do
8918         sysselect=''
8919         for s_timeval in '-DS_TIMEVAL' ''; do
8920         for i_systimek in '' '-DSYSTIMEKERNEL'; do
8921         for i_time in '' '-DI_TIME'; do
8922         for i_systime in '-DI_SYSTIME' ''; do
8923                 case "$flags" in
8924                 '') $echo $n ".$c"
8925                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8926                         if eval $compile; then
8927                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8928                                 shift
8929                                 flags="$*"
8930                                 echo " "
8931                                 $echo $n "Succeeded with $flags$c"
8932                         fi
8933                         ;;
8934                 esac
8935         done
8936         done
8937         done
8938         done
8939         done
8940         timeincl=''
8941         echo " "
8942         case "$flags" in
8943         *SYSTIMEKERNEL*) i_systimek="$define"
8944                 timeincl=`./findhdr sys/time.h`
8945                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8946         *) i_systimek="$undef";;
8947         esac
8948         case "$flags" in
8949         *I_TIME*) i_time="$define"
8950                 timeincl=`./findhdr time.h`" $timeincl"
8951                 echo "We'll include <time.h>." >&4;;
8952         *) i_time="$undef";;
8953         esac
8954         case "$flags" in
8955         *I_SYSTIME*) i_systime="$define"
8956                 timeincl=`./findhdr sys/time.h`" $timeincl"
8957                 echo "We'll include <sys/time.h>." >&4;;
8958         *) i_systime="$undef";;
8959         esac
8960         $rm -f try.c try
8961 fi
8962
8963 : check for fd_set items
8964 $cat <<EOM
8965
8966 Checking to see how well your C compiler handles fd_set and friends ...
8967 EOM
8968 $cat >fd_set.c <<EOCP
8969 #$i_systime I_SYS_TIME
8970 #$i_sysselct I_SYS_SELECT
8971 #$d_socket HAS_SOCKET
8972 #include <sys/types.h>
8973 #ifdef HAS_SOCKET
8974 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8975 #endif
8976 #ifdef I_SYS_TIME
8977 #include <sys/time.h>
8978 #endif
8979 #ifdef I_SYS_SELECT
8980 #include <sys/select.h>
8981 #endif
8982 int main() {
8983         fd_set fds;
8984
8985 #ifdef TRYBITS
8986         if(fds.fds_bits);
8987 #endif
8988
8989 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8990         exit(0);
8991 #else
8992         exit(1);
8993 #endif
8994 }
8995 EOCP
8996 set fd_set -DTRYBITS
8997 if eval $compile; then
8998         d_fds_bits="$define"
8999         d_fd_set="$define"
9000         echo "Well, your system knows about the normal fd_set typedef..." >&4
9001         if ./fd_set; then
9002                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9003                 d_fd_macros="$define"
9004         else
9005                 $cat >&4 <<'EOM'
9006 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9007 EOM
9008                 d_fd_macros="$undef"
9009         fi
9010 else
9011         $cat <<'EOM'
9012 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9013 EOM
9014         set fd_set
9015         if eval $compile; then
9016                 d_fds_bits="$undef"
9017                 d_fd_set="$define"
9018                 echo "Well, your system has some sort of fd_set available..." >&4
9019                 if ./fd_set; then
9020                         echo "and you have the normal fd_set macros." >&4
9021                         d_fd_macros="$define"
9022                 else
9023                         $cat <<'EOM'
9024 but not the normal fd_set macros!  Gross!  More work for me...
9025 EOM
9026                         d_fd_macros="$undef"
9027                 fi
9028         else
9029         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9030                 d_fd_set="$undef"
9031                 d_fds_bits="$undef"
9032                 d_fd_macros="$undef"
9033         fi
9034 fi
9035 $rm -f fd_set*
9036
9037 : see if fgetpos exists
9038 set fgetpos d_fgetpos
9039 eval $inlibc
9040
9041 : see if flock exists
9042 set flock d_flock
9043 eval $inlibc
9044
9045 : see if fork exists
9046 set fork d_fork
9047 eval $inlibc
9048
9049 : see if pathconf exists
9050 set pathconf d_pathconf
9051 eval $inlibc
9052
9053 : see if fpathconf exists
9054 set fpathconf d_fpathconf
9055 eval $inlibc
9056
9057
9058 : check for fpos64_t
9059 echo " "
9060 echo "Checking to see if you have fpos64_t..." >&4
9061 $cat >try.c <<EOCP
9062 #include <stdio.h>
9063 int main() { fpos64_t x = 7; }
9064 EOCP
9065 set try
9066 if eval $compile; then
9067         val="$define"
9068         echo "You have fpos64_t."
9069 else
9070         val="$undef"
9071         echo "You do not have fpos64_t."
9072         case "$fpossize" in
9073         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9074         esac
9075 fi
9076 $rm -f try.* try
9077 set d_fpos64_t
9078 eval $setvar
9079
9080 hasstruct='varname=$1; struct=$2; shift; shift;
9081 while $test $# -ge 2; do
9082         case "$1" in
9083         $define) echo "#include <$2>";;
9084         esac ;
9085     shift 2;
9086 done > try.c;
9087 echo "int main () { struct $struct foo; }" >> try.c;
9088 set try;
9089 if eval $compile; then
9090         val="$define";
9091 else
9092         val="$undef";
9093 fi;
9094 set $varname;
9095 eval $setvar;
9096 $rm -f try.c try.o'
9097
9098 : see if this is a sys/param system
9099 set sys/param.h i_sysparam
9100 eval $inhdr
9101
9102 : see if this is a sys/mount.h system
9103 set sys/mount.h i_sysmount
9104 eval $inhdr
9105
9106 : see if sys/types.h has to be included
9107 set sys/types.h i_systypes
9108 eval $inhdr
9109
9110
9111 echo " "
9112 echo "Checking to see if your system supports struct fs_data..." >&4
9113 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9114 eval $hasstruct
9115 case "$d_fs_data_s" in
9116 "$define")      echo "Yes, it does."   ;;
9117 *)              echo "No, it doesn't." ;;
9118 esac
9119
9120 : see if fseeko exists
9121 set fseeko d_fseeko
9122 eval $inlibc
9123 case "$longsize" in
9124 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9125 esac
9126
9127 : see if fsetpos exists
9128 set fsetpos d_fsetpos
9129 eval $inlibc
9130
9131
9132 : see if fstatfs exists
9133 set fstatfs d_fstatfs
9134 eval $inlibc
9135
9136
9137 : see if statvfs exists
9138 set statvfs d_statvfs
9139 eval $inlibc
9140
9141 : see if fstatvfs exists
9142 set fstatvfs d_fstatvfs
9143 eval $inlibc
9144
9145
9146 : see if ftello exists
9147 set ftello d_ftello
9148 eval $inlibc
9149 case "$longsize" in
9150 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9151 esac
9152
9153 : see if getcwd exists
9154 set getcwd d_getcwd
9155 eval $inlibc
9156
9157
9158 : see if getfsstat exists
9159 set getfsstat d_getfsstat
9160 eval $inlibc
9161
9162 : see if getgrent exists
9163 set getgrent d_getgrent
9164 eval $inlibc
9165
9166 : see if gethostbyaddr exists
9167 set gethostbyaddr d_gethbyaddr
9168 eval $inlibc
9169
9170 : see if gethostbyname exists
9171 set gethostbyname d_gethbyname
9172 eval $inlibc
9173
9174 : see if gethostent exists
9175 set gethostent d_gethent
9176 eval $inlibc
9177
9178 : see how we will look up host name
9179 echo " "
9180 call=''
9181 if set gethostname val -f d_gethname; eval $csym; $val; then
9182         echo 'gethostname() found.' >&4
9183         d_gethname="$define"
9184         call=gethostname
9185 fi
9186 if set uname val -f d_uname; eval $csym; $val; then
9187         if ./xenix; then
9188                 $cat <<'EOM'
9189 uname() was found, but you're running xenix, and older versions of xenix
9190 have a broken uname(). If you don't really know whether your xenix is old
9191 enough to have a broken system call, use the default answer.
9192
9193 EOM
9194                 dflt=y
9195                 case "$d_uname" in
9196                 "$define") dflt=n;;
9197                 esac
9198                 rp='Is your uname() broken?'
9199                 . ./myread
9200                 case "$ans" in
9201                 n*) d_uname="$define"; call=uname;;
9202                 esac
9203         else
9204                 echo 'uname() found.' >&4
9205                 d_uname="$define"
9206                 case "$call" in
9207                 '') call=uname ;;
9208                 esac
9209         fi
9210 fi
9211 case "$d_gethname" in
9212 '') d_gethname="$undef";;
9213 esac
9214 case "$d_uname" in
9215 '') d_uname="$undef";;
9216 esac
9217 case "$d_uname$d_gethname" in
9218 *define*)
9219         dflt=n
9220         cat <<EOM
9221  
9222 Every now and then someone has a $call() that lies about the hostname
9223 but can't be fixed for political or economic reasons.  If you wish, I can
9224 pretend $call() isn't there and maybe compute hostname at run-time
9225 thanks to the '$phostname' command.
9226
9227 EOM
9228         rp="Shall I ignore $call() from now on?"
9229         . ./myread
9230         case "$ans" in
9231         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9232         esac;;
9233 esac
9234 case "$phostname" in
9235 '') aphostname='';;
9236 *) case "$aphostname" in
9237         /*) ;;
9238         *) set X $phostname
9239                 shift
9240                 file=$1
9241                 shift
9242                 file=`./loc $file $file $pth`
9243                 aphostname=`echo $file $*`
9244                 ;;
9245         esac
9246         ;;
9247 esac
9248 case "$d_uname$d_gethname" in
9249 *define*) ;;
9250 *)
9251         case "$phostname" in
9252         '')
9253                 echo "There will be no way for $package to get your hostname." >&4;;
9254         *)
9255         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9256                 ;;
9257         esac;;
9258 esac
9259 case "$d_phostname" in
9260 '') d_phostname="$undef";;
9261 esac
9262
9263 : see if this is a netdb.h system
9264 set netdb.h i_netdb
9265 eval $inhdr
9266
9267 : see if prototypes for various gethostxxx netdb.h functions are available
9268 echo " "
9269 set d_gethostprotos gethostent $i_netdb netdb.h
9270 eval $hasproto
9271
9272 : see if getlogin exists
9273 set getlogin d_getlogin
9274 eval $inlibc
9275
9276 : see if getmnt exists
9277 set getmnt d_getmnt
9278 eval $inlibc
9279
9280 : see if getmntent exists
9281 set getmntent d_getmntent
9282 eval $inlibc
9283
9284 : see if getnetbyaddr exists
9285 set getnetbyaddr d_getnbyaddr
9286 eval $inlibc
9287
9288 : see if getnetbyname exists
9289 set getnetbyname d_getnbyname
9290 eval $inlibc
9291
9292 : see if getnetent exists
9293 set getnetent d_getnent
9294 eval $inlibc
9295
9296 : see if prototypes for various getnetxxx netdb.h functions are available
9297 echo " "
9298 set d_getnetprotos getnetent $i_netdb netdb.h
9299 eval $hasproto
9300
9301
9302 : see if getprotobyname exists
9303 set getprotobyname d_getpbyname
9304 eval $inlibc
9305
9306 : see if getprotobynumber exists
9307 set getprotobynumber d_getpbynumber
9308 eval $inlibc
9309
9310 : see if getprotoent exists
9311 set getprotoent d_getpent
9312 eval $inlibc
9313
9314 : see if getpgid exists
9315 set getpgid d_getpgid
9316 eval $inlibc
9317
9318 : see if getpgrp2 exists
9319 set getpgrp2 d_getpgrp2
9320 eval $inlibc
9321
9322 : see if getppid exists
9323 set getppid d_getppid
9324 eval $inlibc
9325
9326 : see if getpriority exists
9327 set getpriority d_getprior
9328 eval $inlibc
9329
9330 : see if prototypes for various getprotoxxx netdb.h functions are available
9331 echo " "
9332 set d_getprotoprotos getprotoent $i_netdb netdb.h
9333 eval $hasproto
9334
9335 : see if getpwent exists
9336 set getpwent d_getpwent
9337 eval $inlibc
9338
9339
9340 : see if getservbyname exists
9341 set getservbyname d_getsbyname
9342 eval $inlibc
9343
9344 : see if getservbyport exists
9345 set getservbyport d_getsbyport
9346 eval $inlibc
9347
9348 : see if getservent exists
9349 set getservent d_getsent
9350 eval $inlibc
9351
9352 : see if prototypes for various getservxxx netdb.h functions are available
9353 echo " "
9354 set d_getservprotos getservent $i_netdb netdb.h
9355 eval $hasproto
9356
9357 : see if getspent exists
9358 set getspent d_getspent
9359 eval $inlibc
9360
9361 : see if getspnam exists
9362 set getspnam d_getspnam
9363 eval $inlibc
9364
9365 : see if gettimeofday or ftime exists
9366 set gettimeofday d_gettimeod
9367 eval $inlibc
9368 case "$d_gettimeod" in
9369 "$undef")
9370         set ftime d_ftime 
9371         eval $inlibc
9372         ;;
9373 *)
9374         val="$undef"; set d_ftime; eval $setvar
9375         ;;
9376 esac
9377 case "$d_gettimeod$d_ftime" in
9378 "$undef$undef")
9379         echo " "
9380         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9381         ;;
9382 esac
9383
9384 : see if this is an grp system
9385 set grp.h i_grp
9386 eval $inhdr
9387
9388 case "$i_grp" in
9389 $define)
9390         xxx=`./findhdr grp.h`
9391         $cppstdin $cppflags $cppminus < $xxx >$$.h
9392
9393         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9394                 val="$define"
9395         else
9396                 val="$undef"
9397         fi
9398         set d_grpasswd
9399         eval $setvar
9400
9401         $rm -f $$.h
9402         ;;
9403 *)
9404         val="$undef";
9405         set d_grpasswd; eval $setvar
9406         ;;
9407 esac
9408
9409 : see if hasmntopt exists
9410 set hasmntopt d_hasmntopt
9411 eval $inlibc
9412
9413 : see if this is a netinet/in.h or sys/in.h system
9414 set netinet/in.h i_niin sys/in.h i_sysin
9415 eval $inhdr
9416
9417 : see if arpa/inet.h has to be included
9418 set arpa/inet.h i_arpainet
9419 eval $inhdr
9420
9421 : see if htonl --and friends-- exists
9422 val=''
9423 set htonl val
9424 eval $inlibc
9425
9426 : Maybe they are macros.
9427 case "$val" in
9428 $undef)
9429         $cat >htonl.c <<EOM
9430 #include <stdio.h>
9431 #include <sys/types.h>
9432 #$i_niin I_NETINET_IN
9433 #$i_sysin I_SYS_IN
9434 #$i_arpainet I_ARPA_INET
9435 #ifdef I_NETINET_IN
9436 #include <netinet/in.h>
9437 #endif
9438 #ifdef I_SYS_IN
9439 #include <sys/in.h>
9440 #endif
9441 #ifdef I_ARPA_INET
9442 #include <arpa/inet.h>
9443 #endif
9444 #ifdef htonl
9445 printf("Defined as a macro.");
9446 #endif
9447 EOM
9448         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9449         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9450                 val="$define"
9451                 echo "But it seems to be defined as a macro." >&4
9452         fi
9453         $rm -f htonl.?
9454         ;;
9455 esac
9456 set d_htonl
9457 eval $setvar
9458
9459 : see if iconv exists
9460 set iconv d_iconv
9461 eval $inlibc
9462
9463 : index or strchr
9464 echo " "
9465 if set index val -f; eval $csym; $val; then
9466         if set strchr val -f d_strchr; eval $csym; $val; then
9467                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9468                         val="$define"
9469                         vali="$undef"
9470                         echo "strchr() found." >&4
9471                 else
9472                         val="$undef"
9473                         vali="$define"
9474                         echo "index() found." >&4
9475                 fi
9476         else
9477                 val="$undef"
9478                 vali="$define"
9479                 echo "index() found." >&4
9480         fi
9481 else
9482         if set strchr val -f d_strchr; eval $csym; $val; then
9483                 val="$define"
9484                 vali="$undef"
9485                 echo "strchr() found." >&4
9486         else
9487                 echo "No index() or strchr() found!" >&4
9488                 val="$undef"
9489                 vali="$undef"
9490         fi
9491 fi
9492 set d_strchr; eval $setvar
9493 val="$vali"
9494 set d_index; eval $setvar
9495
9496 : check whether inet_aton exists
9497 set inet_aton d_inetaton
9498 eval $inlibc
9499
9500 : see if inttypes.h is available
9501 : we want a real compile instead of Inhdr because some systems
9502 : have an inttypes.h which includes non-existent headers
9503 echo " "
9504 $cat >try.c <<EOCP
9505 #include <inttypes.h>
9506 int main() {
9507         static int32_t foo32 = 0x12345678;
9508 }
9509 EOCP
9510 set try
9511 if eval $compile; then
9512         echo "<inttypes.h> found." >&4
9513         val="$define"
9514 else
9515         echo "<inttypes.h> NOT found." >&4
9516         val="$undef"
9517 fi
9518 $rm -f try.c try
9519 set i_inttypes
9520 eval $setvar
9521
9522 : check for int64_t
9523 echo " "
9524 echo "Checking to see if you have int64_t..." >&4
9525 $cat >try.c <<EOCP
9526 #include <sys/types.h>
9527 #$i_inttypes I_INTTYPES
9528 #ifdef I_INTTYPES
9529 #include <inttypes.h>
9530 #endif
9531 int main() { int64_t x = 7; }
9532 EOCP
9533 set try
9534 if eval $compile; then
9535         val="$define"
9536         echo "You have int64_t."
9537 else
9538         val="$undef"
9539         echo "You do not have int64_t."
9540 fi
9541 $rm -f try try.*
9542 set d_int64_t
9543 eval $setvar
9544
9545 : Look for isascii
9546 echo " "
9547 $cat >isascii.c <<'EOCP'
9548 #include <stdio.h>
9549 #include <ctype.h>
9550 int main() {
9551         int c = 'A';
9552         if (isascii(c))
9553                 exit(0);
9554         else
9555                 exit(1);
9556 }
9557 EOCP
9558 set isascii
9559 if eval $compile; then
9560         echo "isascii() found." >&4
9561         val="$define"
9562 else
9563         echo "isascii() NOT found." >&4
9564         val="$undef"
9565 fi
9566 set d_isascii
9567 eval $setvar
9568 $rm -f isascii*
9569
9570 : see if killpg exists
9571 set killpg d_killpg
9572 eval $inlibc
9573
9574 : see if lchown exists
9575 echo " "
9576 $cat > try.c <<'EOCP'
9577 /* System header to define __stub macros and hopefully few prototypes,
9578     which can conflict with char lchown(); below.  */
9579 #include <assert.h>
9580 /* Override any gcc2 internal prototype to avoid an error.  */
9581 /* We use char because int might match the return type of a gcc2
9582    builtin and then its argument prototype would still apply.  */
9583 char lchown();
9584 int main() {
9585     /*  The GNU C library defines this for functions which it implements
9586         to always fail with ENOSYS.  Some functions are actually named
9587         something starting with __ and the normal name is an alias.  */
9588 #if defined (__stub_lchown) || defined (__stub___lchown)
9589 choke me
9590 #else
9591 lchown();
9592 #endif
9593 ; return 0; }
9594 EOCP
9595 set try
9596 if eval $compile; then
9597     $echo "lchown() found." >&4
9598     val="$define"
9599 else
9600     $echo "lchown() NOT found." >&4
9601     val="$undef"
9602 fi
9603 set d_lchown
9604 eval $setvar
9605
9606 : See if number of significant digits in a double precision number is known
9607 echo " "
9608 $cat >ldbl_dig.c <<EOM
9609 #$i_limits I_LIMITS
9610 #$i_float I_FLOAT
9611 #ifdef I_LIMITS
9612 #include <limits.h>
9613 #endif
9614 #ifdef I_FLOAT
9615 #include <float.h>
9616 #endif
9617 #ifdef LDBL_DIG
9618 printf("Contains LDBL_DIG");
9619 #endif
9620 EOM
9621 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9622 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9623         echo "LDBL_DIG found." >&4
9624         val="$define"
9625 else
9626         echo "LDBL_DIG NOT found." >&4
9627         val="$undef"
9628 fi
9629 $rm -f ldbl_dig.?
9630 set d_ldbl_dig
9631 eval $setvar
9632
9633 : see if link exists
9634 set link d_link
9635 eval $inlibc
9636
9637 : see if localeconv exists
9638 set localeconv d_locconv
9639 eval $inlibc
9640
9641 : see if lockf exists
9642 set lockf d_lockf
9643 eval $inlibc
9644
9645 : check for long long
9646 echo " "
9647 echo "Checking to see if you have long long..." >&4
9648 echo 'int main() { long long x = 7; return 0; }' > try.c
9649 set try
9650 if eval $compile; then
9651         val="$define"
9652         echo "You have have long long."
9653 else
9654         val="$undef"
9655         echo "You do not have long long."
9656 fi
9657 $rm try.*
9658 set d_longlong
9659 eval $setvar
9660
9661 : check for length of long long
9662 case "${d_longlong}${longlongsize}" in
9663 $define)
9664         echo " "
9665         echo "Checking to see how big your long longs are..." >&4
9666         $cat >try.c <<'EOCP'
9667 #include <stdio.h>
9668 int main()
9669 {
9670     printf("%d\n", (int)sizeof(long long));
9671     return(0);
9672 }
9673 EOCP
9674         set try
9675         if eval $compile_ok; then
9676                 longlongsize=`./try$exe_ext`
9677                 echo "Your long longs are $longlongsize bytes long."
9678         else
9679                 dflt='8'
9680                 echo " "
9681                 echo "(I can't seem to compile the test program.  Guessing...)"
9682                 rp="What is the size of a long long (in bytes)?"
9683                 . ./myread
9684                 longlongsize="$ans"
9685         fi
9686         if $test "X$longsize" = "X$longlongsize"; then
9687                 echo "(That isn't any different from an ordinary long.)"
9688         fi      
9689         ;;
9690 esac
9691 $rm -f try.* try
9692
9693 : see if prototype for lseek is available
9694 echo " "
9695 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9696 eval $hasproto
9697
9698 : see if lstat exists
9699 set lstat d_lstat
9700 eval $inlibc
9701
9702 : see if madvise exists
9703 set madvise d_madvise
9704 eval $inlibc
9705
9706 : see if mblen exists
9707 set mblen d_mblen
9708 eval $inlibc
9709
9710 : see if mbstowcs exists
9711 set mbstowcs d_mbstowcs
9712 eval $inlibc
9713
9714 : see if mbtowc exists
9715 set mbtowc d_mbtowc
9716 eval $inlibc
9717
9718 : see if memchr exists
9719 set memchr d_memchr
9720 eval $inlibc
9721
9722 : see if memcmp exists
9723 set memcmp d_memcmp
9724 eval $inlibc
9725
9726 : see if memcpy exists
9727 set memcpy d_memcpy
9728 eval $inlibc
9729
9730 : see if memmove exists
9731 set memmove d_memmove
9732 eval $inlibc
9733
9734 : see if memset exists
9735 set memset d_memset
9736 eval $inlibc
9737
9738 : see if mkdir exists
9739 set mkdir d_mkdir
9740 eval $inlibc
9741
9742 : see if mkdtemp exists
9743 set mkdtemp d_mkdtemp
9744 eval $inlibc
9745
9746 : see if mkfifo exists
9747 set mkfifo d_mkfifo
9748 eval $inlibc
9749
9750 : see if mkstemp exists
9751 set mkstemp d_mkstemp
9752 eval $inlibc
9753
9754 : see if mkstemps exists
9755 set mkstemps d_mkstemps
9756 eval $inlibc
9757
9758 : see if mktime exists
9759 set mktime d_mktime
9760 eval $inlibc
9761
9762 : see if this is a sys/mman.h system
9763 set sys/mman.h i_sysmman
9764 eval $inhdr
9765
9766 : see if mmap exists
9767 set mmap d_mmap
9768 eval $inlibc
9769 : see what shmat returns
9770 : default to something harmless
9771 mmaptype='void *'
9772 case "$i_sysmman$d_mmap" in
9773 "$define$define")
9774         $cat >mmap.c <<'END'
9775 #include <sys/mman.h>
9776 void *mmap();
9777 END
9778         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9779                 mmaptype='void *'
9780         else
9781                 mmaptype='caddr_t'
9782         fi
9783         echo "and it returns ($mmaptype)." >&4
9784         ;;
9785 esac
9786
9787
9788
9789 : see if mprotect exists
9790 set mprotect d_mprotect
9791 eval $inlibc
9792
9793 : see if msgctl exists
9794 set msgctl d_msgctl
9795 eval $inlibc
9796
9797 : see if msgget exists
9798 set msgget d_msgget
9799 eval $inlibc
9800
9801 : see if msgsnd exists
9802 set msgsnd d_msgsnd
9803 eval $inlibc
9804
9805 : see if msgrcv exists
9806 set msgrcv d_msgrcv
9807 eval $inlibc
9808
9809 : see how much of the 'msg*(2)' library is present.
9810 h_msg=true
9811 echo " "
9812 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9813 *"$undef"*) h_msg=false;;
9814 esac
9815 case "$osname" in
9816 freebsd)
9817     case "`ipcs 2>&1`" in
9818     "SVID messages"*"not configured"*)
9819         echo "Your $osname does not have the msg*(2) configured." >&4
9820         h_msg=false
9821         val="$undef"
9822         set msgctl d_msgctl
9823         eval $setvar
9824         set msgget d_msgget
9825         eval $setvar
9826         set msgsnd d_msgsnd
9827         eval $setvar
9828         set msgrcv d_msgrcv
9829         eval $setvar
9830         ;;
9831     esac
9832     ;;
9833 esac
9834 : we could also check for sys/ipc.h ...
9835 if $h_msg && $test `./findhdr sys/msg.h`; then
9836         echo "You have the full msg*(2) library." >&4
9837         val="$define"
9838 else
9839         echo "You don't have the full msg*(2) library." >&4
9840         val="$undef"
9841 fi
9842 set d_msg
9843 eval $setvar
9844
9845 : see if msync exists
9846 set msync d_msync
9847 eval $inlibc
9848
9849 : see if munmap exists
9850 set munmap d_munmap
9851 eval $inlibc
9852
9853 : see if nice exists
9854 set nice d_nice
9855 eval $inlibc
9856
9857
9858 echo " "
9859 echo "Checking which 64-bit integer type we could use..." >&4
9860
9861 case "$intsize" in
9862 8) val=int
9863    set quadtype
9864    eval $setvar
9865    val='"unsigned int"'
9866    set uquadtype
9867    eval $setvar
9868    quadkind=1
9869    ;;
9870 *) case "$longsize" in
9871    8) val=long
9872       set quadtype
9873       eval $setvar
9874       val='"unsigned long"'
9875       set uquadtype
9876       eval $setvar
9877       quadkind=2
9878       ;;
9879    *) case "$d_longlong:$longlongsize" in
9880       define:8)
9881         val='"long long"'
9882         set quadtype
9883         eval $setvar
9884         val='"unsigned long long"'
9885         set uquadtype
9886         eval $setvar
9887         quadkind=3
9888         ;;
9889       *) case "$d_int64_t" in
9890          define)
9891            val=int64_t
9892            set quadtype
9893            eval $setvar
9894            val=uint64_t
9895            set uquadtype
9896            eval $setvar
9897            quadkind=4
9898            ;;
9899          esac
9900          ;;
9901       esac
9902       ;;
9903    esac
9904    ;;
9905 esac
9906
9907 case "$quadtype" in
9908 '')     echo "Alas, no 64-bit integer types in sight." >&4
9909         d_quad="$undef"
9910         ;;
9911 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
9912             verb="will"
9913         else
9914             verb="could"
9915         fi
9916         echo "We $verb use '$quadtype' for 64-bit integers." >&4
9917         d_quad="$define"
9918         ;;
9919 esac
9920
9921 : check for length of character
9922 echo " "
9923 case "$charsize" in
9924 '')
9925         echo "Checking to see how big your characters are (hey, you never know)..." >&4
9926         $cat >try.c <<'EOCP'
9927 #include <stdio.h>
9928 int main()
9929 {
9930     printf("%d\n", (int)sizeof(char));
9931     exit(0);
9932 }
9933 EOCP
9934         set try
9935         if eval $compile_ok; then
9936                 dflt=`./try`
9937         else
9938                 dflt='1'
9939                 echo "(I can't seem to compile the test program.  Guessing...)"
9940         fi
9941         ;;
9942 *)
9943         dflt="$charsize"
9944         ;;
9945 esac
9946 rp="What is the size of a character (in bytes)?"
9947 . ./myread
9948 charsize="$ans"
9949 $rm -f try.c try
9950
9951
9952 echo " "
9953 $echo "Choosing the C types to be used for Perl's internal types..." >&4
9954
9955 case "$use64bitint:$d_quad:$quadtype" in
9956 define:define:?*)
9957         ivtype="$quadtype"
9958         uvtype="$uquadtype"
9959         ivsize=8
9960         uvsize=8
9961         ;;
9962 *)      ivtype="long"
9963         uvtype="unsigned long"
9964         ivsize=$longsize
9965         uvsize=$longsize
9966         ;;
9967 esac
9968
9969 case "$uselongdouble:$d_longdbl" in
9970 define:define)
9971         nvtype="long double"
9972         nvsize=$longdblsize
9973         ;;
9974 *)      nvtype=double
9975         nvsize=$doublesize
9976         ;;
9977 esac
9978
9979 $echo "(IV will be "$ivtype", $ivsize bytes)"
9980 $echo "(UV will be "$uvtype", $uvsize bytes)"
9981 $echo "(NV will be "$nvtype", $nvsize bytes)"
9982
9983 $cat >try.c <<EOCP
9984 #$i_inttypes I_INTTYPES
9985 #ifdef I_INTTYPES
9986 #include <inttypes.h>
9987 #endif
9988 #include <stdio.h>
9989 int main() {
9990 #ifdef INT8
9991    int8_t i =  INT8_MAX;
9992   uint8_t u = UINT8_MAX;
9993   printf("int8_t\n");
9994 #endif
9995 #ifdef INT16
9996    int16_t i =  INT16_MAX;
9997   uint16_t i = UINT16_MAX;
9998   printf("int16_t\n");
9999 #endif
10000 #ifdef INT32
10001    int32_t i =  INT32_MAX;
10002   uint32_t u = UINT32_MAX;
10003   printf("int32_t\n");
10004 #endif
10005 }
10006 EOCP
10007
10008 case "$i8type" in
10009 '')     case "$charsize" in
10010         1)      i8type=char
10011                 u8type="unsigned char"
10012                 i8size=$charsize
10013                 u8size=$charsize
10014                 ;;
10015         esac
10016         ;;
10017 esac
10018 case "$i8type" in
10019 '')     set try -DINT8
10020         if eval $compile; then
10021                 case "`./try$exe_ext`" in
10022                 int8_t) i8type=int8_t
10023                         u8type=uint8_t
10024                         i8size=1
10025                         u8size=1
10026                         ;;
10027                 esac
10028         fi
10029         ;;
10030 esac
10031 case "$i8type" in
10032 '')     if $test $charsize -ge 1; then
10033                 i8type=char
10034                 u8type="unsigned char"
10035                 i8size=$charsize
10036                 u8size=$charsize
10037         fi
10038         ;;
10039 esac
10040
10041 case "$i16type" in
10042 '')     case "$shortsize" in
10043         2)      i16type=short
10044                 u16type="unsigned short"
10045                 i16size=$shortsize
10046                 u16size=$shortsize
10047                 ;;
10048         esac
10049         ;;
10050 esac
10051 case "$i16type" in
10052 '')     set try -DINT16
10053         if eval $compile; then
10054                 case "`./try$exe_ext`" in
10055                 int16_t)
10056                         i16type=int16_t
10057                         u16type=uint16_t
10058                         i16size=2
10059                         u16size=2
10060                         ;;
10061                 esac
10062         fi
10063         ;;
10064 esac
10065 case "$i16type" in
10066 '')     if $test $shortsize -ge 2; then
10067                 i16type=short
10068                 u16type="unsigned short"
10069                 i16size=$shortsize
10070                 u16size=$shortsize
10071         fi
10072         ;;
10073 esac
10074
10075 case "$i32type" in
10076 '')     case "$longsize" in
10077         4)      i32type=long
10078                 u32type="unsigned long"
10079                 i32size=$longsize
10080                 u32size=$longsize
10081                 ;;
10082         *)      case "$intsize" in
10083                 4)      i32type=int
10084                         u32type="unsigned int"
10085                         i32size=$intsize
10086                         u32size=$intsize
10087                         ;;
10088                 esac
10089                 ;;
10090         esac
10091         ;;
10092 esac
10093 case "$i32type" in
10094 '')     set try -DINT32
10095         if eval $compile; then
10096                 case "`./try$exe_ext`" in
10097                 int32_t)
10098                         i32type=int32_t
10099                         u32type=uint32_t
10100                         i32size=4
10101                         u32size=4
10102                         ;;
10103                 esac
10104         fi
10105         ;;
10106 esac
10107 case "$i32type" in
10108 '')     if $test $intsize -ge 4; then
10109                 i32type=int
10110                 u32type="unsigned int"
10111                 i32size=$intsize
10112                 u32size=$intsize
10113         fi
10114         ;;
10115 esac
10116
10117 case "$i64type" in
10118 '')     case "$d_quad:$quadtype" in
10119         define:?*)
10120                 i64type="$quadtype"
10121                 u64type="$uquadtype"
10122                 i64size=8
10123                 u64size=8
10124                 ;;
10125         esac
10126         ;;
10127 esac
10128
10129 $echo "Checking whether your NVs can preserve your UVs..." >&4
10130 $cat <<EOP >try.c
10131 #include <stdio.h>
10132 int main() {
10133     $uvtype k = ($uvtype)~0, l;
10134     $nvtype d;
10135     l = k;
10136     d = ($nvtype)l;
10137     l = ($uvtype)d;
10138     if (l == k)
10139        printf("preserve\n");
10140     exit(0);
10141 }
10142 EOP
10143 set try
10144 if eval $compile; then
10145         case "`./try$exe_ext`" in
10146         preserve) d_nv_preserves_uv="$define" ;;
10147         esac
10148 fi      
10149 case "$d_nv_preserves_uv" in
10150 $define) $echo "Yes, they can."  2>&1 ;;
10151 *)       $echo "No, they can't." 2>&1
10152          d_nv_preserves_uv="$undef"
10153          ;;
10154 esac
10155
10156 $rm -f try.* try
10157
10158
10159 : check for off64_t
10160 echo " "
10161 echo "Checking to see if you have off64_t..." >&4
10162 $cat >try.c <<EOCP
10163 #include <sys/types.h>
10164 #include <unistd.h>
10165 int main() { off64_t x = 7; }
10166 EOCP
10167 set try
10168 if eval $compile; then
10169         val="$define"
10170         echo "You have off64_t."
10171 else
10172         val="$undef"
10173         echo "You do not have off64_t."
10174         case "$lseeksize" in
10175         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10176         esac
10177 fi
10178 $rm -f try.* try
10179 set d_off64_t
10180 eval $setvar
10181
10182 : see if POSIX threads are available
10183 set pthread.h i_pthread
10184 eval $inhdr
10185
10186
10187
10188
10189 : how to create joinable pthreads
10190 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10191         echo " "
10192         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10193         $cat >try.c <<'EOCP'
10194 #include <pthread.h>
10195 int main() {
10196     int detachstate = JOINABLE;
10197 }
10198 EOCP
10199         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10200         if eval $compile; then
10201                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10202                 val="$undef" # Yes, undef.
10203                 set d_old_pthread_create_joinable
10204                 eval $setvar
10205                 val=""
10206                 set old_pthread_create_joinable
10207                 eval $setvar
10208         else
10209                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10210                 if eval $compile; then
10211                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10212                         val="$define"
10213                         set d_old_pthread_create_joinable
10214                         eval $setvar
10215                         val=PTHREAD_CREATE_UNDETACHED
10216                         set old_pthread_create_joinable
10217                         eval $setvar
10218                 else            
10219                         set try -DJOINABLE=__UNDETACHED
10220                         if eval $compile; then
10221                                 echo "You seem to use __UNDETACHED." >&4
10222                                 val="$define"
10223                                 set d_old_pthread_create_joinable
10224                                 eval $setvar
10225                                 val=__UNDETACHED
10226                                 set old_pthread_create_joinable
10227                                 eval $setvar
10228                         else
10229                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10230                                 val="$define"
10231                                 set d_old_pthread_create_joinable
10232                                 eval $setvar
10233                                 val=0
10234                                 set old_pthread_create_joinable
10235                                 eval $setvar
10236                         fi
10237                 fi
10238         fi
10239         $rm -f try try.*
10240 else
10241     d_old_pthread_create_joinable="$undef"
10242     old_pthread_create_joinable=""
10243 fi
10244
10245 : see if pause exists
10246 set pause d_pause
10247 eval $inlibc
10248
10249 : see if pipe exists
10250 set pipe d_pipe
10251 eval $inlibc
10252
10253 : see if poll exists
10254 set poll d_poll
10255 eval $inlibc
10256
10257
10258 : see whether the various POSIXish _yields exist
10259 $cat >try.c <<EOP
10260 #include <pthread.h>
10261 #include <stdio.h>
10262 int main() {
10263 #ifdef SCHED_YIELD
10264         sched_yield();
10265 #else
10266 #ifdef PTHREAD_YIELD
10267         pthread_yield();
10268 #else
10269 #ifdef PTHREAD_YIELD_NULL
10270         pthread_yield(NULL);
10271 #endif
10272 #endif
10273 #endif
10274 }
10275 EOP
10276 : see if sched_yield exists
10277 set try -DSCHED_YIELD
10278 if eval $compile; then
10279     val="$define"
10280     sched_yield='sched_yield()'
10281 else
10282     val="$undef"
10283 fi
10284 case "$usethreads" in
10285 $define)
10286         case "$val" in
10287         $define) echo 'sched_yield() found.' >&4        ;;
10288         *)       echo 'sched_yield() NOT found.' >&4    ;;
10289         esac
10290 esac
10291 set d_sched_yield
10292 eval $setvar
10293
10294 : see if pthread_yield exists
10295 set try -DPTHREAD_YIELD
10296 if eval $compile; then
10297     val="$define"
10298     case "$sched_yield" in
10299     '') sched_yield='pthread_yield()' ;;
10300     esac
10301 else
10302     set try -DPTHREAD_YIELD_NULL
10303     if eval $compile; then
10304         val="$define"
10305         case "$sched_yield" in
10306         '') sched_yield='pthread_yield(NULL)' ;;
10307         esac
10308     else
10309         val="$undef"
10310     fi
10311 fi
10312 case "$usethreads" in
10313 $define)
10314         case "$val" in
10315         $define) echo 'pthread_yield() found.' >&4      ;;
10316         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10317         esac
10318         ;;
10319 esac
10320 set d_pthread_yield
10321 eval $setvar
10322
10323 case "$sched_yield" in
10324 '') sched_yield=undef ;;
10325 esac
10326
10327 $rm -f try try.*
10328
10329 : see if this is a pwd.h system
10330 set pwd.h i_pwd
10331 eval $inhdr
10332
10333 case "$i_pwd" in
10334 $define)
10335         xxx=`./findhdr pwd.h`
10336         $cppstdin $cppflags $cppminus < $xxx >$$.h
10337
10338         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10339                 val="$define"
10340         else
10341                 val="$undef"
10342         fi
10343         set d_pwquota
10344         eval $setvar
10345
10346         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10347                 val="$define"
10348         else
10349                 val="$undef"
10350         fi
10351         set d_pwage
10352         eval $setvar
10353
10354         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10355                 val="$define"
10356         else
10357                 val="$undef"
10358         fi
10359         set d_pwchange
10360         eval $setvar
10361
10362         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10363                 val="$define"
10364         else
10365                 val="$undef"
10366         fi
10367         set d_pwclass
10368         eval $setvar
10369
10370         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10371                 val="$define"
10372         else
10373                 val="$undef"
10374         fi
10375         set d_pwexpire
10376         eval $setvar
10377
10378         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10379                 val="$define"
10380         else
10381                 val="$undef"
10382         fi
10383         set d_pwcomment
10384         eval $setvar
10385
10386         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10387                 val="$define"
10388         else
10389                 val="$undef"
10390         fi
10391         set d_pwgecos
10392         eval $setvar
10393
10394         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10395                 val="$define"
10396         else
10397                 val="$undef"
10398         fi
10399         set d_pwpasswd
10400         eval $setvar
10401
10402         $rm -f $$.h
10403         ;;
10404 *)
10405         val="$undef"; 
10406         set d_pwquota; eval $setvar
10407         set d_pwage; eval $setvar
10408         set d_pwchange; eval $setvar
10409         set d_pwclass; eval $setvar
10410         set d_pwexpire; eval $setvar
10411         set d_pwcomment; eval $setvar
10412         set d_pwgecos; eval $setvar
10413         set d_pwpasswd; eval $setvar
10414         ;;
10415 esac
10416
10417 : see if readdir and friends exist
10418 set readdir d_readdir
10419 eval $inlibc
10420 set seekdir d_seekdir
10421 eval $inlibc
10422 set telldir d_telldir
10423 eval $inlibc
10424 set rewinddir d_rewinddir
10425 eval $inlibc
10426
10427 : see if readlink exists
10428 set readlink d_readlink
10429 eval $inlibc
10430
10431 : see if rename exists
10432 set rename d_rename
10433 eval $inlibc
10434
10435 : see if rmdir exists
10436 set rmdir d_rmdir
10437 eval $inlibc
10438
10439 : see if memory.h is available.
10440 val=''
10441 set memory.h val
10442 eval $inhdr
10443
10444 : See if it conflicts with string.h
10445 case "$val" in
10446 $define)
10447         case "$strings" in
10448         '') ;;
10449         *)
10450                 $cppstdin $cppflags $cppminus < $strings > mem.h
10451                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10452                         echo " "
10453                         echo "We won't be including <memory.h>."
10454                         val="$undef"
10455                 fi
10456                 $rm -f mem.h
10457                 ;;
10458         esac
10459 esac
10460 set i_memory
10461 eval $setvar
10462
10463 : can bcopy handle overlapping blocks?
10464 val="$undef"
10465 case "$d_bcopy" in
10466 "$define")
10467         echo " "
10468         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10469         $cat >try.c <<EOCP
10470 #$i_memory I_MEMORY
10471 #$i_stdlib I_STDLIB
10472 #$i_string I_STRING
10473 #$i_unistd I_UNISTD
10474 EOCP
10475         $cat >>try.c <<'EOCP'
10476 #include <stdio.h>
10477 #ifdef I_MEMORY
10478 #  include <memory.h>
10479 #endif
10480 #ifdef I_STDLIB
10481 #  include <stdlib.h>
10482 #endif
10483 #ifdef I_STRING
10484 #  include <string.h>
10485 #else
10486 #  include <strings.h>
10487 #endif
10488 #ifdef I_UNISTD
10489 #  include <unistd.h>  /* Needed for NetBSD */
10490 #endif
10491 int main()
10492 {
10493 char buf[128], abc[128];
10494 char *b;
10495 int len;
10496 int off;
10497 int align;
10498
10499 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10500
10501 for (align = 7; align >= 0; align--) {
10502         for (len = 36; len; len--) {
10503                 b = buf+align;
10504                 bcopy(abc, b, len);
10505                 for (off = 1; off <= len; off++) {
10506                         bcopy(b, b+off, len);
10507                         bcopy(b+off, b, len);
10508                         if (bcmp(b, abc, len))
10509                                 exit(1);
10510                 }
10511         }
10512 }
10513 exit(0);
10514 }
10515 EOCP
10516         set try
10517         if eval $compile_ok; then
10518                 if ./try 2>/dev/null; then
10519                         echo "Yes, it can."
10520                         val="$define"
10521                 else
10522                         echo "It can't, sorry."
10523                         case "$d_memmove" in
10524                         "$define") echo "But that's Ok since you have memmove()." ;;
10525                         esac
10526                 fi
10527         else
10528                 echo "(I can't compile the test program, so we'll assume not...)"
10529                 case "$d_memmove" in
10530                 "$define") echo "But that's Ok since you have memmove()." ;;
10531                 esac
10532         fi
10533         ;;
10534 esac
10535 $rm -f try.* try core
10536 set d_safebcpy
10537 eval $setvar
10538
10539 : can memcpy handle overlapping blocks?
10540 val="$undef"
10541 case "$d_memcpy" in
10542 "$define")
10543         echo " "
10544         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10545         $cat >try.c <<EOCP
10546 #$i_memory I_MEMORY
10547 #$i_stdlib I_STDLIB
10548 #$i_string I_STRING
10549 #$i_unistd I_UNISTD
10550 EOCP
10551         $cat >>try.c <<'EOCP'
10552 #include <stdio.h>
10553 #ifdef I_MEMORY
10554 #  include <memory.h>
10555 #endif
10556 #ifdef I_STDLIB
10557 #  include <stdlib.h>
10558 #endif
10559 #ifdef I_STRING
10560 #  include <string.h>
10561 #else
10562 #  include <strings.h>
10563 #endif
10564 #ifdef I_UNISTD
10565 #  include <unistd.h>  /* Needed for NetBSD */
10566 #endif
10567 int main()
10568 {
10569 char buf[128], abc[128];
10570 char *b;
10571 int len;
10572 int off;
10573 int align;
10574
10575 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10576    try to store the string in read-only memory. */
10577 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10578
10579 for (align = 7; align >= 0; align--) {
10580         for (len = 36; len; len--) {
10581                 b = buf+align;
10582                 memcpy(b, abc, len);
10583                 for (off = 1; off <= len; off++) {
10584                         memcpy(b+off, b, len);
10585                         memcpy(b, b+off, len);
10586                         if (memcmp(b, abc, len))
10587                                 exit(1);
10588                 }
10589         }
10590 }
10591 exit(0);
10592 }
10593 EOCP
10594         set try
10595         if eval $compile_ok; then
10596                 if ./try 2>/dev/null; then
10597                         echo "Yes, it can."
10598                         val="$define"
10599                 else
10600                         echo "It can't, sorry."
10601                         case "$d_memmove" in
10602                         "$define") echo "But that's Ok since you have memmove()." ;;
10603                         esac
10604                 fi
10605         else
10606                 echo "(I can't compile the test program, so we'll assume not...)"
10607                 case "$d_memmove" in
10608                 "$define") echo "But that's Ok since you have memmove()." ;;
10609                 esac
10610         fi
10611         ;;
10612 esac
10613 $rm -f try.* try core
10614 set d_safemcpy
10615 eval $setvar
10616
10617 : can memcmp be trusted to compare relative magnitude?
10618 val="$undef"
10619 case "$d_memcmp" in
10620 "$define")
10621         echo " "
10622         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10623         $cat >try.c <<EOCP
10624 #$i_memory I_MEMORY
10625 #$i_stdlib I_STDLIB
10626 #$i_string I_STRING
10627 #$i_unistd I_UNISTD
10628 EOCP
10629         $cat >>try.c <<'EOCP'
10630 #include <stdio.h>
10631 #ifdef I_MEMORY
10632 #  include <memory.h>
10633 #endif
10634 #ifdef I_STDLIB
10635 #  include <stdlib.h>
10636 #endif
10637 #ifdef I_STRING
10638 #  include <string.h>
10639 #else
10640 #  include <strings.h>
10641 #endif
10642 #ifdef I_UNISTD
10643 #  include <unistd.h>  /* Needed for NetBSD */
10644 #endif
10645 int main()
10646 {
10647 char a = -1;
10648 char b = 0;
10649 if ((a < b) && memcmp(&a, &b, 1) < 0)
10650         exit(1);
10651 exit(0);
10652 }
10653 EOCP
10654         set try
10655         if eval $compile_ok; then
10656                 if ./try 2>/dev/null; then
10657                         echo "Yes, it can."
10658                         val="$define"
10659                 else
10660                         echo "No, it can't (it uses signed chars)."
10661                 fi
10662         else
10663                 echo "(I can't compile the test program, so we'll assume not...)"
10664         fi
10665         ;;
10666 esac
10667 $rm -f try.* try core
10668 set d_sanemcmp
10669 eval $setvar
10670
10671 : see if select exists
10672 set select d_select
10673 eval $inlibc
10674
10675 : see if semctl exists
10676 set semctl d_semctl
10677 eval $inlibc
10678
10679 : see if semget exists
10680 set semget d_semget
10681 eval $inlibc
10682
10683 : see if semop exists
10684 set semop d_semop
10685 eval $inlibc
10686
10687 : see how much of the 'sem*(2)' library is present.
10688 h_sem=true
10689 echo " "
10690 case "$d_semctl$d_semget$d_semop" in
10691 *"$undef"*) h_sem=false;;
10692 esac
10693 case "$osname" in
10694 freebsd)
10695     case "`ipcs 2>&1`" in
10696     "SVID messages"*"not configured"*)
10697         echo "Your $osname does not have the sem*(2) configured." >&4
10698         h_sem=false
10699         val="$undef"
10700         set semctl d_semctl
10701         eval $setvar
10702         set semget d_semget
10703         eval $setvar
10704         set semop d_semop
10705         eval $setvar
10706         ;;
10707     esac
10708     ;;
10709 esac
10710 : we could also check for sys/ipc.h ...
10711 if $h_sem && $test `./findhdr sys/sem.h`; then
10712         echo "You have the full sem*(2) library." >&4
10713         val="$define"
10714 else
10715         echo "You don't have the full sem*(2) library." >&4
10716         val="$undef"
10717 fi
10718 set d_sem
10719 eval $setvar
10720
10721 : see whether sys/sem.h defines union semun
10722 echo " "
10723 $cat > try.c <<'END'
10724 #include <sys/types.h>
10725 #include <sys/ipc.h>
10726 #include <sys/sem.h>
10727 int main () { union semun semun; semun.buf = 0; }
10728 END
10729 set try
10730 if eval $compile; then
10731     echo "You have union semun in <sys/sem.h>." >&4
10732     val="$define"
10733 else
10734     echo "You do not have union semun in <sys/sem.h>." >&4
10735     val="$undef"
10736 fi
10737 $rm -f try try.c try.h
10738 set d_union_semun
10739 eval $setvar
10740
10741 : see how to do semctl IPC_STAT
10742 case "$d_sem" in
10743 $define)
10744     : see whether semctl IPC_STAT can use union semun
10745     echo " "
10746     $cat > try.h <<END
10747 #ifndef S_IRUSR
10748 #   ifdef S_IREAD
10749 #       define S_IRUSR S_IREAD
10750 #       define S_IWUSR S_IWRITE
10751 #       define S_IXUSR S_IEXEC
10752 #   else
10753 #       define S_IRUSR 0400
10754 #       define S_IWUSR 0200
10755 #       define S_IXUSR 0100
10756 #   endif
10757 #   define S_IRGRP (S_IRUSR>>3)
10758 #   define S_IWGRP (S_IWUSR>>3)
10759 #   define S_IXGRP (S_IXUSR>>3)
10760 #   define S_IROTH (S_IRUSR>>6)
10761 #   define S_IWOTH (S_IWUSR>>6)
10762 #   define S_IXOTH (S_IXUSR>>6)
10763 #endif
10764 #ifndef S_IRWXU
10765 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10766 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10767 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10768 #endif
10769 END
10770
10771     $cat > try.c <<END
10772 #include <sys/types.h>
10773 #include <sys/ipc.h>
10774 #include <sys/sem.h>
10775 #include <sys/stat.h>
10776 #include <stdio.h>
10777 #include <errno.h>
10778 #include "try.h"
10779 #ifndef errno
10780 extern int errno;
10781 #endif
10782 #$d_union_semun HAS_UNION_SEMUN
10783 int main() {
10784     union semun
10785 #ifndef HAS_UNION_SEMUN
10786     {
10787         int val;
10788         struct semid_ds *buf;
10789         unsigned short *array;
10790     }
10791 #endif
10792     arg;
10793     int sem, st;
10794
10795 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10796     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10797     if (sem > -1) {
10798         struct semid_ds argbuf;
10799         arg.buf = &argbuf;
10800 #       ifdef IPC_STAT
10801         st = semctl(sem, 0, IPC_STAT, arg);
10802         if (st == 0)
10803             printf("semun\n");
10804         else
10805 #       endif /* IPC_STAT */
10806             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10807 #       ifdef IPC_RMID
10808         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10809 #       endif /* IPC_RMID */
10810             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10811     } else
10812 #endif /* IPC_PRIVATE && ... */
10813         printf("semget failed: errno = %d\n", errno);
10814   return 0;
10815 }
10816 END
10817     val="$undef"
10818     set try
10819     if eval $compile; then
10820         xxx=`./try`
10821         case "$xxx" in
10822         semun) val="$define" ;;
10823         esac
10824     fi
10825     $rm -f try try.c
10826     set d_semctl_semun
10827     eval $setvar
10828     case "$d_semctl_semun" in
10829     $define)
10830         echo "You can use union semun for semctl IPC_STAT." >&4
10831         also='also'
10832         ;;
10833     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10834         also=''
10835         ;;
10836     esac
10837
10838     : see whether semctl IPC_STAT can use struct semid_ds pointer
10839     $cat > try.c <<'END'
10840 #include <sys/types.h>
10841 #include <sys/ipc.h>
10842 #include <sys/sem.h>
10843 #include <sys/stat.h>
10844 #include "try.h"
10845 #include <stdio.h>
10846 #include <errno.h>
10847 #ifndef errno
10848 extern int errno;
10849 #endif
10850 int main() {
10851     struct semid_ds arg;
10852     int sem, st;
10853
10854 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
10855     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10856     if (sem > -1) {
10857 #       ifdef IPC_STAT
10858         st = semctl(sem, 0, IPC_STAT, &arg);
10859         if (st == 0)
10860             printf("semid_ds\n");
10861         else
10862 #       endif /* IPC_STAT */
10863             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10864 #       ifdef IPC_RMID
10865         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10866 #       endif /* IPC_RMID */
10867             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10868     } else
10869 #endif /* IPC_PRIVATE && ... */
10870         printf("semget failed: errno = %d\n", errno);
10871
10872     return 0;
10873 }
10874 END
10875     val="$undef"
10876     set try
10877     if eval $compile; then
10878         xxx=`./try`
10879         case "$xxx" in
10880         semid_ds) val="$define" ;;
10881         esac
10882     fi
10883     $rm -f try try.c
10884     set d_semctl_semid_ds
10885     eval $setvar
10886     case "$d_semctl_semid_ds" in
10887     $define)
10888         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10889         ;;
10890     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10891         ;;
10892     esac
10893     $rm -f try.h
10894     ;;
10895 *)  val="$undef"
10896
10897     # We do not have the full sem*(2) library, so assume we can not
10898     # use either.
10899
10900     set d_semctl_semun
10901     eval $setvar
10902
10903     set d_semctl_semid_ds
10904     eval $setvar
10905     ;;
10906 esac
10907
10908 : see if setegid exists
10909 set setegid d_setegid
10910 eval $inlibc
10911
10912 : see if seteuid exists
10913 set seteuid d_seteuid
10914 eval $inlibc
10915
10916 : see if setgrent exists
10917 set setgrent d_setgrent
10918 eval $inlibc
10919
10920 : see if sethostent exists
10921 set sethostent d_sethent
10922 eval $inlibc
10923
10924 : see if setlinebuf exists
10925 set setlinebuf d_setlinebuf
10926 eval $inlibc
10927
10928 : see if setlocale exists
10929 set setlocale d_setlocale
10930 eval $inlibc
10931
10932 : see if setnetent exists
10933 set setnetent d_setnent
10934 eval $inlibc
10935
10936 : see if setprotoent exists
10937 set setprotoent d_setpent
10938 eval $inlibc
10939
10940 : see if setpgid exists
10941 set setpgid d_setpgid
10942 eval $inlibc
10943
10944 : see if setpgrp2 exists
10945 set setpgrp2 d_setpgrp2
10946 eval $inlibc
10947
10948 : see if setpriority exists
10949 set setpriority d_setprior
10950 eval $inlibc
10951
10952 : see if setpwent exists
10953 set setpwent d_setpwent
10954 eval $inlibc
10955
10956 : see if setregid exists
10957 set setregid d_setregid
10958 eval $inlibc
10959 set setresgid d_setresgid
10960 eval $inlibc
10961
10962 : see if setreuid exists
10963 set setreuid d_setreuid
10964 eval $inlibc
10965 set setresuid d_setresuid
10966 eval $inlibc
10967
10968 : see if setrgid exists
10969 set setrgid d_setrgid
10970 eval $inlibc
10971
10972 : see if setruid exists
10973 set setruid d_setruid
10974 eval $inlibc
10975
10976 : see if setservent exists
10977 set setservent d_setsent
10978 eval $inlibc
10979
10980 : see if setsid exists
10981 set setsid d_setsid
10982 eval $inlibc
10983
10984 : see if setspent exists
10985 set setspent d_setspent
10986 eval $inlibc
10987
10988 : see if setvbuf exists
10989 set setvbuf d_setvbuf
10990 eval $inlibc
10991
10992 : see if sfio.h is available
10993 set sfio.h i_sfio
10994 eval $inhdr
10995
10996
10997 : see if sfio library is available
10998 case "$i_sfio" in
10999 $define)
11000         val=''
11001         set sfreserve val
11002         eval $inlibc
11003         ;;
11004 *)
11005         val="$undef"
11006         ;;
11007 esac
11008 : Ok, but do we want to use it.
11009 case "$val" in
11010 $define)
11011         case "$usesfio" in
11012         true|$define|[yY]*) dflt='y';;
11013         *) dflt='n';;
11014         esac
11015         echo "$package can use the sfio library, but it is experimental."
11016         rp="You seem to have sfio available, do you want to try using it?"
11017         . ./myread
11018         case "$ans" in
11019         y|Y) ;;
11020         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
11021                 val="$undef"
11022                 : Remove sfio from list of libraries to use
11023                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11024                 shift
11025                 libs="$*"
11026                 echo "libs = $libs" >&4
11027                 ;;
11028         esac
11029         ;;
11030 *)      case "$usesfio" in
11031         true|$define|[yY]*)
11032                 echo "Sorry, cannot find sfio on this machine" >&4
11033                 echo "Ignoring your setting of usesfio=$usesfio" >&4
11034                 ;;
11035         esac
11036         ;;
11037 esac
11038 set d_sfio
11039 eval $setvar
11040 case "$d_sfio" in
11041 $define) usesfio='true';;
11042 *) usesfio='false';;
11043 esac
11044
11045 : see if shmctl exists
11046 set shmctl d_shmctl
11047 eval $inlibc
11048
11049 : see if shmget exists
11050 set shmget d_shmget
11051 eval $inlibc
11052
11053 : see if shmat exists
11054 set shmat d_shmat
11055 eval $inlibc
11056 : see what shmat returns
11057 case "$d_shmat" in
11058 "$define")
11059         $cat >shmat.c <<'END'
11060 #include <sys/shm.h>
11061 void *shmat();
11062 END
11063         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11064                 shmattype='void *'
11065         else
11066                 shmattype='char *'
11067         fi
11068         echo "and it returns ($shmattype)." >&4
11069         : see if a prototype for shmat is available
11070         xxx=`./findhdr sys/shm.h`
11071         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11072         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11073                 val="$define"
11074         else
11075                 val="$undef"
11076         fi
11077         $rm -f shmat.[co]
11078         ;;
11079 *)
11080         val="$undef"
11081         ;;
11082 esac
11083 set d_shmatprototype
11084 eval $setvar
11085
11086 : see if shmdt exists
11087 set shmdt d_shmdt
11088 eval $inlibc
11089
11090 : see how much of the 'shm*(2)' library is present.
11091 h_shm=true
11092 echo " "
11093 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11094 *"$undef"*) h_shm=false;;
11095 esac
11096 case "$osname" in
11097 freebsd)
11098     case "`ipcs 2>&1`" in
11099     "SVID shared memory"*"not configured"*)
11100         echo "Your $osname does not have the shm*(2) configured." >&4
11101         h_shm=false
11102         val="$undef"
11103         set shmctl d_shmctl
11104         evat $setvar
11105         set shmget d_shmget
11106         evat $setvar
11107         set shmat d_shmat
11108         evat $setvar
11109         set shmdt d_shmdt
11110         evat $setvar
11111         ;;
11112     esac
11113     ;;
11114 esac
11115 : we could also check for sys/ipc.h ...
11116 if $h_shm && $test `./findhdr sys/shm.h`; then
11117         echo "You have the full shm*(2) library." >&4
11118         val="$define"
11119 else
11120         echo "You don't have the full shm*(2) library." >&4
11121         val="$undef"
11122 fi
11123 set d_shm
11124 eval $setvar
11125
11126 echo " "
11127 : see if we have sigaction
11128 if set sigaction val -f d_sigaction; eval $csym; $val; then
11129         echo 'sigaction() found.' >&4
11130         $cat > try.c <<'EOP'
11131 #include <stdio.h>
11132 #include <sys/types.h>
11133 #include <signal.h>
11134 int main()
11135 {
11136     struct sigaction act, oact;
11137     act.sa_flags = 0;
11138     oact.sa_handler = 0;
11139     /* so that act and oact are used */
11140     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11141 }
11142 EOP
11143         set try
11144         if eval $compile_ok; then
11145                 val="$define"
11146         else
11147                 echo "But you don't seem to have a useable struct sigaction." >&4
11148                 val="$undef"
11149         fi
11150 else
11151         echo 'sigaction NOT found.' >&4
11152         val="$undef"
11153 fi
11154 set d_sigaction; eval $setvar
11155 $rm -f try try$_o try.c
11156
11157 : see if sigsetjmp exists
11158 echo " "
11159 case "$d_sigsetjmp" in
11160 '')
11161         $cat >try.c <<'EOP'
11162 #include <setjmp.h>
11163 sigjmp_buf env;
11164 int set = 1;
11165 int main()
11166 {
11167         if (sigsetjmp(env,1))
11168                 exit(set);
11169         set = 0;
11170         siglongjmp(env, 1);
11171         exit(1);
11172 }
11173 EOP
11174         set try
11175         if eval $compile; then
11176                 if ./try >/dev/null 2>&1; then
11177                         echo "POSIX sigsetjmp found." >&4
11178                         val="$define"
11179                 else
11180                         $cat >&4 <<EOM
11181 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11182 I'll ignore them.
11183 EOM
11184                         val="$undef"
11185                 fi
11186         else
11187                 echo "sigsetjmp not found." >&4
11188                 val="$undef"
11189         fi
11190         ;;
11191 *) val="$d_sigsetjmp"
11192         case "$d_sigsetjmp" in
11193         $define) echo "POSIX sigsetjmp found." >&4;;
11194         $undef) echo "sigsetjmp not found." >&4;;
11195         esac
11196         ;;
11197 esac
11198 set d_sigsetjmp
11199 eval $setvar
11200 $rm -f try.c try
11201
11202 : see if sys/stat.h is available
11203 set sys/stat.h i_sysstat
11204 eval $inhdr
11205
11206
11207 : see if stat knows about block sizes
11208 echo " "
11209 echo "Checking to see if your struct stat has st_blocks field..." >&4
11210 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11211 eval $hasfield
11212
11213
11214 : see if this is a sys/vfs.h system
11215 set sys/vfs.h i_sysvfs
11216 eval $inhdr
11217
11218
11219 : see if this is a sys/statfs.h system
11220 set sys/statfs.h i_sysstatfs
11221 eval $inhdr
11222
11223
11224 echo " "
11225 echo "Checking to see if your system supports struct statfs..." >&4
11226 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
11227 eval $hasstruct
11228 case "$d_statfs_s" in
11229 "$define")      echo "Yes, it does."   ;;
11230 *)              echo "No, it doesn't." ;;
11231 esac
11232
11233
11234
11235 : see if struct statfs knows about f_flags
11236 case "$d_statfs_s" in
11237 define) 
11238         echo " "
11239         echo "Checking to see if your struct statfs has f_flags field..." >&4
11240         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
11241         eval $hasfield
11242         ;;
11243 *)      val="$undef"
11244         set d_statfs_f_flags
11245         eval $setvar
11246         ;;
11247 esac
11248 case "$d_statfs_f_flags" in
11249 "$define")      echo "Yes, it does."   ;;
11250 *)              echo "No, it doesn't." ;;
11251 esac
11252
11253 : see if _ptr and _cnt from stdio act std
11254 echo " "
11255 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11256         echo "(Looks like you have stdio.h from Linux.)"
11257         case "$stdio_ptr" in
11258         '') stdio_ptr='((fp)->_IO_read_ptr)'
11259                 ptr_lval=$define
11260                 ;;
11261         *)      ptr_lval=$d_stdio_ptr_lval;;
11262         esac
11263         case "$stdio_cnt" in
11264         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11265                 cnt_lval=$undef
11266                 ;;
11267         *)      cnt_lval=$d_stdio_cnt_lval;;
11268         esac
11269         case "$stdio_base" in
11270         '') stdio_base='((fp)->_IO_read_base)';;
11271         esac
11272         case "$stdio_bufsiz" in
11273         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11274         esac
11275 else
11276         case "$stdio_ptr" in
11277         '') stdio_ptr='((fp)->_ptr)'
11278                 ptr_lval=$define
11279                 ;;
11280         *)      ptr_lval=$d_stdio_ptr_lval;;
11281         esac
11282         case "$stdio_cnt" in
11283         '') stdio_cnt='((fp)->_cnt)'
11284                 cnt_lval=$define
11285                 ;;
11286         *)      cnt_lval=$d_stdio_cnt_lval;;
11287         esac
11288         case "$stdio_base" in
11289         '') stdio_base='((fp)->_base)';;
11290         esac
11291         case "$stdio_bufsiz" in
11292         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11293         esac
11294 fi
11295 : test whether _ptr and _cnt really work
11296 echo "Checking how std your stdio is..." >&4
11297 $cat >try.c <<EOP
11298 #include <stdio.h>
11299 #define FILE_ptr(fp)    $stdio_ptr
11300 #define FILE_cnt(fp)    $stdio_cnt
11301 int main() {
11302         FILE *fp = fopen("try.c", "r");
11303         char c = getc(fp);
11304         if (
11305                 18 <= FILE_cnt(fp) &&
11306                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11307         )
11308                 exit(0);
11309         exit(1);
11310 }
11311 EOP
11312 val="$undef"
11313 set try
11314 if eval $compile; then
11315         if ./try; then
11316                 echo "Your stdio acts pretty std."
11317                 val="$define"
11318         else
11319                 echo "Your stdio isn't very std."
11320         fi
11321 else
11322         echo "Your stdio doesn't appear very std."
11323 fi
11324 $rm -f try.c try
11325 set d_stdstdio
11326 eval $setvar
11327
11328 : Can _ptr be used as an lvalue?
11329 case "$d_stdstdio$ptr_lval" in
11330 $define$define) val=$define ;;
11331 *) val=$undef ;;
11332 esac
11333 set d_stdio_ptr_lval
11334 eval $setvar
11335
11336 : Can _cnt be used as an lvalue?
11337 case "$d_stdstdio$cnt_lval" in
11338 $define$define) val=$define ;;
11339 *) val=$undef ;;
11340 esac
11341 set d_stdio_cnt_lval
11342 eval $setvar
11343
11344 : see if _base is also standard
11345 val="$undef"
11346 case "$d_stdstdio" in
11347 $define)
11348         $cat >try.c <<EOP
11349 #include <stdio.h>
11350 #define FILE_base(fp)   $stdio_base
11351 #define FILE_bufsiz(fp) $stdio_bufsiz
11352 int main() {
11353         FILE *fp = fopen("try.c", "r");
11354         char c = getc(fp);
11355         if (
11356                 19 <= FILE_bufsiz(fp) &&
11357                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11358         )
11359                 exit(0);
11360         exit(1);
11361 }
11362 EOP
11363         set try
11364         if eval $compile; then
11365                 if ./try; then
11366                         echo "And its _base field acts std."
11367                         val="$define"
11368                 else
11369                         echo "But its _base field isn't std."
11370                 fi
11371         else
11372                 echo "However, it seems to be lacking the _base field."
11373         fi
11374         $rm -f try.c try
11375         ;;
11376 esac
11377 set d_stdiobase
11378 eval $setvar
11379
11380 $cat >&4 <<EOM
11381 Checking how to access stdio streams by file descriptor number...
11382 EOM
11383 case "$stdio_stream_array" in
11384 '')     $cat >try.c <<EOCP
11385 #include <stdio.h>
11386 int main() {
11387   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11388     printf("yes\n");
11389 }
11390 EOCP
11391         for s in _iob __iob __sF
11392         do
11393                 set try -DSTDIO_STREAM_ARRAY=$s
11394                 if eval $compile; then
11395                         case "`./try$exe_ext`" in
11396                         yes)    stdio_stream_array=$s; break ;;
11397                         esac
11398                 fi
11399         done
11400         $rm -f try.* try$exe_ext
11401 esac
11402 case "$stdio_stream_array" in
11403 '')     $cat >&4 <<EOM
11404 I can't figure out how to access stdio streams by file descriptor number.
11405 EOM
11406         d_stdio_stream_array="$undef"
11407         ;;
11408 *)      $cat >&4 <<EOM
11409 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11410 EOM
11411         d_stdio_stream_array="$define"
11412         ;;
11413 esac
11414
11415 : see if strcoll exists
11416 set strcoll d_strcoll
11417 eval $inlibc
11418
11419 : check for structure copying
11420 echo " "
11421 echo "Checking to see if your C compiler can copy structs..." >&4
11422 $cat >try.c <<'EOCP'
11423 int main()
11424 {
11425         struct blurfl {
11426                 int dyick;
11427         } foo, bar;
11428
11429         foo = bar;
11430 }
11431 EOCP
11432 if $cc -c try.c >/dev/null 2>&1 ; then
11433         val="$define"
11434         echo "Yup, it can."
11435 else
11436         val="$undef"
11437         echo "Nope, it can't."
11438 fi
11439 set d_strctcpy
11440 eval $setvar
11441 $rm -f try.*
11442
11443 : see if strerror and/or sys_errlist[] exist
11444 echo " "
11445 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11446     if set strerror val -f d_strerror; eval $csym; $val; then
11447                 echo 'strerror() found.' >&4
11448                 d_strerror="$define"
11449                 d_strerrm='strerror(e)'
11450                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11451                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11452                         d_syserrlst="$define"
11453                 else
11454                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11455                         d_syserrlst="$undef"
11456                 fi
11457     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11458                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11459                 echo 'strerror() found in string header.' >&4
11460                 d_strerror="$define"
11461                 d_strerrm='strerror(e)'
11462                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11463                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11464                                 d_syserrlst="$define"
11465                 else
11466                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11467                         d_syserrlst="$undef"
11468                 fi
11469     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11470                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11471                 d_strerror="$undef"
11472                 d_syserrlst="$define"
11473                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11474     else
11475                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11476                 d_strerror="$undef"
11477                 d_syserrlst="$undef"
11478                 d_strerrm='"unknown"'
11479     fi
11480 fi
11481
11482 : see if strtod exists
11483 set strtod d_strtod
11484 eval $inlibc
11485
11486 : see if strtol exists
11487 set strtol d_strtol
11488 eval $inlibc
11489
11490 : see if strtold exists
11491 set strtold d_strtold
11492 eval $inlibc
11493
11494 : see if strtoll exists
11495 set strtoll d_strtoll
11496 eval $inlibc
11497
11498 case "$d_longlong-$d_strtoll" in
11499 "$define-$define")
11500         $cat <<EOM
11501 Checking whether your strtoll() works okay...
11502 EOM
11503         $cat >try.c <<'EOCP'
11504 #include <errno.h>
11505 #ifdef __hpux
11506 #define strtoll __strtoll
11507 #endif
11508 #include <stdio.h>
11509 extern long long int strtoll(char *s, char **, int); 
11510 static int bad = 0;
11511 int check(char *s, long long ell, int een) {
11512         long long gll;
11513         errno = 0;
11514         gll = strtoll(s, 0, 10);
11515         if (!((gll == ell) && (errno == een)))
11516                 bad++;
11517 }
11518 int main() {
11519         check(" 1",                                      1LL, 0);
11520         check(" 0",                                      0LL, 0);
11521         check("-1",                                     -1LL, 0);
11522         check("-9223372036854775808", -9223372036854775808LL, 0);
11523         check("-9223372036854775808", -9223372036854775808LL, 0);
11524         check(" 9223372036854775807",  9223372036854775807LL, 0);
11525         check("-9223372036854775808", -9223372036854775808LL, 0);
11526         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
11527         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11528         if (!bad)
11529                 printf("ok\n");
11530 }
11531 EOCP
11532         set try
11533         if eval $compile; then
11534                 case "`./try`" in
11535                 ok) echo "Your strtoll() seems to be working okay." ;;
11536                 *) cat <<EOM >&4
11537 Your strtoll() doesn't seem to be working okay.
11538 EOM
11539                    d_strtoll="$undef"
11540                    ;;
11541                 esac
11542         fi
11543         ;;
11544 esac
11545
11546 : see if strtoul exists
11547 set strtoul d_strtoul
11548 eval $inlibc
11549
11550 : see if strtoull exists
11551 set strtoull d_strtoull
11552 eval $inlibc
11553
11554 case "$d_longlong-$d_strtoull" in
11555 "$define-$define")
11556         $cat <<EOM
11557 Checking whether your strtoull() works okay...
11558 EOM
11559         $cat >try.c <<'EOCP'
11560 #include <errno.h>
11561 #ifdef __hpux
11562 #define strtoull __strtoull
11563 #endif
11564 #include <stdio.h>
11565 extern unsigned long long int strtoull(char *s, char **, int); 
11566 static int bad = 0;
11567 int check(char *s, long long eull, int een) {
11568         long long gull;
11569         errno = 0;
11570         gull = strtoull(s, 0, 10);
11571         if (!((gull == eull) && (errno == een)))
11572                 bad++;
11573 }
11574 int main() {
11575         check(" 1",                                       1LL, 0);
11576         check(" 0",                                       0LL, 0);
11577         check("18446744073709551615", 18446744073709551615ULL, 0);
11578         check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11579         if (!bad)
11580                 printf("ok\n");
11581 }
11582 EOCP
11583         set try
11584         if eval $compile; then
11585                 case "`./try`" in
11586                 ok) echo "Your strtoull() seems to be working okay." ;;
11587                 *) cat <<EOM >&4
11588 Your strtoull() doesn't seem to be working okay.
11589 EOM
11590                    d_strtoull="$undef"
11591                    ;;
11592                 esac
11593         fi
11594         ;;
11595 esac
11596
11597 : see if strtouq exists
11598 set strtouq d_strtouq
11599 eval $inlibc
11600
11601 : see if strxfrm exists
11602 set strxfrm d_strxfrm
11603 eval $inlibc
11604
11605 : see if symlink exists
11606 set symlink d_symlink
11607 eval $inlibc
11608
11609 : see if syscall exists
11610 set syscall d_syscall
11611 eval $inlibc
11612
11613 : see if sysconf exists
11614 set sysconf d_sysconf
11615 eval $inlibc
11616
11617 : see if system exists
11618 set system d_system
11619 eval $inlibc
11620
11621 : see if tcgetpgrp exists
11622 set tcgetpgrp d_tcgetpgrp
11623 eval $inlibc
11624
11625 : see if tcsetpgrp exists
11626 set tcsetpgrp d_tcsetpgrp
11627 eval $inlibc
11628
11629 : see if prototype for telldir is available
11630 echo " "
11631 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11632 eval $hasproto
11633
11634 : see if this is a sys/times.h system
11635 set sys/times.h i_systimes
11636 eval $inhdr
11637
11638 : see if times exists
11639 echo " "
11640 if set times val -f d_times; eval $csym; $val; then
11641         echo 'times() found.' >&4
11642         d_times="$define"
11643         inc=''
11644         case "$i_systimes" in
11645         "$define") inc='sys/times.h';;
11646         esac
11647         rp="What is the type returned by times() on this system?"
11648         set clock_t clocktype long stdio.h sys/types.h $inc
11649         eval $typedef_ask
11650 else
11651         echo 'times() NOT found, hope that will do.' >&4
11652         d_times="$undef"
11653         clocktype='int'
11654 fi
11655
11656 : see if truncate exists
11657 set truncate d_truncate
11658 eval $inlibc
11659
11660 : see if tzname[] exists
11661 echo " "
11662 if set tzname val -a d_tzname; eval $csym; $val; then
11663         val="$define"
11664         echo 'tzname[] found.' >&4
11665 else
11666         val="$undef"
11667         echo 'tzname[] NOT found.' >&4
11668 fi
11669 set d_tzname
11670 eval $setvar
11671
11672 : see if umask exists
11673 set umask d_umask
11674 eval $inlibc
11675
11676 : see if ustat exists
11677 set ustat d_ustat
11678 eval $inlibc
11679
11680 : backward compatibility for d_hvfork
11681 if test X$d_hvfork != X; then
11682         d_vfork="$d_hvfork"
11683         d_hvfork=''
11684 fi
11685 : see if there is a vfork
11686 val=''
11687 set vfork val
11688 eval $inlibc
11689
11690 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11691 : perl on Solaris 2.x, and probably elsewhere.
11692 case "$val" in
11693 $define)
11694         echo " "
11695         case "$usevfork" in
11696         false) dflt='n';;
11697         *) dflt='y';;
11698         esac
11699         cat <<'EOM'
11700  
11701 Perl can only use a vfork() that doesn't suffer from strict
11702 restrictions on calling functions or modifying global data in
11703 the child.  For example, glibc-2.1 contains such a vfork()
11704 that is unsuitable.  If your system provides a proper fork()
11705 call, chances are that you do NOT want perl to use vfork().
11706
11707 EOM
11708         rp="Do you still want to use vfork()?"
11709         . ./myread
11710         case "$ans" in
11711         y|Y) ;;
11712         *)
11713                 echo "Ok, we won't use vfork()."
11714                 val="$undef"
11715                 ;;
11716         esac
11717         ;;
11718 esac
11719 set d_vfork
11720 eval $setvar
11721 case "$d_vfork" in
11722 $define) usevfork='true';;
11723 *) usevfork='false';;
11724 esac
11725
11726 : see if this is an sysdir system
11727 set sys/dir.h i_sysdir
11728 eval $inhdr
11729
11730 : see if this is an sysndir system
11731 set sys/ndir.h i_sysndir
11732 eval $inhdr
11733
11734 : see if closedir exists
11735 set closedir d_closedir
11736 eval $inlibc
11737
11738 case "$d_closedir" in
11739 "$define")
11740         echo " "
11741         echo "Checking whether closedir() returns a status..." >&4
11742         cat > closedir.c <<EOM
11743 #$i_dirent I_DIRENT             /**/
11744 #$i_sysdir I_SYS_DIR            /**/
11745 #$i_sysndir I_SYS_NDIR          /**/
11746 #$i_systypes I_SYS_TYPES        /**/
11747
11748 #if defined(I_SYS_TYPES)
11749 #include <sys/types.h>
11750 #endif
11751 #if defined(I_DIRENT)
11752 #include <dirent.h>
11753 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11754 #include <sys/dir.h>
11755 #endif
11756 #else
11757 #ifdef I_SYS_NDIR
11758 #include <sys/ndir.h>
11759 #else
11760 #ifdef I_SYS_DIR
11761 #ifdef hp9000s500
11762 #include <ndir.h>       /* may be wrong in the future */
11763 #else
11764 #include <sys/dir.h>
11765 #endif
11766 #endif
11767 #endif
11768 #endif 
11769 int main() { return closedir(opendir(".")); }
11770 EOM
11771         set closedir
11772         if eval $compile_ok; then
11773                 if ./closedir > /dev/null 2>&1 ; then
11774                         echo "Yes, it does."
11775                         val="$undef"
11776                 else
11777                         echo "No, it doesn't."
11778                         val="$define"
11779                 fi
11780         else
11781                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11782                 val="$define"
11783         fi
11784         ;;
11785 *)
11786         val="$undef";
11787         ;;
11788 esac
11789 set d_void_closedir
11790 eval $setvar
11791 $rm -f closedir*
11792 : check for volatile keyword
11793 echo " "
11794 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11795 $cat >try.c <<'EOCP'
11796 int main()
11797 {
11798         typedef struct _goo_struct goo_struct;
11799         goo_struct * volatile goo = ((goo_struct *)0);
11800         struct _goo_struct {
11801                 long long_int;
11802                 int reg_int;
11803                 char char_var;
11804         };
11805         typedef unsigned short foo_t;
11806         char *volatile foo;
11807         volatile int bar;
11808         volatile foo_t blech;
11809         foo = foo;
11810 }
11811 EOCP
11812 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11813         val="$define"
11814         echo "Yup, it does."
11815 else
11816         val="$undef"
11817         echo "Nope, it doesn't."
11818 fi
11819 set d_volatile
11820 eval $setvar
11821 $rm -f try.*
11822
11823 : see if there is a wait4
11824 set wait4 d_wait4
11825 eval $inlibc
11826
11827 : see if waitpid exists
11828 set waitpid d_waitpid
11829 eval $inlibc
11830
11831 : see if wcstombs exists
11832 set wcstombs d_wcstombs
11833 eval $inlibc
11834
11835 : see if wctomb exists
11836 set wctomb d_wctomb
11837 eval $inlibc
11838
11839 : preserve RCS keywords in files with variable substitution, grrr
11840 Date='$Date'
11841 Id='$Id'
11842 Log='$Log'
11843 RCSfile='$RCSfile'
11844 Revision='$Revision'
11845
11846 case "$crosscompile" in
11847 ''|[nN]*) crosscompile="$undef" ;;
11848 esac
11849
11850 case "$osname" in
11851 next|rhapsody|darwin) multiarch="$define" ;;
11852 esac
11853 case "$multiarch" in
11854 ''|[nN]*) multiarch="$undef" ;;
11855 esac
11856
11857 : check for alignment requirements
11858 echo " "
11859 case "$crosscompile$multiarch" in
11860 *$define*)
11861         $cat <<EOM
11862 You seem to be either cross-compiling or doing a multiarchitecture build,
11863 skipping the memory alignment check.
11864
11865 EOM
11866         case "$alignbytes" in
11867         '') alignbytes=8 ;;
11868         esac
11869         ;;
11870 *)
11871         case "$alignbytes" in
11872         '') echo "Checking alignment constraints..." >&4
11873                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
11874                         $cat >try.c <<'EOCP'
11875 typedef long double NV;
11876 EOCP
11877                 else
11878                         $cat >try.c <<'EOCP'
11879 typedef double NV;
11880 EOCP
11881                 fi
11882                 $cat >>try.c <<'EOCP'
11883 #include <stdio.h>
11884 struct foobar {
11885         char foo;
11886         NV bar;
11887 } try_algn;
11888 int main()
11889 {
11890     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11891     return(0);
11892 }
11893 EOCP
11894                 set try
11895                 if eval $compile_ok; then
11896                         dflt=`./try`
11897                 else
11898                         dflt='8'
11899                         echo "(I can't seem to compile the test program...)"
11900                 fi
11901                 ;;
11902         *) dflt="$alignbytes"
11903                 ;;
11904         esac
11905         rp="Doubles must be aligned on a how-many-byte boundary?"
11906         . ./myread
11907         alignbytes="$ans"
11908         $rm -f try.c try
11909         ;;
11910 esac
11911
11912
11913 : set the base revision
11914 baserev=5.0
11915
11916 : check for ordering of bytes in a long
11917 echo " "
11918 case "$crosscompile$multiarch" in
11919 *$define*)
11920         $cat <<EOM
11921 You seem to be either cross-compiling or doing a multiarchitecture build,
11922 skipping the byteorder check.
11923
11924 EOM
11925         byteorder='0xffff'
11926         ;;
11927 *)
11928         case "$byteorder" in
11929         '')
11930                 $cat <<'EOM'
11931 In the following, larger digits indicate more significance.  A big-endian
11932 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11933 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11934 machines may have weird orders like 3412.  A Cray will report 87654321,
11935 an Alpha will report 12345678. If the test program works the default is
11936 probably right.
11937 I'm now running the test program...
11938 EOM
11939                 $cat >try.c <<'EOCP'
11940 #include <stdio.h>
11941 int main()
11942 {
11943         int i;
11944         union {
11945                 unsigned long l;
11946                 char c[sizeof(long)];
11947         } u;
11948
11949         if (sizeof(long) > 4)
11950                 u.l = (0x08070605L << 32) | 0x04030201L;
11951         else
11952                 u.l = 0x04030201L;
11953         for (i = 0; i < sizeof(long); i++)
11954                 printf("%c", u.c[i]+'0');
11955         printf("\n");
11956         exit(0);
11957 }
11958 EOCP
11959                 xxx_prompt=y
11960                 set try
11961                 if eval $compile && ./try > /dev/null; then
11962                         dflt=`./try`
11963                         case "$dflt" in
11964                         [1-4][1-4][1-4][1-4]|12345678|87654321)
11965                                 echo "(The test program ran ok.)"
11966                                 echo "byteorder=$dflt"
11967                                 xxx_prompt=n
11968                         ;;
11969                         ????|????????) echo "(The test program ran ok.)" ;;
11970                         *) echo "(The test program didn't run right for some reason.)" ;;
11971                         esac
11972                 else
11973                         dflt='4321'
11974                         cat <<'EOM'
11975 (I can't seem to compile the test program.  Guessing big-endian...)
11976 EOM
11977                 fi
11978                 case "$xxx_prompt" in
11979                 y)
11980                         rp="What is the order of bytes in a long?"
11981                         . ./myread
11982                         byteorder="$ans"
11983                         ;;
11984                 *)      byteorder=$dflt
11985                         ;;
11986                 esac
11987                 ;;
11988         esac
11989         $rm -f try.c try
11990         ;;
11991 esac
11992
11993
11994 : how do we catenate cpp tokens here?
11995 echo " "
11996 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11997 $cat >cpp_stuff.c <<'EOCP'
11998 #define RCAT(a,b)a/**/b
11999 #define ACAT(a,b)a ## b
12000 RCAT(Rei,ser)
12001 ACAT(Cir,cus)
12002 EOCP
12003 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12004 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12005         echo "Oh!  Smells like ANSI's been here." >&4
12006         echo "We can catify or stringify, separately or together!"
12007         cpp_stuff=42
12008 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12009         echo "Ah, yes!  The good old days!" >&4
12010         echo "However, in the good old days we don't know how to stringify and"
12011         echo "catify at the same time."
12012         cpp_stuff=1
12013 else
12014         $cat >&4 <<EOM
12015 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
12016 to have to edit the values of CAT[2-5] in config.h...
12017 EOM
12018         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12019 fi
12020 $rm -f cpp_stuff.*
12021
12022 : see if this is a db.h system
12023 set db.h i_db
12024 eval $inhdr
12025
12026 case "$i_db" in
12027 $define)
12028         : Check db version.
12029         echo " "
12030         echo "Checking Berkeley DB version ..." >&4
12031         $cat >try.c <<EOCP
12032 #$d_const HASCONST
12033 #ifndef HASCONST
12034 #define const
12035 #endif
12036 #include <sys/types.h>
12037 #include <stdio.h>
12038 #include <db.h>
12039 int main()
12040 {
12041 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12042     int Major, Minor, Patch ;
12043     unsigned long Version ;
12044     (void)db_version(&Major, &Minor, &Patch) ;
12045     printf("You have Berkeley DB Version 2 or greater\n");
12046
12047     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12048                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12049     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12050                 Major, Minor, Patch) ;
12051
12052     /* check that db.h & libdb are compatible */
12053     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12054         printf("db.h and libdb are incompatible\n") ;
12055         exit(3);        
12056     }
12057
12058     printf("db.h and libdb are compatible\n") ;
12059
12060     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12061                 + DB_VERSION_PATCH ;
12062
12063     /* needs to be >= 2.3.4 */
12064     if (Version < 2003004) {
12065     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12066         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12067         exit(2);        
12068     }
12069
12070     exit(0);
12071 #else
12072 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12073     printf("You have Berkeley DB Version 1\n");
12074     exit(0);    /* DB version < 2: the coast is clear. */
12075 #else
12076     exit(1);    /* <db.h> not Berkeley DB? */
12077 #endif
12078 #endif
12079 }
12080 EOCP
12081         set try
12082         if eval $compile_ok && ./try; then
12083                 echo 'Looks OK.' >&4
12084         else
12085                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12086                 i_db=$undef
12087                 case " $libs " in
12088                 *"-ldb "*)
12089                         : Remove db from list of libraries to use
12090                         echo "Removing unusable -ldb from library list" >&4
12091                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12092                         shift
12093                         libs="$*"
12094                         echo "libs = $libs" >&4
12095                         ;;
12096                 esac
12097         fi
12098         $rm -f try.*
12099         ;;
12100 esac
12101
12102 case "$i_db" in
12103 define)
12104         : Check the return type needed for hash 
12105         echo " "
12106         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12107         $cat >try.c <<EOCP
12108 #$d_const HASCONST
12109 #ifndef HASCONST
12110 #define const
12111 #endif
12112 #include <sys/types.h>
12113 #include <db.h>
12114
12115 #ifndef DB_VERSION_MAJOR
12116 u_int32_t hash_cb (ptr, size)
12117 const void *ptr;
12118 size_t size;
12119 {
12120 }
12121 HASHINFO info;
12122 int main()
12123 {
12124         info.hash = hash_cb;
12125 }
12126 #endif
12127 EOCP
12128         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12129                 if $contains warning try.out >>/dev/null 2>&1 ; then
12130                         db_hashtype='int'
12131                 else
12132                         db_hashtype='u_int32_t'
12133                 fi
12134         else
12135                 : XXX Maybe we should just give up here.
12136                 db_hashtype=u_int32_t
12137                 $cat try.out >&4
12138                 echo "Help:  I can't seem to compile the db test program." >&4
12139                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12140         fi
12141         $rm -f try.*
12142         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12143         ;;
12144 *)      db_hashtype=u_int32_t
12145         ;;
12146 esac
12147 case "$i_db" in
12148 define)
12149         : Check the return type needed for prefix 
12150         echo " "
12151         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12152         cat >try.c <<EOCP
12153 #$d_const HASCONST
12154 #ifndef HASCONST
12155 #define const
12156 #endif
12157 #include <sys/types.h>
12158 #include <db.h>
12159
12160 #ifndef DB_VERSION_MAJOR
12161 size_t prefix_cb (key1, key2)
12162 const DBT *key1;
12163 const DBT *key2;
12164 {
12165 }
12166 BTREEINFO info;
12167 int main()
12168 {
12169         info.prefix = prefix_cb;
12170 }
12171 #endif
12172 EOCP
12173         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12174                 if $contains warning try.out >>/dev/null 2>&1 ; then
12175                         db_prefixtype='int'
12176                 else
12177                         db_prefixtype='size_t'
12178                 fi
12179         else
12180                 db_prefixtype='size_t'
12181                 : XXX Maybe we should just give up here.
12182                 $cat try.out >&4
12183                 echo "Help:  I can't seem to compile the db test program." >&4
12184                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12185         fi
12186         $rm -f try.*
12187         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12188         ;;
12189 *)      db_prefixtype='size_t'
12190         ;;
12191 esac
12192
12193 : check for void type
12194 echo " "
12195 echo "Checking to see how well your C compiler groks the void type..." >&4
12196 case "$voidflags" in
12197 '')
12198         $cat >try.c <<'EOCP'
12199 #if TRY & 1
12200 void sub() {
12201 #else
12202 sub() {
12203 #endif
12204         extern void moo();      /* function returning void */
12205         void (*goo)();          /* ptr to func returning void */
12206 #if TRY & 8
12207         void *hue;              /* generic ptr */
12208 #endif
12209 #if TRY & 2
12210         void (*foo[10])();
12211 #endif
12212
12213 #if TRY & 4
12214         if(goo == moo) {
12215                 exit(0);
12216         }
12217 #endif
12218         exit(0);
12219 }
12220 int main() { sub(); }
12221 EOCP
12222         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12223                 voidflags=$defvoidused
12224         echo "Good.  It appears to support void to the level $package wants.">&4
12225                 if $contains warning .out >/dev/null 2>&1; then
12226                         echo "However, you might get some warnings that look like this:"
12227                         $cat .out
12228                 fi
12229         else
12230 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12231                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12232                         echo "It supports 1..."
12233                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12234                                 echo "It also supports 2..."
12235                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12236                                         voidflags=7
12237                                         echo "And it supports 4 but not 8 definitely."
12238                                 else
12239                                         echo "It doesn't support 4..."
12240                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12241                                                 voidflags=11
12242                                                 echo "But it supports 8."
12243                                         else
12244                                                 voidflags=3
12245                                                 echo "Neither does it support 8."
12246                                         fi
12247                                 fi
12248                         else
12249                                 echo "It does not support 2..."
12250                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12251                                         voidflags=13
12252                                         echo "But it supports 4 and 8."
12253                                 else
12254                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12255                                                 voidflags=5
12256                                                 echo "And it supports 4 but has not heard about 8."
12257                                         else
12258                                                 echo "However it supports 8 but not 4."
12259                                         fi
12260                                 fi
12261                         fi
12262                 else
12263                         echo "There is no support at all for void."
12264                         voidflags=0
12265                 fi
12266         fi
12267 esac
12268 case "$voidflags" in
12269 "$defvoidused") ;;
12270 *)      $cat >&4 <<'EOM'
12271   Support flag bits are:
12272     1: basic void declarations.
12273     2: arrays of pointers to functions returning void.
12274     4: operations between pointers to and addresses of void functions.
12275     8: generic void pointers.
12276 EOM
12277         dflt="$voidflags";
12278         rp="Your void support flags add up to what?"
12279         . ./myread
12280         voidflags="$ans"
12281         ;;
12282 esac
12283 $rm -f try.* .out
12284
12285
12286 : How can we generate normalized random numbers ?
12287 echo " "
12288 echo "Looking for a random number function..." >&4
12289 case "$randfunc" in
12290 '')
12291         if set drand48 val -f; eval $csym; $val; then
12292                 dflt="drand48"
12293                 echo "Good, found drand48()." >&4
12294         elif set random val -f; eval $csym; $val; then
12295                 dflt="random"
12296                 echo "OK, found random()." >&4
12297         else
12298                 dflt="rand"
12299                 echo "Yick, looks like I have to use rand()." >&4
12300         fi
12301         echo " "
12302         ;;
12303 *)
12304         dflt="$randfunc"
12305         ;;
12306 esac
12307 cont=true
12308
12309 case "$ccflags" in
12310 *-Dmy_rand=*|*-Dmy_srand=*)
12311         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12312         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12313         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12314         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12315         ;;
12316 esac
12317
12318 while $test "$cont"; do
12319         rp="Use which function to generate random numbers?"
12320         . ./myread
12321         if $test "$ans" = "$dflt"; then
12322                 : null
12323         else
12324                 randbits=''
12325         fi
12326         randfunc="$ans"
12327         if set $ans val -f; eval $csym; $val; then
12328                 cont=''
12329         else
12330                 dflt=y
12331                 rp="I cannot find function $ans. Use that name anyway?"
12332                 . ./myread
12333                 dflt=rand
12334                 case "$ans" in
12335                         [yY]*) cont='';;
12336                 esac
12337         fi
12338         case "$cont" in
12339         '')
12340                 case "$randfunc" in
12341                 drand48)
12342                         drand01="drand48()"
12343                         seedfunc="srand48"
12344                         randbits=48
12345                         randseedtype=long
12346                         ;;
12347                 rand|random)
12348                         case "$randbits" in
12349                         '')
12350 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12351                                 $cat >try.c <<EOCP
12352 #$i_unistd I_UNISTD
12353 #$i_stdlib I_STDLIB
12354 #include <stdio.h>
12355 #ifdef I_UNISTD
12356 #  include <unistd.h>
12357 #endif
12358 #ifdef I_STDLIB
12359 #  include <stdlib.h>
12360 #endif
12361 int main()
12362 {
12363         register int i;
12364         register unsigned long tmp;
12365         register unsigned long max = 0L;
12366
12367         for (i = 1000; i; i--) {
12368                 tmp = (unsigned long) $randfunc();
12369                 if (tmp > max) max = tmp;
12370         }
12371         for (i = 0; max; i++)
12372                 max /= 2;
12373         printf("%d\n",i);
12374 }
12375 EOCP
12376                                 set try
12377                                 if eval $compile_ok; then
12378                                         dflt=`try`
12379                                 else
12380                                         dflt='?'
12381                                         echo "(I can't seem to compile the test program...)"
12382                                 fi
12383                                 ;;
12384                         *)
12385                                 dflt="$randbits"
12386                                 ;;
12387                         esac
12388                         rp="How many bits does your $randfunc() function produce?"
12389                         . ./myread
12390                         randbits="$ans"
12391                         $rm -f try.c try
12392                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12393                         seedfunc="s$randfunc"
12394                         randseedtype=unsigned
12395                         ;;
12396                 *)
12397                         dflt="31"
12398                         rp="How many bits does your $randfunc() function produce?"
12399                         . ./myread
12400                         randbits="$ans"
12401                         seedfunc="s$randfunc"
12402                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12403                         if set $seedfunc val -f; eval $csym; $val; then
12404                                 echo "(Using $seedfunc() to seed random generator)"
12405                         else
12406                                 echo "(Warning: no $seedfunc() to seed random generator)"
12407                                 seedfunc=rand
12408                         fi
12409                         randseedtype=unsigned
12410                         ;;
12411                 esac
12412                 ;;
12413         esac
12414 done
12415
12416 echo " "
12417 echo "Determining whether or not we are on an EBCDIC system..." >&4
12418 $cat >tebcdic.c <<'EOM'
12419 int main()
12420 {
12421   if ('M'==0xd4) return 0;
12422   return 1;
12423 }
12424 EOM
12425
12426 val=$undef
12427 set tebcdic
12428 if eval $compile_ok; then
12429         if ./tebcdic; then
12430                 echo "You have EBCDIC." >&4
12431                 val="$define"
12432         else
12433                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12434         fi
12435 else
12436         echo "I'm unable to compile the test program." >&4
12437         echo "I'll assume ASCII or some ISO Latin." >&4
12438 fi
12439 $rm -f tebcdic.c tebcdic
12440 set ebcdic
12441 eval $setvar
12442
12443 echo " "
12444 $cat >&4 <<EOM
12445 Checking how to flush all pending stdio output...
12446 EOM
12447 # I only know how to find the first 32 possibly open files on SunOS.
12448 # See also hints/sunos_4_1.sh and util.c  --AD
12449 case "$osname" in
12450 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12451 esac
12452 $cat >>try.c <<EOCP
12453 #include <stdio.h>
12454 #$i_unistd I_UNISTD
12455 #ifdef I_UNISTD
12456 # include <unistd.h>
12457 #endif
12458 #$d_sysconf HAS_SYSCONF
12459 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12460 #ifdef HAS_STDIO_STREAM_ARRAY
12461 # define STDIO_STREAM_ARRAY $stdio_stream_array
12462 #endif
12463 int main() {
12464   FILE* p = fopen("try.out", "w");
12465 #ifdef TRY_FPUTC
12466   fputc('x', p);
12467 #else
12468 # ifdef TRY_FPRINTF
12469   fprintf(p, "x");
12470 # endif
12471 #endif
12472 #ifdef TRY_FFLUSH_NULL
12473   fflush(NULL);
12474 #endif
12475 #ifdef TRY_FFLUSH_ALL
12476   {
12477     long open_max = -1;
12478 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12479     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12480 # else
12481 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12482     open_max = sysconf(_SC_OPEN_MAX);
12483 #  else
12484 #   ifdef FOPEN_MAX
12485     open_max = FOPEN_MAX;
12486 #   else
12487 #    ifdef OPEN_MAX
12488     open_max = OPEN_MAX;
12489 #    else
12490 #     ifdef _NFILE
12491     open_max = _NFILE;
12492 #     endif
12493 #    endif
12494 #   endif
12495 #  endif
12496 # endif 
12497 # ifdef HAS_STDIO_STREAM_ARRAY
12498     if (open_max > 0) {
12499       long i;
12500       for (i = 0; i < open_max; i++)
12501             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12502                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12503                 STDIO_STREAM_ARRAY[i]._flag)
12504                 fflush(&STDIO_STREAM_ARRAY[i]);
12505     }   
12506   }
12507 # endif
12508 #endif
12509   _exit(42);
12510 }
12511 EOCP
12512 : first we have to find out how _not_ to flush
12513 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12514     output=''
12515     set try -DTRY_FPUTC
12516     if eval $compile; then
12517             $rm -f try.out
12518             ./try$exe_ext 2>/dev/null
12519             if $test ! -s try.out -a "X$?" = X42; then
12520                 output=-DTRY_FPUTC
12521             fi
12522     fi
12523     case "$output" in
12524     '')
12525             set try -DTRY_FPRINTF
12526             $rm -f try.out
12527             if eval $compile; then
12528                     $rm -f try.out
12529                     ./try$exe_ext 2>/dev/null
12530                     if $test ! -s try.out -a "X$?" = X42; then
12531                         output=-DTRY_FPRINTF
12532                     fi
12533             fi
12534         ;;
12535     esac
12536 fi
12537 : check for fflush NULL behaviour
12538 case "$fflushNULL" in
12539 '')     set try -DTRY_FFLUSH_NULL $output
12540         if eval $compile; then
12541                 $rm -f try.out
12542                 ./try$exe_ext 2>/dev/null
12543                 code="$?"
12544                 if $test -s try.out -a "X$code" = X42; then
12545                         fflushNULL="`$cat try.out`"
12546                 else
12547                         if $test "X$code" != X42; then
12548                                 $cat >&4 <<EOM
12549 (If this test failed, don't worry, we'll try another method shortly.)
12550 EOM
12551                         fi
12552                 fi
12553         fi
12554         $rm -f core try.core core.try.*
12555         case "$fflushNULL" in
12556         x)      $cat >&4 <<EOM
12557 Your fflush(NULL) works okay for output streams.
12558 Let's see if it clobbers input pipes...
12559 EOM
12560 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12561 # bug that improperly flushes the input end of pipes.  So we avoid the
12562 # autoflush on fork/system/exec support for now. :-(
12563 $cat >tryp.c <<EOCP
12564 #include <stdio.h>
12565 int
12566 main(int argc, char **argv)
12567 {
12568     char buf[1024];
12569     int i;
12570     char *bp = buf;
12571     while (1) {
12572         while ((i = getc(stdin)) != -1
12573                && (*bp++ = i) != '\n'
12574                && bp < &buf[1024])
12575         /* DO NOTHING */ ;
12576         *bp = '\0';
12577         fprintf(stdout, "%s", buf);
12578         fflush(NULL);
12579         if (i == -1)
12580         return 0;
12581         bp = buf;
12582     }
12583 }
12584 EOCP
12585                 fflushNULL="$define"
12586                 set tryp
12587                 if eval $compile; then
12588                     $rm -f tryp.out
12589                     $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12590                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
12591                        $cat >&4 <<EOM
12592 fflush(NULL) seems to behave okay with input streams.
12593 EOM
12594                         fflushNULL="$define"
12595                     else
12596                         $cat >&4 <<EOM
12597 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
12598 EOM
12599                         fflushNULL="$undef"
12600                     fi
12601                 fi
12602                 $rm -f core tryp.core core.tryp.*
12603                 ;;
12604         '')     $cat >&4 <<EOM
12605 Your fflush(NULL) isn't working (contrary to ANSI C).
12606 EOM
12607                 fflushNULL="$undef"
12608                 ;;
12609         *)      $cat >&4 <<EOM
12610 Cannot figure out whether your fflush(NULL) works or not.
12611 I'm assuming it doesn't (contrary to ANSI C).
12612 EOM
12613                 fflushNULL="$undef"
12614                 ;;
12615         esac
12616         ;;
12617 $define|true|[yY]*)
12618         fflushNULL="$define"
12619         ;;
12620 *)
12621         fflushNULL="$undef"
12622         ;;
12623 esac
12624 : check explicit looping only if NULL did not work
12625 case "$fflushNULL" in
12626 "$undef")
12627         : check for fflush all behaviour
12628         case "$fflushall" in
12629         '')     set try -DTRY_FFLUSH_ALL $output
12630                 if eval $compile; then
12631                         $cat >&4 <<EOM
12632 (Now testing the other method--but note that also this may fail.)
12633 EOM
12634                         $rm -f try.out
12635                         ./try$exe_ext 2>/dev/null
12636                         if $test -s try.out -a "X$?" = X42; then
12637                                 fflushall="`$cat try.out`"
12638                         fi
12639                 fi
12640                 $rm -f core try.core core.try.*
12641                 case "$fflushall" in
12642                 x)      $cat >&4 <<EOM
12643 Whew. Flushing explicitly all the stdio streams works.
12644 EOM
12645                         fflushall="$define"
12646                         ;;
12647                 '')     $cat >&4 <<EOM
12648 Sigh. Flushing explicitly all the stdio streams doesn't work.
12649 EOM
12650                         fflushall="$undef"
12651                         ;;
12652                 *)      $cat >&4 <<EOM
12653 Cannot figure out whether flushing stdio streams explicitly works or not.
12654 I'm assuming it doesn't.
12655 EOM
12656                         fflushall="$undef"
12657                         ;;
12658                 esac
12659                 ;;
12660         "$define"|true|[yY]*)
12661                 fflushall="$define"
12662                 ;;
12663         *)
12664                 fflushall="$undef"
12665                 ;;
12666         esac
12667         ;;
12668 *)      fflushall="$undef"      
12669         ;;
12670 esac
12671 case "$fflushNULL$fflushall" in
12672 undefundef)
12673         $cat <<EOM
12674 I cannot figure out how to flush pending stdio output.
12675 EOM
12676         ;;
12677 esac
12678 $rm -f try.* try$exe_ext
12679
12680 : Store the full pathname to the ar program for use in the C program
12681 : Respect a hint or command line value for full_ar.
12682 case "$full_ar" in
12683 '') full_ar=$ar ;;
12684 esac
12685
12686 : Store the full pathname to the sed program for use in the C program
12687 full_sed=$sed
12688
12689 : see what type gids are declared as in the kernel
12690 echo " "
12691 echo "Looking for the type for group ids returned by getgid()."
12692 set gid_t gidtype xxx stdio.h sys/types.h
12693 eval $typedef
12694 case "$gidtype" in
12695 xxx)
12696         xxx=`./findhdr sys/user.h`
12697         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12698         case $1 in
12699         unsigned) dflt="$1 $2" ;;
12700         *) dflt="$1" ;;
12701         esac
12702         ;;
12703 *) dflt="$gidtype";;
12704 esac
12705 case "$gidtype" in
12706 gid_t) echo "gid_t found." ;;
12707 *)      rp="What is the type for group ids returned by getgid()?"
12708         . ./myread
12709         gidtype="$ans"
12710         ;;
12711 esac
12712
12713 echo " "
12714 case "$gidtype" in
12715 *_t) zzz="$gidtype"     ;;
12716 *)   zzz="gid"          ;;
12717 esac
12718 echo "Checking the size of $zzz..." >&4 
12719 cat > try.c <<EOCP
12720 #include <sys/types.h>
12721 #include <stdio.h>
12722 int main() {
12723     printf("%d\n", (int)sizeof($gidtype));
12724     exit(0);
12725 }
12726 EOCP
12727 set try
12728 if eval $compile_ok; then
12729         yyy=`./try`
12730         case "$yyy" in
12731         '')     gidsize=4
12732                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12733                 ;;
12734         *)      gidsize=$yyy
12735                 echo "Your $zzz is $gidsize bytes long."
12736                 ;;
12737         esac
12738 else
12739         gidsize=4
12740         echo "(I can't compile the test program--guessing $gidsize.)" >&4
12741 fi
12742
12743
12744 echo " "
12745 case "$gidtype" in
12746 *_t) zzz="$gidtype"     ;;
12747 *)   zzz="gid"          ;;
12748 esac
12749 echo "Checking the sign of $zzz..." >&4 
12750 cat > try.c <<EOCP
12751 #include <sys/types.h>
12752 #include <stdio.h>
12753 int main() {
12754         $gidtype foo = -1;
12755         if (foo < 0)
12756                 printf("-1\n");
12757         else
12758                 printf("1\n");
12759 }
12760 EOCP
12761 set try
12762 if eval $compile; then
12763         yyy=`./try`
12764         case "$yyy" in
12765         '')     gidsign=1
12766                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12767                 ;;
12768         *)      gidsign=$yyy
12769                 case "$gidsign" in
12770                  1) echo "Your $zzz is unsigned." ;;
12771                 -1) echo "Your $zzz is signed."   ;;
12772                 esac
12773                 ;;
12774         esac
12775 else
12776         gidsign=1
12777         echo "(I can't compile the test program--guessing unsigned.)" >&4
12778 fi
12779
12780
12781 echo " "
12782
12783 if $test X"$quadtype" != X; then
12784
12785 echo "Checking how to print 64-bit integers..." >&4
12786
12787 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12788         $cat >try.c <<'EOCP'
12789 #include <sys/types.h>
12790 #include <stdio.h>
12791 int main() {
12792   int q = 12345678901;
12793   printf("%ld\n", q);
12794 }
12795 EOCP
12796         set try
12797         if eval $compile; then
12798                 yyy=`./try$exe_ext`
12799                 case "$yyy" in
12800                 12345678901)
12801                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12802                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12803                         echo "We will use %d."
12804                         ;;
12805                 esac
12806         fi
12807 fi
12808
12809 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12810         $cat >try.c <<'EOCP'
12811 #include <sys/types.h>
12812 #include <stdio.h>
12813 int main() {
12814   long q = 12345678901;
12815   printf("%ld\n", q);
12816 }
12817 EOCP
12818         set try
12819         if eval $compile; then
12820                 yyy=`./try$exe_ext`
12821                 case "$yyy" in
12822                 12345678901)
12823                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12824                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12825                         echo "We will use %ld."
12826                         ;;
12827                 esac
12828         fi
12829 fi
12830
12831 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12832         $cat >try.c <<'EOCP'
12833 #include <sys/types.h>
12834 #include <inttypes.h>
12835 #include <stdio.h>
12836 int main() {
12837   int64_t q = 12345678901;
12838   printf("%" PRId64 "\n", q);
12839 }
12840 EOCP
12841         set try
12842         if eval $compile; then
12843                 yyy=`./try$exe_ext`
12844                 case "$yyy" in
12845                 12345678901)
12846                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12847                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12848                         echo "We will use the C9X style."
12849                         ;;
12850                 esac
12851         fi
12852 fi
12853
12854 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12855         $cat >try.c <<'EOCP'
12856 #include <sys/types.h>
12857 #include <stdio.h>
12858 int main() {
12859   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12860   printf("%lld\n", q);
12861 }
12862 EOCP
12863         set try
12864         if eval $compile; then
12865                 yyy=`./try$exe_ext`
12866                 case "$yyy" in
12867                 12345678901)
12868                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12869                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12870                         echo "We will use the %lld style."
12871                         ;;
12872                 esac
12873         fi
12874 fi
12875
12876 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12877         $cat >try.c <<EOCP
12878 #include <sys/types.h>
12879 #include <stdio.h>
12880 int main() {
12881   $quadtype q = 12345678901;
12882   printf("%Ld\n", q);
12883 }
12884 EOCP
12885         set try
12886         if eval $compile; then
12887                 yyy=`./try$exe_ext`
12888                 case "$yyy" in
12889                 12345678901)
12890                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12891                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12892                         echo "We will use %Ld."
12893                         ;;
12894                 esac
12895         fi
12896 fi
12897
12898 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12899         $cat >try.c <<EOCP
12900 #include <sys/types.h>
12901 #include <stdio.h>
12902 int main() {
12903   $quadtype q = 12345678901;
12904   printf("%qd\n", q);
12905 }
12906 EOCP
12907         set try
12908         if eval $compile; then
12909                 yyy=`./try$exe_ext`
12910                 case "$yyy" in
12911                 12345678901)
12912                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12913                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12914                         echo "We will use %qd."
12915                         ;;
12916                 esac
12917         fi
12918 fi
12919
12920 if $test X"$sPRId64" = X; then
12921         echo "Cannot figure out how to print 64-bit integers." >&4
12922 fi
12923
12924 $rm -f try try.*
12925
12926 fi
12927
12928 case "$sPRId64" in
12929 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
12930         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
12931         ;;
12932 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
12933         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
12934         ;;
12935 esac
12936
12937
12938 echo " "
12939 $echo "Checking the format strings to be used for Perl's internal types..." >&4
12940
12941 if $test X"$ivsize" = X8; then
12942         ivdformat="$sPRId64"
12943         uvuformat="$sPRIu64"
12944         uvoformat="$sPRIo64"
12945         uvxformat="$sPRIx64"
12946 else
12947         if $test X"$ivsize" = X"$longsize"; then
12948                 ivdformat='"ld"'
12949                 uvuformat='"lu"'
12950                 uvoformat='"lo"'
12951                 uvxformat='"lx"'
12952         else
12953                 if $test X"$ivsize" = X"$intsize"; then
12954                         ivdformat='"d"'
12955                         uvuformat='"u"'
12956                         uvoformat='"o"'
12957                         uvxformat='"x"'
12958                 else
12959                         : far out
12960                         if $test X"$ivsize" = X"$shortsize"; then
12961                                 ivdformat='"hd"'
12962                                 uvuformat='"hu"'
12963                                 uvoformat='"ho"'
12964                                 uvxformat='"hx"'
12965                         fi
12966                 fi
12967         fi
12968 fi
12969
12970 case "$ivdformat" in
12971 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
12972     exit 1
12973     ;;
12974 esac
12975
12976
12977 echo " "
12978 $echo "Checking the format string to be used for gids..." >&4
12979
12980 case "$gidsign" in
12981 -1)     if $test X"$gidsize" = X"$ivsize"; then
12982                 gidformat="$ivdformat"
12983         else
12984                 if $test X"$gidsize" = X"$longsize"; then
12985                         gidformat='"ld"'
12986                 else
12987                         if $test X"$gidsize" = X"$intsize"; then
12988                                 gidformat='"d"'
12989                         else
12990                                 if $test X"$gidsize" = X"$shortsize"; then
12991                                         gidformat='"hd"'
12992                                 fi
12993                         fi
12994                 fi
12995         fi
12996         ;;
12997 *)      if $test X"$gidsize" = X"$uvsize"; then
12998                 gidformat="$uvuformat"
12999         else
13000                 if $test X"$gidsize" = X"$longsize"; then
13001                         gidformat='"lu"'
13002                 else
13003                         if $test X"$gidsize" = X"$intsize"; then
13004                                 gidformat='"u"'
13005                         else
13006                                 if $test X"$gidsize" = X"$shortsize"; then
13007                                         gidformat='"hu"'
13008                                 fi
13009                         fi
13010                 fi
13011         fi
13012         ;;
13013 esac
13014
13015 : see if getgroups exists
13016 set getgroups d_getgrps
13017 eval $inlibc
13018
13019 : see if setgroups exists
13020 set setgroups d_setgrps
13021 eval $inlibc
13022
13023
13024 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13025 echo " "
13026 case "$d_getgrps$d_setgrps" in
13027 *define*)
13028         case "$groupstype" in
13029         '') dflt="$gidtype" ;;
13030         *)  dflt="$groupstype" ;;
13031         esac
13032         $cat <<EOM
13033 What type of pointer is the second argument to getgroups() and setgroups()?
13034 Usually this is the same as group ids, $gidtype, but not always.
13035
13036 EOM
13037         rp='What type pointer is the second argument to getgroups() and setgroups()?'
13038         . ./myread
13039         groupstype="$ans"
13040         ;;
13041 *)  groupstype="$gidtype";;
13042 esac
13043
13044 echo " "
13045 echo "Checking if your $make program sets \$(MAKE)..." >&4
13046 case "$make_set_make" in
13047 '')
13048         $sed 's/^X //' > testmake.mak << 'EOF'
13049 Xall:
13050 X       @echo 'maketemp="$(MAKE)"'
13051 EOF
13052         case "`$make -f testmake.mak 2>/dev/null`" in
13053         *maketemp=*) make_set_make='#' ;;
13054         *)      make_set_make="MAKE=$make" ;;
13055         esac
13056         $rm -f testmake.mak
13057         ;;
13058 esac
13059 case "$make_set_make" in
13060 '#') echo "Yup, it does.";;
13061 *) echo "Nope, it doesn't.";;
13062 esac
13063
13064 : see what type is used for mode_t
13065 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13066 set mode_t modetype int stdio.h sys/types.h
13067 eval $typedef_ask
13068
13069 : define a fucntion to check prototypes
13070 $cat > protochk <<EOSH
13071 $startsh
13072 cc="$cc"
13073 optimize="$optimize"
13074 ccflags="$ccflags"
13075 prototype="$prototype"
13076 define="$define"
13077 rm=$rm
13078 EOSH
13079
13080 $cat >> protochk <<'EOSH'
13081
13082 $rm -f try.c
13083 foo="$1"
13084 shift
13085 while test $# -ge 2; do
13086         case "$1" in
13087                 $define) echo "#include <$2>" >> try.c ;;
13088                 literal) echo "$2" >> try.c ;;
13089         esac
13090     shift 2
13091 done
13092 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13093 cat >> try.c <<'EOCP'
13094 #ifdef CAN_PROTOTYPE
13095 #define _(args) args
13096 #else
13097 #define _(args) ()
13098 #endif
13099 EOCP
13100 echo "$foo" >> try.c
13101 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13102 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13103 status=$?
13104 $rm -f try.[co]
13105 exit $status
13106 EOSH
13107 chmod +x protochk
13108 $eunicefix protochk
13109
13110 : see what type is used for size_t
13111 rp="What is the type used for the length parameter for string functions?"
13112 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13113 eval $typedef_ask
13114
13115 : check for type of arguments to gethostbyaddr. 
13116 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13117         case "$d_gethbyaddr" in
13118         $define)
13119                 $cat <<EOM
13120
13121 Checking to see what type of arguments are accepted by gethostbyaddr().
13122 EOM
13123                 hdrs="$define sys/types.h
13124                         $d_socket sys/socket.h 
13125                         $i_niin netinet/in.h 
13126                         $i_netdb netdb.h
13127                         $i_unistd unistd.h"
13128                 : The first arg can 'char *' or 'void *'
13129                 : The second arg is some of integral type
13130                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13131                         for yyy in size_t long int; do
13132                                 case "$netdb_host_type" in
13133                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13134                                         if ./protochk "$try" $hdrs; then
13135                                                 echo "Your system accepts $xxx for the first arg."
13136                                                 echo "...and $yyy for the second arg."
13137                                                 netdb_host_type="$xxx"
13138                                                 netdb_hlen_type="$yyy"
13139                                         fi
13140                                         ;;
13141                                 esac
13142                         done
13143                 done
13144                 : In case none of those worked, prompt the user.
13145                 case "$netdb_host_type" in
13146                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
13147                         dflt='char *'
13148                         . ./myread
13149                         netdb_host_type=$ans
13150                         rp='What is the type for the 2nd argument to gethostbyaddr?'
13151                         dflt="$sizetype"
13152                         . ./myread
13153                         netdb_hlen_type=$ans
13154                         ;;
13155                 esac
13156                 ;;
13157         *)      : no gethostbyaddr, so pick harmless defaults
13158                 netdb_host_type='char *'
13159                 netdb_hlen_type="$sizetype"
13160                 ;;
13161         esac
13162         # Remove the "const" if needed. -- but then we'll have a 
13163         # prototype clash!
13164         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13165 fi
13166
13167 : check for type of argument to gethostbyname. 
13168 if test "X$netdb_name_type" = X ; then
13169         case "$d_gethbyname" in
13170         $define)
13171                 $cat <<EOM
13172
13173 Checking to see what type of argument is accepted by gethostbyname().
13174 EOM
13175                 hdrs="$define sys/types.h
13176                         $d_socket sys/socket.h 
13177                         $i_niin netinet/in.h 
13178                         $i_netdb netdb.h
13179                         $i_unistd unistd.h"
13180                 for xxx in "const char *" "char *"; do
13181                         case "$netdb_name_type" in
13182                         '')     try="extern struct hostent *gethostbyname($xxx);"
13183                                 if ./protochk "$try" $hdrs; then
13184                                         echo "Your system accepts $xxx."
13185                                         netdb_name_type="$xxx"
13186                                 fi
13187                                 ;;
13188                         esac
13189                 done
13190                 : In case none of those worked, prompt the user.
13191                 case "$netdb_name_type" in
13192                 '')     rp='What is the type for the 1st argument to gethostbyname?'
13193                         dflt='char *'
13194                         . ./myread
13195                         netdb_name_type=$ans
13196                         ;;
13197                 esac
13198                 ;;
13199         *)      : no gethostbyname, so pick harmless default
13200                 netdb_name_type='char *'
13201                 ;;
13202         esac
13203 fi
13204
13205 : check for type of 1st argument to getnetbyaddr. 
13206 if test "X$netdb_net_type" = X ; then
13207         case "$d_getnbyaddr" in
13208         $define)
13209                 $cat <<EOM
13210
13211 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13212 EOM
13213                 hdrs="$define sys/types.h
13214                         $d_socket sys/socket.h 
13215                         $i_niin netinet/in.h 
13216                         $i_netdb netdb.h
13217                         $i_unistd unistd.h"
13218                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13219                         case "$netdb_net_type" in
13220                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
13221                                 if ./protochk "$try" $hdrs; then
13222                                         echo "Your system accepts $xxx."
13223                                         netdb_net_type="$xxx"
13224                                 fi
13225                                 ;;
13226                         esac
13227                 done
13228                 : In case none of those worked, prompt the user.
13229                 case "$netdb_net_type" in
13230                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
13231                         dflt='long'
13232                         . ./myread
13233                         netdb_net_type=$ans
13234                         ;;
13235                 esac
13236                 ;;
13237         *)      : no getnetbyaddr, so pick harmless default
13238                 netdb_net_type='long'
13239                 ;;
13240         esac
13241 fi
13242 : locate the preferred pager for this system
13243 case "$pager" in
13244 '')
13245         dflt=''
13246         case "$pg" in
13247         /*) dflt=$pg;;
13248         esac
13249         case "$more" in
13250         /*) dflt=$more;;
13251         esac
13252         case "$less" in
13253         /*) dflt=$less;;
13254         esac
13255         case "$dflt" in
13256         '') dflt=/usr/ucb/more;;
13257         esac
13258         ;;
13259 *) dflt="$pager";;
13260 esac
13261 echo " "
13262 fn=f/
13263 rp='What pager is used on your system?'
13264 . ./getfile
13265 pager="$ans"
13266
13267 : see what type pids are declared as in the kernel
13268 rp="What is the type of process ids on this system?"
13269 set pid_t pidtype int stdio.h sys/types.h
13270 eval $typedef_ask
13271
13272 : Find earliest binary compatible site_perl subdirectory perl can use.
13273 case "$bincompat5005" in
13274 "$define") xs_apiversion='5.005' ;;
13275 *) xs_apiversion=$version ;;   # The current site_perl version.
13276 esac
13277 : Find earliest pure perl site_perl subdirectory perl can use.
13278 : The versioned directories started at 5.005.
13279 pm_apiversion='5.005'
13280
13281 : check for length of pointer
13282 echo " "
13283 case "$ptrsize" in
13284 '')
13285         echo "Checking to see how big your pointers are..." >&4
13286         if test "$voidflags" -gt 7; then
13287                 echo '#define VOID_PTR char *' > try.c
13288         else
13289                 echo '#define VOID_PTR void *' > try.c
13290         fi
13291         $cat >>try.c <<'EOCP'
13292 #include <stdio.h>
13293 int main()
13294 {
13295     printf("%d\n", (int)sizeof(VOID_PTR));
13296     exit(0);
13297 }
13298 EOCP
13299         set try
13300         if eval $compile_ok; then
13301                 ptrsize=`./try`
13302                 echo "Your pointers are $ptrsize bytes long."
13303         else
13304                 dflt='4'
13305                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
13306                 rp="What is the size of a pointer (in bytes)?"
13307                 . ./myread
13308                 ptrsize="$ans"
13309         fi
13310         ;;
13311 esac
13312 $rm -f try.c try
13313
13314 : see if ar generates random libraries by itself
13315 echo " "
13316 echo "Checking how to generate random libraries on your machine..." >&4
13317 echo 'int bar1() { return bar2(); }' > bar1.c
13318 echo 'int bar2() { return 2; }' > bar2.c
13319 $cat > foo.c <<'EOP'
13320 int main() { printf("%d\n", bar1()); exit(0); }
13321 EOP
13322 $cc $ccflags -c bar1.c >/dev/null 2>&1
13323 $cc $ccflags -c bar2.c >/dev/null 2>&1
13324 $cc $ccflags -c foo.c >/dev/null 2>&1
13325 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13326 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13327         ./foobar >/dev/null 2>&1; then
13328         echo "$ar appears to generate random libraries itself."
13329         orderlib=false
13330         ranlib=":"
13331 elif $ar ts bar$_a >/dev/null 2>&1 &&
13332         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13333         ./foobar >/dev/null 2>&1; then
13334                 echo "a table of contents needs to be added with '$ar ts'."
13335                 orderlib=false
13336                 ranlib="$ar ts"
13337 else
13338         case "$ranlib" in
13339         :) ranlib='';;
13340         '')
13341                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13342                 $test -f $ranlib || ranlib=''
13343                 ;;
13344         esac
13345         if $test -n "$ranlib"; then
13346                 echo "your system has '$ranlib'; we'll use that."
13347                 orderlib=false
13348         else
13349                 echo "your system doesn't seem to support random libraries"
13350                 echo "so we'll use lorder and tsort to order the libraries."
13351                 orderlib=true
13352                 ranlib=":"
13353         fi
13354 fi
13355 $rm -f foo* bar* 
13356
13357 : check for type of arguments to select. 
13358 case "$selecttype" in
13359 '') case "$d_select" in
13360         $define)
13361                 echo " "
13362                 $cat <<EOM
13363 Checking to see what type of arguments are accepted by select().
13364 EOM
13365                 hdrs="$define sys/types.h
13366                         $i_systime sys/time.h 
13367                         $i_sysselct sys/select.h
13368                         $d_socket sys/socket.h"
13369                 : The first arg can be int, unsigned, or size_t
13370                 : The last arg may or may not be 'const'
13371                 val=''
13372                 : void pointer has been seen but using that
13373                 : breaks the selectminbits test
13374                 for xxx in 'fd_set *' 'int *'; do
13375                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13376                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
13377                                         case "$val" in
13378                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13379                                                 if ./protochk "$try" $hdrs; then
13380                                                         echo "Your system accepts $xxx."
13381                                                         val="$xxx"
13382                                                 fi
13383                                                 ;;
13384                                         esac
13385                                 done
13386                         done
13387                 done
13388                 case "$val" in
13389                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13390                         case "$d_fd_set" in
13391                                 $define) dflt="fd_set *" ;;
13392                                 *)              dflt="int *" ;;
13393                         esac
13394                         . ./myread
13395                         val=$ans
13396                         ;;
13397                 esac
13398                 selecttype="$val"
13399                 ;;
13400         *)      : no select, so pick a harmless default
13401                 selecttype='int *'
13402                 ;;
13403         esac
13404         ;;
13405 esac
13406
13407 : check for the select 'width'
13408 case "$selectminbits" in
13409 '') case "$d_select" in
13410         $define)
13411                 $cat <<EOM
13412
13413 Checking to see on how many bits at a time your select() operates...
13414 EOM
13415                 $cat >try.c <<EOCP
13416 #include <sys/types.h>
13417 #$i_time I_TIME
13418 #$i_systime I_SYS_TIME
13419 #$i_systimek I_SYS_TIME_KERNEL
13420 #ifdef I_TIME
13421 #   include <time.h>
13422 #endif
13423 #ifdef I_SYS_TIME
13424 #   ifdef I_SYS_TIME_KERNEL
13425 #       define KERNEL
13426 #   endif
13427 #   include <sys/time.h>
13428 #   ifdef I_SYS_TIME_KERNEL
13429 #       undef KERNEL
13430 #   endif
13431 #endif
13432 #$i_sysselct I_SYS_SELECT
13433 #ifdef I_SYS_SELECT
13434 #include <sys/select.h>
13435 #endif
13436 #$d_socket HAS_SOCKET
13437 #ifdef HAS_SOCKET
13438 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13439 #endif
13440 #include <stdio.h>
13441 $selecttype b;
13442 #define S sizeof(*(b))
13443 #define MINBITS 64
13444 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13445 #define NBITS  (NBYTES * 8)
13446 int main() {
13447     char s[NBYTES];
13448     struct timeval t;
13449     int i;
13450     FILE* fp;
13451     int fd;
13452
13453     fclose(stdin);
13454     fp = fopen("try.c", "r");
13455     if (fp == 0)
13456       exit(1);
13457     fd = fileno(fp);
13458     if (fd < 0)
13459       exit(2);
13460     b = ($selecttype)s;
13461     for (i = 0; i < NBITS; i++)
13462         FD_SET(i, b);
13463     t.tv_sec  = 0;
13464     t.tv_usec = 0;
13465     select(fd + 1, b, 0, 0, &t);
13466     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13467     printf("%d\n", i + 1);
13468     return 0;
13469 }
13470 EOCP
13471                 set try
13472                 if eval $compile_ok; then
13473                         selectminbits=`./try`
13474                         case "$selectminbits" in
13475                         '')     cat >&4 <<EOM
13476 Cannot figure out on how many bits at a time your select() operates.
13477 I'll play safe and guess it is 32 bits.
13478 EOM
13479                                 selectminbits=32
13480                                 bits="32 bits"
13481                                 ;;
13482                         1)      bits="1 bit" ;;
13483                         *)      bits="$selectminbits bits" ;;
13484                         esac
13485                         echo "Your select() operates on $bits at a time." >&4
13486                 else
13487                         rp='What is the minimum number of bits your select() operates on?'
13488                         case "$byteorder" in
13489                         1234|12345678)  dflt=32 ;;
13490                         *)              dflt=1  ;;
13491                         esac
13492                         . ./myread
13493                         val=$ans
13494                         selectminbits="$val"
13495                 fi
13496                 $rm -f try.* try
13497                 ;;
13498         *)      : no select, so pick a harmless default
13499                 selectminbits='32'
13500                 ;;
13501         esac
13502         ;;
13503 esac
13504
13505 : Trace out the files included by signal.h, then look for SIGxxx names.
13506 : Remove SIGARRAYSIZE used by HPUX.
13507 : Remove SIGSTKSIZE used by Linux.
13508 : Remove SIGSTKSZ used by Posix.
13509 : Remove SIGTYP void lines used by OS2.
13510 : Some cpps, like os390, dont give the file name anywhere
13511 if [ "X$fieldn" = X ]; then
13512         : Just make some guesses.  We check them later.
13513         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13514 else
13515         xxx=`echo '#include <signal.h>' |
13516         $cppstdin $cppminus $cppflags 2>/dev/null |
13517         $grep '^[       ]*#.*include' | 
13518         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13519 fi
13520 : Check this list of files to be sure we have parsed the cpp output ok.
13521 : This will also avoid potentially non-existent files, such 
13522 : as ../foo/bar.h
13523 xxxfiles=''
13524 for xx in $xxx /dev/null ; do
13525         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13526 done
13527 : If we have found no files, at least try signal.h
13528 case "$xxxfiles" in
13529 '')     xxxfiles=`./findhdr signal.h` ;;
13530 esac
13531 xxx=`awk '
13532 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13533         print substr($2, 4, 20)
13534 }
13535 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13536         print substr($3, 4, 20)
13537 }' $xxxfiles`
13538 : Append some common names just in case the awk scan failed.
13539 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13540 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13541 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13542 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13543 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13544
13545 : generate a few handy files for later
13546 $cat > signal.c <<'EOCP'
13547 #include <sys/types.h>
13548 #include <signal.h>
13549 #include <stdio.h>
13550 int main() {
13551
13552 /* Strange style to avoid deeply-nested #if/#else/#endif */
13553 #ifndef NSIG
13554 #  ifdef _NSIG
13555 #    define NSIG (_NSIG)
13556 #  endif
13557 #endif
13558
13559 #ifndef NSIG
13560 #  ifdef SIGMAX
13561 #    define NSIG (SIGMAX+1)
13562 #  endif
13563 #endif
13564
13565 #ifndef NSIG
13566 #  ifdef SIG_MAX
13567 #    define NSIG (SIG_MAX+1)
13568 #  endif
13569 #endif
13570
13571 #ifndef NSIG
13572 #  ifdef MAXSIG
13573 #    define NSIG (MAXSIG+1)
13574 #  endif
13575 #endif
13576
13577 #ifndef NSIG
13578 #  ifdef MAX_SIG
13579 #    define NSIG (MAX_SIG+1)
13580 #  endif
13581 #endif
13582
13583 #ifndef NSIG
13584 #  ifdef SIGARRAYSIZE
13585 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13586 #  endif
13587 #endif
13588
13589 #ifndef NSIG
13590 #  ifdef _sys_nsig
13591 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13592 #  endif
13593 #endif
13594
13595 /* Default to some arbitrary number that's big enough to get most
13596    of the common signals.
13597 */
13598 #ifndef NSIG
13599 #    define NSIG 50
13600 #endif
13601
13602 printf("NSIG %d\n", NSIG);
13603
13604 #ifndef JUST_NSIG
13605
13606 EOCP
13607
13608 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13609 {
13610         printf "#ifdef SIG"; printf $1; printf "\n"
13611         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13612         printf $1; printf ");\n"
13613         printf "#endif\n"
13614 }
13615 END {
13616         printf "#endif /* JUST_NSIG */\n";
13617         printf "exit(0);\n}\n";
13618 }
13619 ' >>signal.c
13620 $cat >signal.awk <<'EOP'
13621 BEGIN { ndups = 0 }
13622 $1 ~ /^NSIG$/ { nsig = $2 }
13623 ($1 !~ /^NSIG$/) && (NF == 2) {
13624     if ($2 > maxsig) { maxsig = $2 }
13625     if (sig_name[$2]) {
13626         dup_name[ndups] = $1
13627         dup_num[ndups] = $2
13628         ndups++ 
13629     }
13630     else {
13631         sig_name[$2] = $1
13632         sig_num[$2] = $2
13633     }
13634 }
13635 END { 
13636     if (nsig == 0) {
13637         nsig = maxsig + 1
13638     }
13639     printf("NSIG %d\n", nsig);
13640     for (n = 1; n < nsig; n++) {
13641         if (sig_name[n]) {
13642             printf("%s %d\n", sig_name[n], sig_num[n])
13643         }
13644         else {
13645             printf("NUM%d %d\n", n, n) 
13646         }
13647     }
13648     for (n = 0; n < ndups; n++) {
13649         printf("%s %d\n", dup_name[n], dup_num[n])
13650     }
13651 }
13652 EOP
13653 $cat >signal_cmd <<EOS
13654 $startsh
13655 if $test -s signal.lst; then
13656     echo "Using your existing signal.lst file"
13657         exit 0
13658 fi
13659 xxx="$xxx"
13660 EOS
13661 $cat >>signal_cmd <<'EOS'
13662
13663 set signal
13664 if eval $compile_ok; then
13665         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13666 else
13667         echo "(I can't seem be able to compile the whole test program)" >&4
13668         echo "(I'll try it in little pieces.)" >&4
13669         set signal -DJUST_NSIG
13670         if eval $compile_ok; then
13671                 ./signal$_exe > signal.nsg
13672                 $cat signal.nsg
13673         else
13674                 echo "I can't seem to figure out how many signals you have." >&4
13675                 echo "Guessing 50." >&4
13676                 echo 'NSIG 50' > signal.nsg
13677         fi
13678         : Now look at all the signal names, one at a time.
13679         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13680                 $cat > signal.c <<EOCP
13681 #include <sys/types.h>
13682 #include <signal.h>
13683 #include <stdio.h>
13684 int main() {
13685 printf("$xx %d\n", SIG${xx});
13686 return 0;
13687 }
13688 EOCP
13689                 set signal
13690                 if eval $compile; then
13691                         echo "SIG${xx} found."
13692                         ./signal$_exe  >> signal.ls1
13693                 else
13694                         echo "SIG${xx} NOT found."
13695                 fi
13696         done
13697         if $test -s signal.ls1; then
13698                 $cat signal.nsg signal.ls1 |
13699                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13700         fi
13701
13702 fi
13703 if $test -s signal.lst; then
13704         :
13705 else
13706         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13707         echo 'kill -l' >signal
13708         set X `csh -f <signal`
13709         $rm -f signal
13710         shift
13711         case $# in
13712         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13713         esac
13714         echo $@ | $tr ' ' $trnl | \
13715             $awk '{ printf "%s %d\n", $1, ++s; }
13716                   END { printf "NSIG %d\n", ++s }' >signal.lst
13717 fi
13718 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13719 EOS
13720 chmod a+x signal_cmd
13721 $eunicefix signal_cmd
13722
13723 : generate list of signal names
13724 echo " "
13725 case "$sig_name_init" in
13726 '') doinit=yes ;;
13727 *)  case "$sig_num_init" in
13728     ''|*,*) doinit=yes ;;
13729     esac ;;
13730 esac
13731 case "$doinit" in
13732 yes)
13733         echo "Generating a list of signal names and numbers..." >&4
13734         . ./signal_cmd
13735         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13736         sig_name=`$awk 'BEGIN { printf "ZERO " }
13737                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13738         sig_num=`$awk  'BEGIN { printf "0 " }
13739                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13740         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
13741                              !/^NSIG/   { printf "\"%s\", ", $1 }
13742                              END        { printf "0\n" }' signal.lst`
13743         sig_num_init=`$awk  'BEGIN      { printf "0, " }
13744                              !/^NSIG/   { printf "%d, ", $2}
13745                              END        { printf "0\n"}' signal.lst`
13746         ;;
13747 esac
13748 echo "The following $sig_count signals are available:"
13749 echo " "
13750 echo $sig_name | $awk \
13751 'BEGIN { linelen = 0 }
13752 {
13753         for (i = 1; i <= NF; i++) {
13754                 name = "SIG" $i " "
13755                 linelen = linelen + length(name)
13756                 if (linelen > 70) {
13757                         printf "\n"
13758                         linelen = length(name)
13759                 }
13760                 printf "%s", name
13761         }
13762         printf "\n"
13763 }'
13764 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
13765
13766 : check for socklen_t
13767 echo " "
13768 echo "Checking to see if you have socklen_t..." >&4
13769 $cat >try.c <<EOCP
13770 #include <sys/types.h>
13771 #$d_socket HAS_SOCKET
13772 #ifdef HAS_SOCKET
13773 #include <sys/socket.h>
13774 #endif
13775 int main() { socklen_t x = 16; }
13776 EOCP
13777 set try
13778 if eval $compile; then
13779         val="$define"
13780         echo "You have socklen_t."
13781 else
13782         val="$undef"
13783         echo "You do not have socklen_t."
13784         case "$sizetype" in
13785         size_t) echo "(You do have size_t, that might work.)" ;;
13786         esac
13787 fi
13788 $rm -f try try.*
13789 set d_socklen_t
13790 eval $setvar
13791
13792 : check for type of the size argument to socket calls
13793 case "$d_socket" in
13794 "$define")
13795         $cat <<EOM
13796
13797 Checking to see what type is the last argument of accept().
13798 EOM
13799         hdrs="$define sys/types.h $d_socket sys/socket.h" 
13800         yyy=''
13801         case "$d_socklen_t" in
13802         "$define") yyy="$yyy socklen_t"
13803         esac
13804         yyy="$yyy $sizetype int long"
13805         for xxx in $yyy; do
13806                 case "$socksizetype" in
13807                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
13808                         if ./protochk "$try" $hdrs; then
13809                                 echo "Your system accepts '$xxx *' for the last argument of accept()."
13810                                 socksizetype="$xxx"
13811                         fi
13812                         ;;
13813                 esac
13814         done
13815 : In case none of those worked, prompt the user.
13816         case "$socksizetype" in
13817         '')     rp='What is the type for socket address structure sizes?'
13818                 dflt='int'
13819                 . ./myread
13820                 socksizetype=$ans
13821                 ;;
13822         esac
13823         ;;
13824 *)      : no sockets, so pick relatively harmless defaults
13825         socksizetype='char *'
13826         ;;
13827 esac
13828
13829 : see what type is used for signed size_t
13830 set ssize_t ssizetype int stdio.h sys/types.h
13831 eval $typedef
13832 dflt="$ssizetype"
13833 $cat > ssize.c <<EOM
13834 #include <stdio.h>
13835 #include <sys/types.h>
13836 #define Size_t $sizetype
13837 #define SSize_t $dflt
13838 int main()
13839 {
13840         if (sizeof(Size_t) == sizeof(SSize_t))
13841                 printf("$dflt\n");
13842         else if (sizeof(Size_t) == sizeof(int))
13843                 printf("int\n");
13844         else 
13845                 printf("long\n");
13846         exit(0);
13847 }
13848 EOM
13849 echo " "
13850 set ssize
13851 if eval $compile_ok && ./ssize > /dev/null; then
13852         ssizetype=`./ssize`
13853         echo "I'll be using $ssizetype for functions returning a byte count." >&4
13854 else
13855         $cat >&4 <<EOM
13856 Help! I can't compile and run the ssize_t test program: please enlighten me!
13857 (This is probably a misconfiguration in your system or libraries, and
13858 you really ought to fix it.  Still, I'll try anyway.)
13859
13860 I need a type that is the same size as $sizetype, but is guaranteed to
13861 be signed.  Common values are ssize_t, int and long.
13862
13863 EOM
13864         rp="What signed type is the same size as $sizetype?"
13865         . ./myread
13866         ssizetype="$ans"
13867 fi
13868 $rm -f ssize ssize.*
13869
13870 : see what type of char stdio uses.
13871 echo " "
13872 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13873         echo "Your stdio uses unsigned chars." >&4
13874         stdchar="unsigned char"
13875 else
13876         echo "Your stdio uses signed chars." >&4
13877         stdchar="char"
13878 fi
13879
13880 : see if time exists
13881 echo " "
13882 if test "X$d_time" = X -o X"$timetype" = X; then
13883     if set time val -f d_time; eval $csym; $val; then
13884                 echo 'time() found.' >&4
13885                 val="$define"
13886                 rp="What is the type returned by time() on this system?"
13887                 set time_t timetype long stdio.h sys/types.h
13888                 eval $typedef_ask
13889     else
13890                 echo 'time() not found, hope that will do.' >&4
13891                 val="$undef"
13892                 timetype='int';
13893     fi
13894     set d_time
13895     eval $setvar
13896 fi
13897
13898 : see what type uids are declared as in the kernel
13899 echo " "
13900 echo "Looking for the type for user ids returned by getuid()."
13901 set uid_t uidtype xxx stdio.h sys/types.h
13902 eval $typedef
13903 case "$uidtype" in
13904 xxx)
13905         xxx=`./findhdr sys/user.h`
13906         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13907         case $1 in
13908         unsigned) dflt="$1 $2" ;;
13909         *) dflt="$1" ;;
13910         esac
13911         ;;
13912 *) dflt="$uidtype";;
13913 esac
13914 case "$uidtype" in
13915 uid_t)  echo "uid_t found." ;;
13916 *)      rp="What is the type for user ids returned by getuid()?"
13917         . ./myread
13918         uidtype="$ans"
13919         ;;
13920 esac
13921
13922 echo " "
13923 case "$uidtype" in
13924 *_t) zzz="$uidtype"     ;;
13925 *)   zzz="uid"          ;;
13926 esac
13927 echo "Checking the size of $zzz..." >&4 
13928 cat > try.c <<EOCP
13929 #include <sys/types.h>
13930 #include <stdio.h>
13931 int main() {
13932     printf("%d\n", (int)sizeof($uidtype));
13933     exit(0);
13934 }
13935 EOCP
13936 set try
13937 if eval $compile_ok; then
13938         yyy=`./try`
13939         case "$yyy" in
13940         '')     uidsize=4
13941                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
13942                 ;;
13943         *)      uidsize=$yyy
13944                 echo "Your $zzz is $uidsize bytes long."
13945                 ;;
13946         esac
13947 else
13948         uidsize=4
13949         echo "(I can't compile the test program--guessing $uidsize.)" >&4
13950 fi
13951
13952 echo " "
13953 case "$uidtype" in
13954 *_t) zzz="$uidtype"     ;;
13955 *)   zzz="uid"          ;;
13956 esac
13957 echo "Checking the sign of $zzz..." >&4
13958 cat > try.c <<EOCP
13959 #include <sys/types.h>
13960 #include <stdio.h>
13961 int main() {
13962         $uidtype foo = -1;
13963         if (foo < 0)
13964                 printf("-1\n");
13965         else
13966                 printf("1\n");
13967 }
13968 EOCP
13969 set try
13970 if eval $compile; then
13971         yyy=`./try`
13972         case "$yyy" in
13973         '')     uidsign=1
13974                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13975                 ;;
13976         *)      uidsign=$yyy
13977                 case "$uidsign" in
13978                  1) echo "Your $zzz is unsigned." ;;
13979                 -1) echo "Your $zzz is signed."   ;;
13980                 esac
13981                 ;;
13982         esac
13983 else
13984         uidsign=1
13985         echo "(I can't compile the test program--guessing unsigned.)" >&4
13986 fi
13987
13988
13989
13990 echo " "
13991 $echo "Checking the format string to be used for uids..." >&4
13992
13993 case "$uidsign" in
13994 -1)     if $test X"$uidsize" = X"$ivsize"; then
13995                 uidformat="$ivdformat"
13996         else
13997                 if $test X"$uidsize" = X"$longsize"; then
13998                         uidformat='"ld"'
13999                 else
14000                         if $test X"$uidsize" = X"$intsize"; then
14001                                 uidformat='"d"'
14002                         else
14003                                 if $test X"$uidsize" = X"$shortsize"; then
14004                                         uidformat='"hd"'
14005                                 fi
14006                         fi
14007                 fi
14008         fi
14009         ;;
14010 *)      if $test X"$uidsize" = X"$uvsize"; then
14011                 uidformat="$uvuformat"
14012         else
14013                 if $test X"$uidsize" = X"$longsize"; then
14014                         uidformat='"lu"'
14015                 else
14016                         if $test X"$uidsize" = X"$intsize"; then
14017                                 uidformat='"u"'
14018                         else
14019                                 if $test X"$uidsize" = X"$shortsize"; then
14020                                         uidformat='"hu"'
14021                                 fi
14022                         fi
14023                 fi
14024         fi
14025         ;;
14026 esac
14027
14028 : see if dbm.h is available
14029 : see if dbmclose exists
14030 set dbmclose d_dbmclose
14031 eval $inlibc
14032
14033 case "$d_dbmclose" in
14034 $define)
14035         set dbm.h i_dbm
14036         eval $inhdr
14037         case "$i_dbm" in
14038         $define)
14039                 val="$undef"
14040                 set i_rpcsvcdbm
14041                 eval $setvar
14042                 ;;
14043         *)      set rpcsvc/dbm.h i_rpcsvcdbm
14044                 eval $inhdr
14045                 ;;
14046         esac
14047         ;;
14048 *)      echo "We won't be including <dbm.h>"
14049         val="$undef"
14050         set i_dbm
14051         eval $setvar
14052         val="$undef"
14053         set i_rpcsvcdbm
14054         eval $setvar
14055         ;;
14056 esac
14057
14058 : see if this is a sys/file.h system
14059 val=''
14060 set sys/file.h val
14061 eval $inhdr
14062
14063 : do we need to include sys/file.h ?
14064 case "$val" in
14065 "$define")
14066         echo " "
14067         if $h_sysfile; then
14068                 val="$define"
14069                 echo "We'll be including <sys/file.h>." >&4
14070         else
14071                 val="$undef"
14072                 echo "We won't be including <sys/file.h>." >&4
14073         fi
14074         ;;
14075 *)
14076         h_sysfile=false
14077         ;;
14078 esac
14079 set i_sysfile
14080 eval $setvar
14081
14082 : see if fcntl.h is there
14083 val=''
14084 set fcntl.h val
14085 eval $inhdr
14086
14087 : see if we can include fcntl.h
14088 case "$val" in
14089 "$define")
14090         echo " "
14091         if $h_fcntl; then
14092                 val="$define"
14093                 echo "We'll be including <fcntl.h>." >&4
14094         else
14095                 val="$undef"
14096                 if $h_sysfile; then
14097         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14098                 else
14099                         echo "We won't be including <fcntl.h>." >&4
14100                 fi
14101         fi
14102         ;;
14103 *)
14104         h_fcntl=false
14105         val="$undef"
14106         ;;
14107 esac
14108 set i_fcntl
14109 eval $setvar
14110
14111 : see if this is a iconv.h system
14112 set iconv.h i_iconv
14113 eval $inhdr
14114
14115 : see if this is a ieeefp.h system
14116 set ieeefp.h i_ieeefp
14117 eval $inhdr
14118
14119 : see if locale.h is available
14120 set locale.h i_locale
14121 eval $inhdr
14122
14123 : see if mach cthreads are available
14124 if test "X$usethreads" = "X$define"; then
14125         set mach/cthreads.h i_machcthr
14126         eval $inhdr
14127 else
14128         i_machcthr="$undef"
14129 fi
14130
14131
14132
14133 : see if this is a math.h system
14134 set math.h i_math
14135 eval $inhdr
14136
14137 : see if this is a mntent.h system
14138 set mntent.h i_mntent
14139 eval $inhdr
14140
14141 : see if ndbm.h is available
14142 set ndbm.h t_ndbm
14143 eval $inhdr
14144 case "$t_ndbm" in
14145 $define)
14146         : see if dbm_open exists
14147         set dbm_open d_dbm_open
14148         eval $inlibc
14149         case "$d_dbm_open" in
14150         $undef)
14151                 t_ndbm="$undef"
14152                 echo "We won't be including <ndbm.h>"
14153                 ;;
14154         esac
14155         ;;
14156 esac
14157 val="$t_ndbm"
14158 set i_ndbm
14159 eval $setvar
14160
14161 : see if net/errno.h is available
14162 val=''
14163 set net/errno.h val
14164 eval $inhdr
14165
14166 : Unfortunately, it causes problems on some systems.  Arrgh.
14167 case "$val" in
14168 $define)
14169         cat > try.c <<'EOM'
14170 #include <stdio.h>
14171 #include <errno.h>
14172 #include <net/errno.h>
14173 int func()
14174 {
14175         return ENOTSOCK;
14176 }
14177 EOM
14178         if $cc $ccflags -c try.c >/dev/null 2>&1; then
14179                 echo "We'll be including <net/errno.h>." >&4
14180         else
14181                 echo "We won't be including <net/errno.h>." >&4
14182                 val="$undef"
14183         fi
14184         $rm -f try.* try
14185         ;;
14186 esac
14187 set i_neterrno
14188 eval $setvar
14189
14190 : see if netinet/tcp.h is available
14191 set netinet/tcp.h i_netinettcp
14192 eval $inhdr
14193
14194 : see if this is a poll.h system
14195 set poll.h i_poll
14196 eval $inhdr
14197
14198 echo " "
14199 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
14200 $cat <<'EOSH' > Cppsym.know
14201 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14202 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14203 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14204 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14205 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14206 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14207 bull c cadmus clipper CMU COFF COMPILER_VERSION
14208 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14209 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14210 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14211 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14212 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14213 H3050R H3050RX hbullx20 hcx host_mips
14214 hp200 hp300 hp700 HP700 hp800 hp9000
14215 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14216 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14217 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14218 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14219 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14220 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14221 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14222 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14223 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14224 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14225 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14226 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14227 MATH_HAS_NO_SIDE_EFFECTS
14228 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14229 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14230 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14231 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14232 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14233 NetBSD news1500 news1700 news1800 news1900 news3700
14234 news700 news800 news900 NeXT NLS ns16000 ns32000
14235 ns32016 ns32332 ns32k nsc32000
14236 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14237 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14238 pc532 pdp11 PGC PIC plexus PORTAR posix
14239 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14240 POSIX_C_SOURCE POSIX_SOURCE POWER
14241 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14242 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14243 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14244 sony sony_news sonyrisc sparc sparclite spectrum
14245 stardent stdc STDC_EXT stratos sun sun3 sun386
14246 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14247 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14248 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14249 sysV68 sysV88 Tek4132 Tek4300 titan
14250 tower tower32 tower32_200 tower32_600 tower32_700
14251 tower32_800 tower32_850 tss
14252 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14253 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14254 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14255 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14256 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14257 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14258 z8000
14259 EOSH
14260 # Maybe put other stuff here too.
14261 cat <<EOSH >>Cppsym.know
14262 $osname
14263 EOSH
14264 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14265 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14266 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
14267 $rm -f Cppsym.a Cppsym.b
14268 cat <<EOSH > Cppsym
14269 $startsh
14270 if $test \$# -gt 0; then
14271     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14272     if $test -s Cppsym.got; then
14273         $rm -f Cppsym.got
14274         exit 0
14275     fi
14276     $rm -f Cppsym.got
14277     exit 1
14278 else
14279     $tr " " "$trnl" | ./Cppsym.try
14280     exit 0
14281 fi
14282 EOSH
14283 chmod +x Cppsym
14284 $eunicefix Cppsym
14285 cat <<EOSH > Cppsym.try
14286 $startsh
14287 cat <<'EOCP' > try.c
14288 #include <stdio.h>
14289 int main() {
14290 EOCP
14291 $awk \\
14292 EOSH
14293 cat <<'EOSH' >> Cppsym.try
14294 'length($1) > 0 {
14295     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
14296     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
14297     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
14298     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
14299 }'       >> try.c
14300 echo '}' >> try.c
14301 EOSH
14302 cat <<EOSH >> Cppsym.try
14303 ccflags="$ccflags"
14304 case "$osname-$gccversion" in
14305 irix-) ccflags="\$ccflags -woff 1178" ;;
14306 esac
14307 $cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14308 EOSH
14309 chmod +x Cppsym.try
14310 $eunicefix Cppsym.try
14311 ./Cppsym < Cppsym.know > Cppsym.true
14312 : now check the C compiler for additional symbols
14313 postprocess_cc_v=''
14314 case "$osname" in
14315 aix) postprocess_cc_v="|$tr , ' '" ;;
14316 esac
14317 $cat >ccsym <<EOS
14318 $startsh
14319 $cat >tmp.c <<EOF
14320 extern int foo;
14321 EOF
14322 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14323 do
14324         case "\$i" in
14325         -D*) echo "\$i" | $sed 's/^-D//';;
14326         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14327         esac
14328 done
14329 $rm -f try.c
14330 EOS
14331 postprocess_cc_v=''
14332 chmod +x ccsym
14333 $eunicefix ccsym
14334 ./ccsym > ccsym1.raw
14335 if $test -s ccsym1.raw; then
14336        $sort ccsym1.raw | $uniq >ccsym.raw
14337 else
14338        mv ccsym1.raw ccsym.raw
14339 fi
14340
14341 $awk '/\=/ { print $0; next }
14342         { print $0"=1" }' ccsym.raw >ccsym.list
14343 $awk '/\=/ { print $0; next }
14344         { print $0"=1" }' Cppsym.true >ccsym.true
14345 $comm -13 ccsym.true ccsym.list >ccsym.own
14346 $comm -12 ccsym.true ccsym.list >ccsym.com
14347 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14348 also=''
14349 if $test -z ccsym.raw; then
14350         echo "Your C compiler doesn't seem to define any symbols!" >&4
14351         echo " "
14352         echo "However, your C preprocessor defines the following symbols:"
14353         $cat Cppsym.true
14354         ccsymbols=''
14355         cppsymbols=`$cat Cppsym.true`
14356         cppsymbols=`echo $cppsymbols`
14357         cppccsymbols="$cppsymbols"
14358 else
14359         if $test -s ccsym.com; then
14360                 echo "Your C compiler and pre-processor define these symbols:"
14361                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
14362                 also='also '
14363                 symbols='ones'
14364                 cppccsymbols=`$cat ccsym.com`
14365                 cppccsymbols=`echo $cppccsymbols`
14366                 $test "$silent" || sleep 1
14367         fi
14368         if $test -s ccsym.cpp; then
14369                 $test "$also" && echo " "
14370                 echo "Your C pre-processor ${also}defines the following symbols:"
14371                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
14372                 also='further '
14373                 cppsymbols=`$cat ccsym.cpp`
14374                 cppsymbols=`echo $cppsymbols`
14375                 $test "$silent" || sleep 1
14376         fi
14377         if $test -s ccsym.own; then
14378                 $test "$also" && echo " "
14379                 echo "Your C compiler ${also}defines the following cpp symbols:"
14380                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
14381                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14382                 ccsymbols=`$cat ccsym.own`
14383                 ccsymbols=`echo $ccsymbols`
14384                 $test "$silent" || sleep 1
14385         fi
14386 fi
14387 $rm -f ccsym*
14388
14389 : see if this is a termio system
14390 val="$undef"
14391 val2="$undef"
14392 val3="$undef"
14393 if $test `./findhdr termios.h`; then
14394         set tcsetattr i_termios
14395         eval $inlibc
14396         val3="$i_termios"
14397 fi
14398 echo " "
14399 case "$val3" in
14400 "$define") echo "You have POSIX termios.h... good!" >&4;;
14401 *) if ./Cppsym pyr; then
14402                 case "`/bin/universe`" in
14403                 ucb) if $test `./findhdr sgtty.h`; then
14404                                 val2="$define"
14405                                 echo "<sgtty.h> found." >&4
14406                         else
14407                                 echo "System is pyramid with BSD universe."
14408                                 echo "<sgtty.h> not found--you could have problems." >&4
14409                         fi;;
14410                 *) if $test `./findhdr termio.h`; then
14411                                 val="$define"
14412                                 echo "<termio.h> found." >&4
14413                         else
14414                                 echo "System is pyramid with USG universe."
14415                                 echo "<termio.h> not found--you could have problems." >&4
14416                         fi;;
14417                 esac
14418         elif ./usg; then
14419                 if $test `./findhdr termio.h`; then
14420                         echo "<termio.h> found." >&4
14421                         val="$define"
14422                 elif $test `./findhdr sgtty.h`; then
14423                         echo "<sgtty.h> found." >&4
14424                         val2="$define"
14425                 else
14426 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14427                 fi
14428         else
14429                 if $test `./findhdr sgtty.h`; then
14430                         echo "<sgtty.h> found." >&4
14431                         val2="$define"
14432                 elif $test `./findhdr termio.h`; then
14433                         echo "<termio.h> found." >&4
14434                         val="$define"
14435                 else
14436 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14437                 fi
14438         fi;;
14439 esac
14440 set i_termio; eval $setvar
14441 val=$val2; set i_sgtty; eval $setvar
14442 val=$val3; set i_termios; eval $setvar
14443
14444 : see if this is a shadow.h system
14445 set shadow.h i_shadow
14446 eval $inhdr
14447
14448 : see if this is a socks.h system
14449 set socks.h i_socks
14450 eval $inhdr
14451
14452 : see if stdarg is available
14453 echo " "
14454 if $test `./findhdr stdarg.h`; then
14455         echo "<stdarg.h> found." >&4
14456         valstd="$define"
14457 else
14458         echo "<stdarg.h> NOT found." >&4
14459         valstd="$undef"
14460 fi
14461
14462 : see if varags is available
14463 echo " "
14464 if $test `./findhdr varargs.h`; then
14465         echo "<varargs.h> found." >&4
14466 else
14467         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14468 fi
14469
14470 : set up the varargs testing programs
14471 $cat > varargs.c <<EOP
14472 #ifdef I_STDARG
14473 #include <stdarg.h>
14474 #endif
14475 #ifdef I_VARARGS
14476 #include <varargs.h>
14477 #endif
14478
14479 #ifdef I_STDARG
14480 int f(char *p, ...)
14481 #else
14482 int f(va_alist)
14483 va_dcl
14484 #endif
14485 {
14486         va_list ap;
14487 #ifndef I_STDARG
14488         char *p;
14489 #endif
14490 #ifdef I_STDARG
14491         va_start(ap,p);
14492 #else
14493         va_start(ap);
14494         p = va_arg(ap, char *);
14495 #endif
14496         va_end(ap);
14497 }
14498 EOP
14499 $cat > varargs <<EOP
14500 $startsh
14501 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14502         echo "true"
14503 else
14504         echo "false"
14505 fi
14506 $rm -f varargs$_o
14507 EOP
14508 chmod +x varargs
14509
14510 : now check which varargs header should be included
14511 echo " "
14512 i_varhdr=''
14513 case "$valstd" in
14514 "$define")
14515         if `./varargs I_STDARG`; then
14516                 val='stdarg.h'
14517         elif `./varargs I_VARARGS`; then
14518                 val='varargs.h'
14519         fi
14520         ;;
14521 *)
14522         if `./varargs I_VARARGS`; then
14523                 val='varargs.h'
14524         fi
14525         ;;
14526 esac
14527 case "$val" in
14528 '')
14529 echo "I could not find the definition for va_dcl... You have problems..." >&4
14530         val="$undef"; set i_stdarg; eval $setvar
14531         val="$undef"; set i_varargs; eval $setvar
14532         ;;
14533 *) 
14534         set i_varhdr
14535         eval $setvar
14536         case "$i_varhdr" in
14537         stdarg.h)
14538                 val="$define"; set i_stdarg; eval $setvar
14539                 val="$undef"; set i_varargs; eval $setvar
14540                 ;;
14541         varargs.h)
14542                 val="$undef"; set i_stdarg; eval $setvar
14543                 val="$define"; set i_varargs; eval $setvar
14544                 ;;
14545         esac
14546         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14547 esac
14548 $rm -f varargs*
14549
14550 : see if stddef is available
14551 set stddef.h i_stddef
14552 eval $inhdr
14553
14554 : see if this is a sunmath.h system
14555 set sunmath.h i_sunmath
14556 eval $inhdr
14557
14558 : see if sys/access.h is available
14559 set sys/access.h i_sysaccess
14560 eval $inhdr
14561
14562 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14563 set sys/filio.h i_sysfilio
14564 eval $inhdr
14565 echo " "
14566 if $test `./findhdr sys/ioctl.h`; then
14567         val="$define"
14568         echo '<sys/ioctl.h> found.' >&4
14569 else
14570         val="$undef"
14571         if $test $i_sysfilio = "$define"; then
14572             echo '<sys/ioctl.h> NOT found.' >&4
14573         else
14574                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14575                 $test $i_termio = "$define" && xxx="termio.h"
14576                 $test $i_termios = "$define" && xxx="termios.h"
14577 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14578         fi
14579 fi
14580 set i_sysioctl
14581 eval $setvar
14582
14583
14584 : see if this is a syslog.h system
14585 set syslog.h i_syslog
14586 eval $inhdr
14587
14588
14589 : see if this is a sys/mode.h system
14590 set sys/mode.h i_sysmode
14591 eval $inhdr
14592
14593 : see if sys/resource.h has to be included
14594 set sys/resource.h i_sysresrc
14595 eval $inhdr
14596
14597 : see if sys/security.h is available
14598 set sys/security.h i_syssecrt
14599 eval $inhdr
14600
14601 : see if this is a sys/statvfs.h system
14602 set sys/statvfs.h i_sysstatvfs
14603 eval $inhdr
14604
14605 : see if this is a sys/uio.h system
14606 set sys/uio.h i_sysuio
14607 eval $inhdr
14608
14609 : see if this is a sys/un.h system
14610 set sys/un.h i_sysun
14611 eval $inhdr
14612
14613
14614 : see if this is a sys/utsname.h system
14615 set sys/utsname.h i_sysutsname
14616 eval $inhdr
14617
14618 : see if this is a syswait system
14619 set sys/wait.h i_syswait
14620 eval $inhdr
14621
14622 : see if this is a ustat.h system
14623 set ustat.h i_ustat
14624 eval $inhdr
14625
14626 : see if this is an utime system
14627 set utime.h i_utime
14628 eval $inhdr
14629
14630 : see if this is a values.h system
14631 set values.h i_values
14632 eval $inhdr
14633
14634 : see if this is a vfork system
14635 case "$d_vfork" in
14636 "$define")
14637         set vfork.h i_vfork
14638         eval $inhdr
14639         ;;
14640 *)
14641         i_vfork="$undef"
14642         ;;
14643 esac
14644
14645 : see if gdbm.h is available
14646 set gdbm.h t_gdbm
14647 eval $inhdr
14648 case "$t_gdbm" in
14649 $define)
14650         : see if gdbm_open exists
14651         set gdbm_open d_gdbm_open
14652         eval $inlibc
14653         case "$d_gdbm_open" in
14654         $undef)
14655                 t_gdbm="$undef"
14656                 echo "We won't be including <gdbm.h>"
14657                 ;;
14658         esac
14659         ;;
14660 esac
14661 val="$t_gdbm"
14662 set i_gdbm
14663 eval $setvar
14664
14665 echo " "
14666 echo "Looking for extensions..." >&4
14667 : If we are using the old config.sh, known_extensions may contain
14668 : old or inaccurate or duplicate values.
14669 known_extensions=''
14670 nonxs_extensions=''
14671 : We do not use find because it might not be available.
14672 : We do not just use MANIFEST because the user may have dropped
14673 : some additional extensions into the source tree and expect them
14674 : to be built.
14675
14676 : Function to recursively find available extensions, ignoring DynaLoader
14677 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14678 find_extensions='
14679     for xxx in *; do
14680        case "$xxx" in
14681            DynaLoader|dynaload) ;;
14682            *)
14683            if $test -f $xxx/$xxx.xs; then
14684                known_extensions="$known_extensions $1$xxx";
14685            elif $test -f $xxx/Makefile.PL; then
14686                nonxs_extensions="$nonxs_extensions $1$xxx";
14687            else
14688                if $test -d $xxx -a $# -lt 10; then
14689                    set $1$xxx/ $*;
14690                    cd $xxx;
14691                    eval $find_extensions;
14692                    cd ..;
14693                    shift;
14694                fi;
14695            fi
14696            ;;
14697        esac;
14698     done'
14699 tdir=`pwd`
14700 cd $rsrc/ext
14701 set X
14702 shift
14703 eval $find_extensions
14704 set X $nonxs_extensions
14705 shift
14706 nonxs_extensions="$*"
14707 set X $known_extensions
14708 shift
14709 known_extensions="$*"
14710 cd $tdir
14711
14712 : Now see which are supported on this system.
14713 avail_ext=''
14714 for xxx in $known_extensions ; do
14715         case "$xxx" in
14716         DB_File|db_file)
14717                 case "$i_db" in
14718                 $define) avail_ext="$avail_ext $xxx" ;;
14719                 esac
14720                 ;;
14721         GDBM_File|gdbm_fil)
14722                 case "$i_gdbm" in 
14723                 $define) avail_ext="$avail_ext $xxx" ;;
14724                 esac
14725                 ;;
14726         NDBM_File|ndbm_fil)
14727                 case "$i_ndbm" in
14728                 $define)
14729                     case "$osname-$use64bitint" in
14730                     hpux-define)
14731                         case "$libs" in
14732                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14733                         esac
14734                         ;;
14735                     *) avail_ext="$avail_ext $xxx" ;;
14736                     esac
14737                     ;;
14738                 esac
14739                 ;;
14740         ODBM_File|odbm_fil) 
14741                 case "${i_dbm}${i_rpcsvcdbm}" in
14742                 *"${define}"*)
14743                     case "$osname-$use64bitint" in
14744                     hpux-define)
14745                         case "$libs" in
14746                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14747                         esac
14748                         ;;
14749                     *) avail_ext="$avail_ext $xxx" ;;
14750                     esac
14751                     ;;
14752                 esac
14753                 ;;
14754         POSIX|posix)
14755                 case "$useposix" in
14756                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14757                 esac
14758                 ;;
14759         Opcode|opcode)
14760                 case "$useopcode" in
14761                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14762                 esac
14763                 ;;
14764         Socket|socket)
14765                 case "$d_socket" in 
14766                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14767                 esac
14768                 ;;
14769         Thread|thread)
14770                 case "$usethreads" in 
14771                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14772                 esac
14773                 ;;
14774         IPC/SysV|ipc/sysv)
14775                 : XXX Do we need a useipcsysv variable here
14776                 case "${d_msg}${d_sem}${d_shm}" in 
14777                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14778                 esac
14779                 ;;
14780         *)      avail_ext="$avail_ext $xxx"
14781                 ;;
14782         esac
14783 done
14784
14785 set X $avail_ext
14786 shift
14787 avail_ext="$*"
14788
14789 : Now see which nonxs extensions are supported on this system.
14790 : For now assume all are.
14791 nonxs_ext=''
14792 for xxx in $nonxs_extensions ; do
14793         case "$xxx" in
14794         *)      nonxs_ext="$nonxs_ext $xxx"
14795                 ;;
14796         esac
14797 done
14798
14799 set X $nonxs_ext
14800 shift
14801 nonxs_ext="$*"
14802
14803 case $usedl in
14804 $define)
14805         $cat <<EOM
14806 A number of extensions are supplied with $package.  You may choose to
14807 compile these extensions for dynamic loading (the default), compile
14808 them into the $package executable (static loading), or not include
14809 them at all.  Answer "none" to include no extensions.
14810 Note that DynaLoader is always built and need not be mentioned here.
14811
14812 EOM
14813         case "$dynamic_ext" in
14814         '') dflt="$avail_ext" ;;
14815         *)      dflt="$dynamic_ext"
14816                 # Perhaps we are reusing an old out-of-date config.sh.
14817                 case "$hint" in
14818                 previous)
14819                         if test X"$dynamic_ext" != X"$avail_ext"; then
14820                                 $cat <<EOM
14821 NOTICE:  Your previous config.sh list may be incorrect. 
14822 The extensions now available to you are 
14823         ${avail_ext}
14824 but the default list from your previous config.sh is
14825         ${dynamic_ext} 
14826
14827 EOM
14828                         fi
14829                         ;;
14830                 esac
14831                 ;;
14832         esac
14833         case "$dflt" in
14834         '')     dflt=none;;
14835         esac
14836         rp="What extensions do you wish to load dynamically?"
14837         . ./myread
14838         case "$ans" in
14839         none) dynamic_ext=' ' ;;
14840         *) dynamic_ext="$ans" ;;
14841         esac
14842
14843         case "$static_ext" in
14844         '')
14845                 : Exclude those already listed in dynamic linking
14846                 dflt=''
14847                 for xxx in $avail_ext; do
14848                         case " $dynamic_ext " in
14849                         *" $xxx "*) ;;
14850                         *) dflt="$dflt $xxx" ;;
14851                         esac
14852                 done
14853                 set X $dflt
14854                 shift
14855                 dflt="$*"
14856                 ;;
14857         *)  dflt="$static_ext" 
14858                 ;;
14859         esac
14860
14861         case "$dflt" in
14862         '')     dflt=none;;
14863         esac
14864         rp="What extensions do you wish to load statically?"
14865         . ./myread
14866         case "$ans" in
14867         none) static_ext=' ' ;;
14868         *) static_ext="$ans" ;;
14869         esac
14870         ;;
14871 *)
14872         $cat <<EOM
14873 A number of extensions are supplied with $package.  Answer "none" 
14874 to include no extensions. 
14875 Note that DynaLoader is always built and need not be mentioned here.
14876
14877 EOM
14878         case "$static_ext" in
14879         '') dflt="$avail_ext" ;;
14880         *)      dflt="$static_ext"
14881                 # Perhaps we are reusing an old out-of-date config.sh.
14882                 case "$hint" in
14883                 previous)
14884                         if test X"$static_ext" != X"$avail_ext"; then
14885                                 $cat <<EOM
14886 NOTICE:  Your previous config.sh list may be incorrect. 
14887 The extensions now available to you are 
14888         ${avail_ext}
14889 but the default list from your previous config.sh is
14890         ${static_ext} 
14891
14892 EOM
14893                         fi
14894                         ;;
14895                 esac
14896                 ;;
14897         esac
14898         : Exclude those that are not xs extensions
14899         case "$dflt" in
14900         '')     dflt=none;;
14901         esac
14902         rp="What extensions do you wish to include?"
14903         . ./myread
14904         case "$ans" in
14905         none) static_ext=' ' ;;
14906         *) static_ext="$ans" ;;
14907         esac
14908         ;;
14909 esac
14910
14911 set X $dynamic_ext $static_ext $nonxs_ext
14912 shift
14913 extensions="$*"
14914
14915 : Remove build directory name from cppstdin so it can be used from
14916 : either the present location or the final installed location.
14917 echo " "
14918 : Get out of the UU directory to get correct path name.
14919 cd ..
14920 case "$cppstdin" in
14921 `pwd`/cppstdin)
14922         echo "Stripping down cppstdin path name"
14923         cppstdin=cppstdin
14924         ;;
14925 esac
14926 cd UU
14927
14928 : end of configuration questions
14929 echo " "
14930 echo "End of configuration questions."
14931 echo " "
14932
14933 : back to where it started
14934 if test -d ../UU; then
14935         cd ..
14936 fi
14937
14938 : configuration may be patched via a 'config.over' file
14939 if $test -f config.over; then
14940         echo " "
14941         dflt=y
14942         rp='I see a config.over file.  Do you wish to load it?'
14943         . UU/myread
14944         case "$ans" in
14945         n*) echo "OK, I'll ignore it.";;
14946         *)      . ./config.over
14947                 echo "Configuration override changes have been loaded."
14948                 ;;
14949         esac
14950 fi
14951
14952 : in case they want portability, strip down executable paths
14953 case "$d_portable" in
14954 "$define")
14955         echo " "
14956         echo "Stripping down executable paths..." >&4
14957         for file in $loclist $trylist; do
14958                 eval temp=\$$file
14959                 eval $file=`basename $temp`
14960         done
14961         ;;
14962 esac
14963
14964 : create config.sh file
14965 echo " "
14966 echo "Creating config.sh..." >&4
14967 $spitshell <<EOT >config.sh
14968 $startsh
14969 #
14970 # This file was produced by running the Configure script. It holds all the
14971 # definitions figured out by Configure. Should you modify one of these values,
14972 # do not forget to propagate your changes by running "Configure -der". You may
14973 # instead choose to run each of the .SH files by yourself, or "Configure -S".
14974 #
14975
14976 # Package name      : $package
14977 # Source directory  : $src
14978 # Configuration time: $cf_time
14979 # Configured by     : $cf_by
14980 # Target system     : $myuname
14981
14982 Author='$Author'
14983 Date='$Date'
14984 Header='$Header'
14985 Id='$Id'
14986 Locker='$Locker'
14987 Log='$Log'
14988 Mcc='$Mcc'
14989 RCSfile='$RCSfile'
14990 Revision='$Revision'
14991 Source='$Source'
14992 State='$State'
14993 _a='$_a'
14994 _exe='$_exe'
14995 _o='$_o'
14996 afs='$afs'
14997 alignbytes='$alignbytes'
14998 ansi2knr='$ansi2knr'
14999 aphostname='$aphostname'
15000 api_revision='$api_revision'
15001 api_subversion='$api_subversion'
15002 api_version='$api_version'
15003 api_versionstring='$api_versionstring'
15004 ar='$ar'
15005 archlib='$archlib'
15006 archlibexp='$archlibexp'
15007 archname64='$archname64'
15008 archname='$archname'
15009 archobjs='$archobjs'
15010 awk='$awk'
15011 baserev='$baserev'
15012 bash='$bash'
15013 bin='$bin'
15014 bincompat5005='$bincompat5005'
15015 binexp='$binexp'
15016 bison='$bison'
15017 byacc='$byacc'
15018 byteorder='$byteorder'
15019 c='$c'
15020 castflags='$castflags'
15021 cat='$cat'
15022 cc='$cc'
15023 cccdlflags='$cccdlflags'
15024 ccdlflags='$ccdlflags'
15025 ccflags='$ccflags'
15026 ccsymbols='$ccsymbols'
15027 cf_by='$cf_by'
15028 cf_email='$cf_email'
15029 cf_time='$cf_time'
15030 charsize='$charsize'
15031 chgrp='$chgrp'
15032 chmod='$chmod'
15033 chown='$chown'
15034 clocktype='$clocktype'
15035 comm='$comm'
15036 compress='$compress'
15037 contains='$contains'
15038 cp='$cp'
15039 cpio='$cpio'
15040 cpp='$cpp'
15041 cpp_stuff='$cpp_stuff'
15042 cppccsymbols='$cppccsymbols'
15043 cppflags='$cppflags'
15044 cpplast='$cpplast'
15045 cppminus='$cppminus'
15046 cpprun='$cpprun'
15047 cppstdin='$cppstdin'
15048 cppsymbols='$cppsymbols'
15049 crosscompile='$crosscompile'
15050 cryptlib='$cryptlib'
15051 csh='$csh'
15052 d_Gconvert='$d_Gconvert'
15053 d_PRIEldbl='$d_PRIEldbl'
15054 d_PRIFldbl='$d_PRIFldbl'
15055 d_PRIGldbl='$d_PRIGldbl'
15056 d_PRIX64='$d_PRIX64'
15057 d_PRId64='$d_PRId64'
15058 d_PRIeldbl='$d_PRIeldbl'
15059 d_PRIfldbl='$d_PRIfldbl'
15060 d_PRIgldbl='$d_PRIgldbl'
15061 d_PRIi64='$d_PRIi64'
15062 d_PRIo64='$d_PRIo64'
15063 d_PRIu64='$d_PRIu64'
15064 d_PRIx64='$d_PRIx64'
15065 d_access='$d_access'
15066 d_accessx='$d_accessx'
15067 d_alarm='$d_alarm'
15068 d_archlib='$d_archlib'
15069 d_atolf='$d_atolf'
15070 d_atoll='$d_atoll'
15071 d_attribut='$d_attribut'
15072 d_bcmp='$d_bcmp'
15073 d_bcopy='$d_bcopy'
15074 d_bincompat5005='$d_bincompat5005'
15075 d_bsd='$d_bsd'
15076 d_bsdgetpgrp='$d_bsdgetpgrp'
15077 d_bsdsetpgrp='$d_bsdsetpgrp'
15078 d_bzero='$d_bzero'
15079 d_casti32='$d_casti32'
15080 d_castneg='$d_castneg'
15081 d_charvspr='$d_charvspr'
15082 d_chown='$d_chown'
15083 d_chroot='$d_chroot'
15084 d_chsize='$d_chsize'
15085 d_closedir='$d_closedir'
15086 d_const='$d_const'
15087 d_crypt='$d_crypt'
15088 d_csh='$d_csh'
15089 d_cuserid='$d_cuserid'
15090 d_dbl_dig='$d_dbl_dig'
15091 d_difftime='$d_difftime'
15092 d_dirnamlen='$d_dirnamlen'
15093 d_dlerror='$d_dlerror'
15094 d_dlopen='$d_dlopen'
15095 d_dlsymun='$d_dlsymun'
15096 d_dosuid='$d_dosuid'
15097 d_drand48proto='$d_drand48proto'
15098 d_dup2='$d_dup2'
15099 d_eaccess='$d_eaccess'
15100 d_endgrent='$d_endgrent'
15101 d_endhent='$d_endhent'
15102 d_endnent='$d_endnent'
15103 d_endpent='$d_endpent'
15104 d_endpwent='$d_endpwent'
15105 d_endsent='$d_endsent'
15106 d_endspent='$d_endspent'
15107 d_eofnblk='$d_eofnblk'
15108 d_eunice='$d_eunice'
15109 d_fchmod='$d_fchmod'
15110 d_fchown='$d_fchown'
15111 d_fcntl='$d_fcntl'
15112 d_fd_macros='$d_fd_macros'
15113 d_fd_set='$d_fd_set'
15114 d_fds_bits='$d_fds_bits'
15115 d_fgetpos='$d_fgetpos'
15116 d_flexfnam='$d_flexfnam'
15117 d_flock='$d_flock'
15118 d_fork='$d_fork'
15119 d_fpathconf='$d_fpathconf'
15120 d_fpos64_t='$d_fpos64_t'
15121 d_fs_data_s='$d_fs_data_s'
15122 d_fseeko='$d_fseeko'
15123 d_fsetpos='$d_fsetpos'
15124 d_fstatfs='$d_fstatfs'
15125 d_fstatvfs='$d_fstatvfs'
15126 d_ftello='$d_ftello'
15127 d_ftime='$d_ftime'
15128 d_getcwd='$d_getcwd'
15129 d_getfsstat='$d_getfsstat'
15130 d_getgrent='$d_getgrent'
15131 d_getgrps='$d_getgrps'
15132 d_gethbyaddr='$d_gethbyaddr'
15133 d_gethbyname='$d_gethbyname'
15134 d_gethent='$d_gethent'
15135 d_gethname='$d_gethname'
15136 d_gethostprotos='$d_gethostprotos'
15137 d_getlogin='$d_getlogin'
15138 d_getmnt='$d_getmnt'
15139 d_getmntent='$d_getmntent'
15140 d_getnbyaddr='$d_getnbyaddr'
15141 d_getnbyname='$d_getnbyname'
15142 d_getnent='$d_getnent'
15143 d_getnetprotos='$d_getnetprotos'
15144 d_getpbyname='$d_getpbyname'
15145 d_getpbynumber='$d_getpbynumber'
15146 d_getpent='$d_getpent'
15147 d_getpgid='$d_getpgid'
15148 d_getpgrp2='$d_getpgrp2'
15149 d_getpgrp='$d_getpgrp'
15150 d_getppid='$d_getppid'
15151 d_getprior='$d_getprior'
15152 d_getprotoprotos='$d_getprotoprotos'
15153 d_getpwent='$d_getpwent'
15154 d_getsbyname='$d_getsbyname'
15155 d_getsbyport='$d_getsbyport'
15156 d_getsent='$d_getsent'
15157 d_getservprotos='$d_getservprotos'
15158 d_getspent='$d_getspent'
15159 d_getspnam='$d_getspnam'
15160 d_gettimeod='$d_gettimeod'
15161 d_gnulibc='$d_gnulibc'
15162 d_grpasswd='$d_grpasswd'
15163 d_hasmntopt='$d_hasmntopt'
15164 d_htonl='$d_htonl'
15165 d_iconv='$d_iconv'
15166 d_index='$d_index'
15167 d_inetaton='$d_inetaton'
15168 d_int64_t='$d_int64_t'
15169 d_isascii='$d_isascii'
15170 d_killpg='$d_killpg'
15171 d_lchown='$d_lchown'
15172 d_ldbl_dig='$d_ldbl_dig'
15173 d_link='$d_link'
15174 d_locconv='$d_locconv'
15175 d_lockf='$d_lockf'
15176 d_longdbl='$d_longdbl'
15177 d_longlong='$d_longlong'
15178 d_lseekproto='$d_lseekproto'
15179 d_lstat='$d_lstat'
15180 d_madvise='$d_madvise'
15181 d_mblen='$d_mblen'
15182 d_mbstowcs='$d_mbstowcs'
15183 d_mbtowc='$d_mbtowc'
15184 d_memchr='$d_memchr'
15185 d_memcmp='$d_memcmp'
15186 d_memcpy='$d_memcpy'
15187 d_memmove='$d_memmove'
15188 d_memset='$d_memset'
15189 d_mkdir='$d_mkdir'
15190 d_mkdtemp='$d_mkdtemp'
15191 d_mkfifo='$d_mkfifo'
15192 d_mkstemp='$d_mkstemp'
15193 d_mkstemps='$d_mkstemps'
15194 d_mktime='$d_mktime'
15195 d_mmap='$d_mmap'
15196 d_mprotect='$d_mprotect'
15197 d_msg='$d_msg'
15198 d_msg_ctrunc='$d_msg_ctrunc'
15199 d_msg_dontroute='$d_msg_dontroute'
15200 d_msg_oob='$d_msg_oob'
15201 d_msg_peek='$d_msg_peek'
15202 d_msg_proxy='$d_msg_proxy'
15203 d_msgctl='$d_msgctl'
15204 d_msgget='$d_msgget'
15205 d_msgrcv='$d_msgrcv'
15206 d_msgsnd='$d_msgsnd'
15207 d_msync='$d_msync'
15208 d_munmap='$d_munmap'
15209 d_mymalloc='$d_mymalloc'
15210 d_nice='$d_nice'
15211 d_nv_preserves_uv='$d_nv_preserves_uv'
15212 d_off64_t='$d_off64_t'
15213 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15214 d_oldpthreads='$d_oldpthreads'
15215 d_oldsock='$d_oldsock'
15216 d_open3='$d_open3'
15217 d_pathconf='$d_pathconf'
15218 d_pause='$d_pause'
15219 d_phostname='$d_phostname'
15220 d_pipe='$d_pipe'
15221 d_poll='$d_poll'
15222 d_portable='$d_portable'
15223 d_pthread_yield='$d_pthread_yield'
15224 d_pwage='$d_pwage'
15225 d_pwchange='$d_pwchange'
15226 d_pwclass='$d_pwclass'
15227 d_pwcomment='$d_pwcomment'
15228 d_pwexpire='$d_pwexpire'
15229 d_pwgecos='$d_pwgecos'
15230 d_pwpasswd='$d_pwpasswd'
15231 d_pwquota='$d_pwquota'
15232 d_qgcvt='$d_qgcvt'
15233 d_quad='$d_quad'
15234 d_readdir='$d_readdir'
15235 d_readlink='$d_readlink'
15236 d_rename='$d_rename'
15237 d_rewinddir='$d_rewinddir'
15238 d_rmdir='$d_rmdir'
15239 d_safebcpy='$d_safebcpy'
15240 d_safemcpy='$d_safemcpy'
15241 d_sanemcmp='$d_sanemcmp'
15242 d_sched_yield='$d_sched_yield'
15243 d_scm_rights='$d_scm_rights'
15244 d_seekdir='$d_seekdir'
15245 d_select='$d_select'
15246 d_sem='$d_sem'
15247 d_semctl='$d_semctl'
15248 d_semctl_semid_ds='$d_semctl_semid_ds'
15249 d_semctl_semun='$d_semctl_semun'
15250 d_semget='$d_semget'
15251 d_semop='$d_semop'
15252 d_setegid='$d_setegid'
15253 d_seteuid='$d_seteuid'
15254 d_setgrent='$d_setgrent'
15255 d_setgrps='$d_setgrps'
15256 d_sethent='$d_sethent'
15257 d_setlinebuf='$d_setlinebuf'
15258 d_setlocale='$d_setlocale'
15259 d_setnent='$d_setnent'
15260 d_setpent='$d_setpent'
15261 d_setpgid='$d_setpgid'
15262 d_setpgrp2='$d_setpgrp2'
15263 d_setpgrp='$d_setpgrp'
15264 d_setprior='$d_setprior'
15265 d_setpwent='$d_setpwent'
15266 d_setregid='$d_setregid'
15267 d_setresgid='$d_setresgid'
15268 d_setresuid='$d_setresuid'
15269 d_setreuid='$d_setreuid'
15270 d_setrgid='$d_setrgid'
15271 d_setruid='$d_setruid'
15272 d_setsent='$d_setsent'
15273 d_setsid='$d_setsid'
15274 d_setspent='$d_setspent'
15275 d_setvbuf='$d_setvbuf'
15276 d_sfio='$d_sfio'
15277 d_shm='$d_shm'
15278 d_shmat='$d_shmat'
15279 d_shmatprototype='$d_shmatprototype'
15280 d_shmctl='$d_shmctl'
15281 d_shmdt='$d_shmdt'
15282 d_shmget='$d_shmget'
15283 d_sigaction='$d_sigaction'
15284 d_sigsetjmp='$d_sigsetjmp'
15285 d_socket='$d_socket'
15286 d_socklen_t='$d_socklen_t'
15287 d_sockpair='$d_sockpair'
15288 d_sqrtl='$d_sqrtl'
15289 d_statblks='$d_statblks'
15290 d_statfs_f_flags='$d_statfs_f_flags'
15291 d_statfs_s='$d_statfs_s'
15292 d_statvfs='$d_statvfs'
15293 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15294 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15295 d_stdio_stream_array='$d_stdio_stream_array'
15296 d_stdiobase='$d_stdiobase'
15297 d_stdstdio='$d_stdstdio'
15298 d_strchr='$d_strchr'
15299 d_strcoll='$d_strcoll'
15300 d_strctcpy='$d_strctcpy'
15301 d_strerrm='$d_strerrm'
15302 d_strerror='$d_strerror'
15303 d_strtod='$d_strtod'
15304 d_strtol='$d_strtol'
15305 d_strtold='$d_strtold'
15306 d_strtoll='$d_strtoll'
15307 d_strtoul='$d_strtoul'
15308 d_strtoull='$d_strtoull'
15309 d_strtouq='$d_strtouq'
15310 d_strxfrm='$d_strxfrm'
15311 d_suidsafe='$d_suidsafe'
15312 d_symlink='$d_symlink'
15313 d_syscall='$d_syscall'
15314 d_sysconf='$d_sysconf'
15315 d_sysernlst='$d_sysernlst'
15316 d_syserrlst='$d_syserrlst'
15317 d_system='$d_system'
15318 d_tcgetpgrp='$d_tcgetpgrp'
15319 d_tcsetpgrp='$d_tcsetpgrp'
15320 d_telldir='$d_telldir'
15321 d_telldirproto='$d_telldirproto'
15322 d_time='$d_time'
15323 d_times='$d_times'
15324 d_truncate='$d_truncate'
15325 d_tzname='$d_tzname'
15326 d_umask='$d_umask'
15327 d_uname='$d_uname'
15328 d_union_semun='$d_union_semun'
15329 d_ustat='$d_ustat'
15330 d_vendorarch='$d_vendorarch'
15331 d_vendorbin='$d_vendorbin'
15332 d_vendorlib='$d_vendorlib'
15333 d_vfork='$d_vfork'
15334 d_void_closedir='$d_void_closedir'
15335 d_voidsig='$d_voidsig'
15336 d_voidtty='$d_voidtty'
15337 d_volatile='$d_volatile'
15338 d_vprintf='$d_vprintf'
15339 d_wait4='$d_wait4'
15340 d_waitpid='$d_waitpid'
15341 d_wcstombs='$d_wcstombs'
15342 d_wctomb='$d_wctomb'
15343 d_xenix='$d_xenix'
15344 date='$date'
15345 db_hashtype='$db_hashtype'
15346 db_prefixtype='$db_prefixtype'
15347 defvoidused='$defvoidused'
15348 direntrytype='$direntrytype'
15349 dlext='$dlext'
15350 dlsrc='$dlsrc'
15351 doublesize='$doublesize'
15352 drand01='$drand01'
15353 dynamic_ext='$dynamic_ext'
15354 eagain='$eagain'
15355 ebcdic='$ebcdic'
15356 echo='$echo'
15357 egrep='$egrep'
15358 emacs='$emacs'
15359 eunicefix='$eunicefix'
15360 exe_ext='$exe_ext'
15361 expr='$expr'
15362 extensions='$extensions'
15363 fflushNULL='$fflushNULL'
15364 fflushall='$fflushall'
15365 find='$find'
15366 firstmakefile='$firstmakefile'
15367 flex='$flex'
15368 fpossize='$fpossize'
15369 fpostype='$fpostype'
15370 freetype='$freetype'
15371 full_ar='$full_ar'
15372 full_csh='$full_csh'
15373 full_sed='$full_sed'
15374 gccversion='$gccversion'
15375 gidformat='$gidformat'
15376 gidsign='$gidsign'
15377 gidsize='$gidsize'
15378 gidtype='$gidtype'
15379 glibpth='$glibpth'
15380 grep='$grep'
15381 groupcat='$groupcat'
15382 groupstype='$groupstype'
15383 gzip='$gzip'
15384 h_fcntl='$h_fcntl'
15385 h_sysfile='$h_sysfile'
15386 hint='$hint'
15387 hostcat='$hostcat'
15388 huge='$huge'
15389 i16size='$i16size'
15390 i16type='$i16type'
15391 i32size='$i32size'
15392 i32type='$i32type'
15393 i64size='$i64size'
15394 i64type='$i64type'
15395 i8size='$i8size'
15396 i8type='$i8type'
15397 i_arpainet='$i_arpainet'
15398 i_bsdioctl='$i_bsdioctl'
15399 i_db='$i_db'
15400 i_dbm='$i_dbm'
15401 i_dirent='$i_dirent'
15402 i_dld='$i_dld'
15403 i_dlfcn='$i_dlfcn'
15404 i_fcntl='$i_fcntl'
15405 i_float='$i_float'
15406 i_gdbm='$i_gdbm'
15407 i_grp='$i_grp'
15408 i_iconv='$i_iconv'
15409 i_ieeefp='$i_ieeefp'
15410 i_inttypes='$i_inttypes'
15411 i_limits='$i_limits'
15412 i_locale='$i_locale'
15413 i_machcthr='$i_machcthr'
15414 i_malloc='$i_malloc'
15415 i_math='$i_math'
15416 i_memory='$i_memory'
15417 i_mntent='$i_mntent'
15418 i_ndbm='$i_ndbm'
15419 i_netdb='$i_netdb'
15420 i_neterrno='$i_neterrno'
15421 i_netinettcp='$i_netinettcp'
15422 i_niin='$i_niin'
15423 i_poll='$i_poll'
15424 i_pthread='$i_pthread'
15425 i_pwd='$i_pwd'
15426 i_rpcsvcdbm='$i_rpcsvcdbm'
15427 i_sfio='$i_sfio'
15428 i_sgtty='$i_sgtty'
15429 i_shadow='$i_shadow'
15430 i_socks='$i_socks'
15431 i_stdarg='$i_stdarg'
15432 i_stddef='$i_stddef'
15433 i_stdlib='$i_stdlib'
15434 i_string='$i_string'
15435 i_sunmath='$i_sunmath'
15436 i_sysaccess='$i_sysaccess'
15437 i_sysdir='$i_sysdir'
15438 i_sysfile='$i_sysfile'
15439 i_sysfilio='$i_sysfilio'
15440 i_sysin='$i_sysin'
15441 i_sysioctl='$i_sysioctl'
15442 i_syslog='$i_syslog'
15443 i_sysmman='$i_sysmman'
15444 i_sysmode='$i_sysmode'
15445 i_sysmount='$i_sysmount'
15446 i_sysndir='$i_sysndir'
15447 i_sysparam='$i_sysparam'
15448 i_sysresrc='$i_sysresrc'
15449 i_syssecrt='$i_syssecrt'
15450 i_sysselct='$i_sysselct'
15451 i_syssockio='$i_syssockio'
15452 i_sysstat='$i_sysstat'
15453 i_sysstatfs='$i_sysstatfs'
15454 i_sysstatvfs='$i_sysstatvfs'
15455 i_systime='$i_systime'
15456 i_systimek='$i_systimek'
15457 i_systimes='$i_systimes'
15458 i_systypes='$i_systypes'
15459 i_sysuio='$i_sysuio'
15460 i_sysun='$i_sysun'
15461 i_sysutsname='$i_sysutsname'
15462 i_sysvfs='$i_sysvfs'
15463 i_syswait='$i_syswait'
15464 i_termio='$i_termio'
15465 i_termios='$i_termios'
15466 i_time='$i_time'
15467 i_unistd='$i_unistd'
15468 i_ustat='$i_ustat'
15469 i_utime='$i_utime'
15470 i_values='$i_values'
15471 i_varargs='$i_varargs'
15472 i_varhdr='$i_varhdr'
15473 i_vfork='$i_vfork'
15474 ignore_versioned_solibs='$ignore_versioned_solibs'
15475 inc_version_list='$inc_version_list'
15476 inc_version_list_init='$inc_version_list_init'
15477 incpath='$incpath'
15478 inews='$inews'
15479 installarchlib='$installarchlib'
15480 installbin='$installbin'
15481 installman1dir='$installman1dir'
15482 installman3dir='$installman3dir'
15483 installprefix='$installprefix'
15484 installprefixexp='$installprefixexp'
15485 installprivlib='$installprivlib'
15486 installscript='$installscript'
15487 installsitearch='$installsitearch'
15488 installsitebin='$installsitebin'
15489 installsitelib='$installsitelib'
15490 installstyle='$installstyle'
15491 installusrbinperl='$installusrbinperl'
15492 installvendorarch='$installvendorarch'
15493 installvendorbin='$installvendorbin'
15494 installvendorlib='$installvendorlib'
15495 intsize='$intsize'
15496 ivdformat='$ivdformat'
15497 ivsize='$ivsize'
15498 ivtype='$ivtype'
15499 known_extensions='$known_extensions'
15500 ksh='$ksh'
15501 large='$large'
15502 ld='$ld'
15503 lddlflags='$lddlflags'
15504 ldflags='$ldflags'
15505 ldlibpthname='$ldlibpthname'
15506 less='$less'
15507 lib_ext='$lib_ext'
15508 libc='$libc'
15509 libperl='$libperl'
15510 libpth='$libpth'
15511 libs='$libs'
15512 libsdirs='$libsdirs'
15513 libsfiles='$libsfiles'
15514 libsfound='$libsfound'
15515 libspath='$libspath'
15516 libswanted='$libswanted'
15517 line='$line'
15518 lint='$lint'
15519 lkflags='$lkflags'
15520 ln='$ln'
15521 lns='$lns'
15522 locincpth='$locincpth'
15523 loclibpth='$loclibpth'
15524 longdblsize='$longdblsize'
15525 longlongsize='$longlongsize'
15526 longsize='$longsize'
15527 lp='$lp'
15528 lpr='$lpr'
15529 ls='$ls'
15530 lseeksize='$lseeksize'
15531 lseektype='$lseektype'
15532 mail='$mail'
15533 mailx='$mailx'
15534 make='$make'
15535 make_set_make='$make_set_make'
15536 mallocobj='$mallocobj'
15537 mallocsrc='$mallocsrc'
15538 malloctype='$malloctype'
15539 man1dir='$man1dir'
15540 man1direxp='$man1direxp'
15541 man1ext='$man1ext'
15542 man3dir='$man3dir'
15543 man3direxp='$man3direxp'
15544 man3ext='$man3ext'
15545 medium='$medium'
15546 mips_type='$mips_type'
15547 mkdir='$mkdir'
15548 mmaptype='$mmaptype'
15549 models='$models'
15550 modetype='$modetype'
15551 more='$more'
15552 multiarch='$multiarch'
15553 mv='$mv'
15554 myarchname='$myarchname'
15555 mydomain='$mydomain'
15556 myhostname='$myhostname'
15557 myuname='$myuname'
15558 n='$n'
15559 netdb_hlen_type='$netdb_hlen_type'
15560 netdb_host_type='$netdb_host_type'
15561 netdb_name_type='$netdb_name_type'
15562 netdb_net_type='$netdb_net_type'
15563 nm='$nm'
15564 nm_opt='$nm_opt'
15565 nm_so_opt='$nm_so_opt'
15566 nonxs_ext='$nonxs_ext'
15567 nroff='$nroff'
15568 nvsize='$nvsize'
15569 nvtype='$nvtype'
15570 o_nonblock='$o_nonblock'
15571 obj_ext='$obj_ext'
15572 old_pthread_create_joinable='$old_pthread_create_joinable'
15573 optimize='$optimize'
15574 orderlib='$orderlib'
15575 osname='$osname'
15576 osvers='$osvers'
15577 package='$package'
15578 pager='$pager'
15579 passcat='$passcat'
15580 patchlevel='$patchlevel'
15581 path_sep='$path_sep'
15582 perl5='$perl5'
15583 perl='$perl'
15584 perladmin='$perladmin'
15585 perlpath='$perlpath'
15586 pg='$pg'
15587 phostname='$phostname'
15588 pidtype='$pidtype'
15589 plibpth='$plibpth'
15590 pm_apiversion='$pm_apiversion'
15591 pmake='$pmake'
15592 pr='$pr'
15593 prefix='$prefix'
15594 prefixexp='$prefixexp'
15595 privlib='$privlib'
15596 privlibexp='$privlibexp'
15597 prototype='$prototype'
15598 ptrsize='$ptrsize'
15599 quadkind='$quadkind'
15600 quadtype='$quadtype'
15601 randbits='$randbits'
15602 randfunc='$randfunc'
15603 randseedtype='$randseedtype'
15604 ranlib='$ranlib'
15605 rd_nodata='$rd_nodata'
15606 revision='$revision'
15607 rm='$rm'
15608 rmail='$rmail'
15609 runnm='$runnm'
15610 sPRIEldbl='$sPRIEldbl'
15611 sPRIFldbl='$sPRIFldbl'
15612 sPRIGldbl='$sPRIGldbl'
15613 sPRIX64='$sPRIX64'
15614 sPRId64='$sPRId64'
15615 sPRIeldbl='$sPRIeldbl'
15616 sPRIfldbl='$sPRIfldbl'
15617 sPRIgldbl='$sPRIgldbl'
15618 sPRIi64='$sPRIi64'
15619 sPRIo64='$sPRIo64'
15620 sPRIu64='$sPRIu64'
15621 sPRIx64='$sPRIx64'
15622 sched_yield='$sched_yield'
15623 scriptdir='$scriptdir'
15624 scriptdirexp='$scriptdirexp'
15625 sed='$sed'
15626 seedfunc='$seedfunc'
15627 selectminbits='$selectminbits'
15628 selecttype='$selecttype'
15629 sendmail='$sendmail'
15630 sh='$sh'
15631 shar='$shar'
15632 sharpbang='$sharpbang'
15633 shmattype='$shmattype'
15634 shortsize='$shortsize'
15635 shrpenv='$shrpenv'
15636 shsharp='$shsharp'
15637 sig_count='$sig_count'
15638 sig_name='$sig_name'
15639 sig_name_init='$sig_name_init'
15640 sig_num='$sig_num'
15641 sig_num_init='$sig_num_init'
15642 signal_t='$signal_t'
15643 sitearch='$sitearch'
15644 sitearchexp='$sitearchexp'
15645 sitebin='$sitebin'
15646 sitebinexp='$sitebinexp'
15647 sitelib='$sitelib'
15648 sitelib_stem='$sitelib_stem'
15649 sitelibexp='$sitelibexp'
15650 siteprefix='$siteprefix'
15651 siteprefixexp='$siteprefixexp'
15652 sizetype='$sizetype'
15653 sleep='$sleep'
15654 smail='$smail'
15655 small='$small'
15656 so='$so'
15657 sockethdr='$sockethdr'
15658 socketlib='$socketlib'
15659 socksizetype='$socksizetype'
15660 sort='$sort'
15661 spackage='$spackage'
15662 spitshell='$spitshell'
15663 split='$split'
15664 src='$src'
15665 ssizetype='$ssizetype'
15666 startperl='$startperl'
15667 startsh='$startsh'
15668 static_ext='$static_ext'
15669 stdchar='$stdchar'
15670 stdio_base='$stdio_base'
15671 stdio_bufsiz='$stdio_bufsiz'
15672 stdio_cnt='$stdio_cnt'
15673 stdio_filbuf='$stdio_filbuf'
15674 stdio_ptr='$stdio_ptr'
15675 stdio_stream_array='$stdio_stream_array'
15676 strings='$strings'
15677 submit='$submit'
15678 subversion='$subversion'
15679 sysman='$sysman'
15680 tail='$tail'
15681 tar='$tar'
15682 tbl='$tbl'
15683 tee='$tee'
15684 test='$test'
15685 timeincl='$timeincl'
15686 timetype='$timetype'
15687 touch='$touch'
15688 tr='$tr'
15689 trnl='$trnl'
15690 troff='$troff'
15691 u16size='$u16size'
15692 u16type='$u16type'
15693 u32size='$u32size'
15694 u32type='$u32type'
15695 u64size='$u64size'
15696 u64type='$u64type'
15697 u8size='$u8size'
15698 u8type='$u8type'
15699 uidformat='$uidformat'
15700 uidsign='$uidsign'
15701 uidsize='$uidsize'
15702 uidtype='$uidtype'
15703 uname='$uname'
15704 uniq='$uniq'
15705 uquadtype='$uquadtype'
15706 use5005threads='$use5005threads'
15707 use64bitall='$use64bitall'
15708 use64bitint='$use64bitint'
15709 usedl='$usedl'
15710 useithreads='$useithreads'
15711 uselargefiles='$uselargefiles'
15712 uselongdouble='$uselongdouble'
15713 usemorebits='$usemorebits'
15714 usemultiplicity='$usemultiplicity'
15715 usemymalloc='$usemymalloc'
15716 usenm='$usenm'
15717 useopcode='$useopcode'
15718 useperlio='$useperlio'
15719 useposix='$useposix'
15720 usesfio='$usesfio'
15721 useshrplib='$useshrplib'
15722 usesocks='$usesocks'
15723 usethreads='$usethreads'
15724 usevendorprefix='$usevendorprefix'
15725 usevfork='$usevfork'
15726 usrinc='$usrinc'
15727 uuname='$uuname'
15728 uvoformat='$uvoformat'
15729 uvsize='$uvsize'
15730 uvtype='$uvtype'
15731 uvuformat='$uvuformat'
15732 uvxformat='$uvxformat'
15733 vendorarch='$vendorarch'
15734 vendorarchexp='$vendorarchexp'
15735 vendorbin='$vendorbin'
15736 vendorbinexp='$vendorbinexp'
15737 vendorlib='$vendorlib'
15738 vendorlib_stem='$vendorlib_stem'
15739 vendorlibexp='$vendorlibexp'
15740 vendorprefix='$vendorprefix'
15741 vendorprefixexp='$vendorprefixexp'
15742 version='$version'
15743 vi='$vi'
15744 voidflags='$voidflags'
15745 xlibpth='$xlibpth'
15746 xs_apiversion='$xs_apiversion'
15747 zcat='$zcat'
15748 zip='$zip'
15749 EOT
15750
15751 : Add in command line options if available
15752 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15753
15754 : add special variables
15755 $test -f $src/patchlevel.h && \
15756 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15757 echo "CONFIGDOTSH=true" >>config.sh
15758
15759 : propagate old symbols
15760 if $test -f UU/config.sh; then
15761         <UU/config.sh sort | uniq >UU/oldconfig.sh
15762         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15763         sort | uniq -u >UU/oldsyms
15764         set X `cat UU/oldsyms`
15765         shift
15766         case $# in
15767         0) ;;
15768         *)
15769                 cat <<EOM
15770 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15771 EOM
15772                 echo "# Variables propagated from previous config.sh file." >>config.sh
15773                 for sym in `cat UU/oldsyms`; do
15774                         echo "    Propagating $hint variable "'$'"$sym..."
15775                         eval 'tmp="$'"${sym}"'"'
15776                         echo "$tmp" | \
15777                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15778                 done
15779                 ;;
15780         esac
15781 fi
15782
15783 : Finish up by extracting the .SH files
15784 case "$alldone" in
15785 exit)
15786         $rm -rf UU
15787         echo "Done."
15788         exit 0
15789         ;;
15790 cont)
15791         ;;
15792 '')
15793         dflt=''
15794         nostick=true
15795         $cat <<EOM
15796
15797 If you'd like to make any changes to the config.sh file before I begin
15798 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15799
15800 EOM
15801         rp="Press return or use a shell escape to edit config.sh:"
15802         . UU/myread
15803         nostick=''
15804         case "$ans" in
15805         '') ;;
15806         *) : in case they cannot read
15807                 sh 1>&4 -c "$ans";;
15808         esac
15809         ;;
15810 esac
15811
15812 : if this fails, just run all the .SH files by hand
15813 . ./config.sh
15814
15815 echo " "
15816 exec 1>&4
15817 . ./UU/extract
15818
15819 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15820         dflt=y
15821         case "$silent" in
15822         true) ;;
15823         *)
15824                 $cat <<EOM
15825
15826 Now you need to generate make dependencies by running "$make depend".
15827 You might prefer to run it in background: "$make depend > makedepend.out &"
15828 It can take a while, so you might not want to run it right now.
15829
15830 EOM
15831                 ;;
15832         esac
15833         rp="Run $make depend now?"
15834         . UU/myread
15835         case "$ans" in
15836         y*)
15837                 $make depend && echo "Now you must run a $make."
15838                 ;;
15839         *)
15840                 echo "You must run '$make depend' then '$make'."
15841                 ;;
15842         esac
15843 elif test -f [Mm]akefile; then
15844         echo " "
15845         echo "Now you must run a $make."
15846 else
15847         echo "Done."
15848 fi
15849
15850 if $test -f Policy.sh; then
15851     $cat <<EOM
15852
15853 If you compile $package on a different machine or from a different object
15854 directory, copy the Policy.sh file from this object directory to the
15855 new one before you run Configure -- this will help you with most of
15856 the policy defaults.
15857
15858 EOM
15859 fi
15860 if $test -f config.msg; then
15861     echo "Hmm.  I also noted the following information while running:"
15862     echo " "
15863     $cat config.msg >&4
15864     $rm -f config.msg
15865 fi
15866 $rm -f kit*isdone ark*isdone
15867 $rm -rf UU
15868
15869 : End of Configure
15870