b6ed6d9f1d9bae5e43fbb6464cbad7dec1246996
[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 Wed Jun 20 02:24:20 EET DST 2001 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
25
26 cat >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 >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 c1$$ c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f c1$$ 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 ccname=''
164 ccversion=''
165 ccsymbols=''
166 cppccsymbols=''
167 cppsymbols=''
168 from=''
169 run=''
170 targetarch=''
171 to=''
172 usecrosscompile=''
173 perllibs=''
174 dynamic_ext=''
175 extensions=''
176 known_extensions=''
177 nonxs_ext=''
178 static_ext=''
179 useopcode=''
180 useposix=''
181 d_bsd=''
182 d_eunice=''
183 d_xenix=''
184 eunicefix=''
185 Mcc=''
186 ar=''
187 awk=''
188 bash=''
189 bison=''
190 byacc=''
191 cat=''
192 chgrp=''
193 chmod=''
194 chown=''
195 comm=''
196 compress=''
197 cp=''
198 cpio=''
199 cpp=''
200 csh=''
201 date=''
202 echo=''
203 egrep=''
204 emacs=''
205 expr=''
206 find=''
207 flex=''
208 grep=''
209 gzip=''
210 inews=''
211 ksh=''
212 less=''
213 line=''
214 lint=''
215 ln=''
216 lp=''
217 lpr=''
218 ls=''
219 mail=''
220 mailx=''
221 make=''
222 mkdir=''
223 more=''
224 mv=''
225 nm=''
226 nroff=''
227 perl=''
228 pg=''
229 pmake=''
230 pr=''
231 rm=''
232 rmail=''
233 sed=''
234 sendmail=''
235 shar=''
236 sleep=''
237 smail=''
238 sort=''
239 submit=''
240 tail=''
241 tar=''
242 tbl=''
243 tee=''
244 test=''
245 touch=''
246 tr=''
247 troff=''
248 uname=''
249 uniq=''
250 uuname=''
251 vi=''
252 zcat=''
253 zip=''
254 full_ar=''
255 full_sed=''
256 libswanted=''
257 hint=''
258 myuname=''
259 osname=''
260 osvers=''
261 Author=''
262 Date=''
263 Header=''
264 Id=''
265 Locker=''
266 Log=''
267 RCSfile=''
268 Revision=''
269 Source=''
270 State=''
271 _a=''
272 _exe=''
273 _o=''
274 archobjs=''
275 exe_ext=''
276 firstmakefile=''
277 lib_ext=''
278 obj_ext=''
279 path_sep=''
280 afs=''
281 afsroot=''
282 alignbytes=''
283 ansi2knr=''
284 archlib=''
285 archlibexp=''
286 d_archlib=''
287 installarchlib=''
288 archname=''
289 myarchname=''
290 d_atolf=''
291 d_atoll=''
292 baserev=''
293 bin=''
294 binexp=''
295 installbin=''
296 bincompat5005=''
297 d_bincompat5005=''
298 byteorder=''
299 cc=''
300 ccflags=''
301 cppflags=''
302 ldflags=''
303 lkflags=''
304 locincpth=''
305 optimize=''
306 cf_email=''
307 cf_by=''
308 cf_time=''
309 charsize=''
310 contains=''
311 cpp_stuff=''
312 cpplast=''
313 cppminus=''
314 cpprun=''
315 cppstdin=''
316 d__fwalk=''
317 d_access=''
318 d_accessx=''
319 d_alarm=''
320 d_attribut=''
321 d_bcmp=''
322 d_bcopy=''
323 d_bzero=''
324 d_casti32=''
325 castflags=''
326 d_castneg=''
327 d_chown=''
328 d_chroot=''
329 d_chsize=''
330 d_closedir=''
331 d_void_closedir=''
332 d_cmsghdr_s=''
333 d_const=''
334 cryptlib=''
335 d_crypt=''
336 d_csh=''
337 full_csh=''
338 d_cuserid=''
339 d_dbl_dig=''
340 d_dbminitproto=''
341 d_difftime=''
342 d_dlerror=''
343 d_dlopen=''
344 d_dlsymun=''
345 d_dosuid=''
346 d_suidsafe=''
347 d_drand48proto=''
348 d_dup2=''
349 d_eaccess=''
350 d_endgrent=''
351 d_endhent=''
352 d_endnent=''
353 d_endpent=''
354 d_endpwent=''
355 d_endsent=''
356 d_fchmod=''
357 d_fchown=''
358 d_fcntl=''
359 d_fcntl_can_lock=''
360 d_fd_macros=''
361 d_fd_set=''
362 d_fds_bits=''
363 d_fgetpos=''
364 d_flexfnam=''
365 d_flock=''
366 d_flockproto=''
367 d_fork=''
368 d_fpos64_t=''
369 d_frexpl=''
370 d_fs_data_s=''
371 d_fseeko=''
372 d_fsetpos=''
373 d_fstatfs=''
374 d_fsync=''
375 d_ftello=''
376 d_ftime=''
377 d_gettimeod=''
378 d_Gconvert=''
379 d_getcwd=''
380 d_getespwnam=''
381 d_getfsstat=''
382 d_getgrent=''
383 d_getgrps=''
384 d_gethbyaddr=''
385 d_gethbyname=''
386 d_gethent=''
387 aphostname=''
388 d_gethname=''
389 d_phostname=''
390 d_uname=''
391 d_gethostprotos=''
392 d_getitimer=''
393 d_getlogin=''
394 d_getmnt=''
395 d_getmntent=''
396 d_getnbyaddr=''
397 d_getnbyname=''
398 d_getnent=''
399 d_getnetprotos=''
400 d_getpagsz=''
401 d_getpent=''
402 d_getpgid=''
403 d_getpgrp2=''
404 d_bsdgetpgrp=''
405 d_getpgrp=''
406 d_getppid=''
407 d_getprior=''
408 d_getpbyname=''
409 d_getpbynumber=''
410 d_getprotoprotos=''
411 d_getprpwnam=''
412 d_getpwent=''
413 d_getsent=''
414 d_getservprotos=''
415 d_getspnam=''
416 d_getsbyname=''
417 d_getsbyport=''
418 d_gnulibc=''
419 d_hasmntopt=''
420 d_htonl=''
421 d_iconv=''
422 d_inetaton=''
423 d_int64_t=''
424 d_isascii=''
425 d_isnan=''
426 d_isnanl=''
427 d_killpg=''
428 d_lchown=''
429 d_ldbl_dig=''
430 d_link=''
431 d_locconv=''
432 d_lockf=''
433 d_longdbl=''
434 longdblsize=''
435 d_longlong=''
436 longlongsize=''
437 d_lseekproto=''
438 d_lstat=''
439 d_madvise=''
440 d_mblen=''
441 d_mbstowcs=''
442 d_mbtowc=''
443 d_memchr=''
444 d_memcmp=''
445 d_memcpy=''
446 d_memmove=''
447 d_memset=''
448 d_mkdir=''
449 d_mkdtemp=''
450 d_mkfifo=''
451 d_mkstemp=''
452 d_mkstemps=''
453 d_mktime=''
454 d_mmap=''
455 mmaptype=''
456 d_modfl=''
457 d_modfl_pow32_bug=''
458 d_mprotect=''
459 d_msg=''
460 d_msgctl=''
461 d_msgget=''
462 d_msghdr_s=''
463 d_msgrcv=''
464 d_msgsnd=''
465 d_msync=''
466 d_munmap=''
467 d_nice=''
468 d_off64_t=''
469 d_open3=''
470 d_fpathconf=''
471 d_pathconf=''
472 d_pause=''
473 d_pipe=''
474 d_poll=''
475 d_portable=''
476 d_old_pthread_create_joinable=''
477 old_pthread_create_joinable=''
478 d_pthread_yield=''
479 d_sched_yield=''
480 sched_yield=''
481 d_qgcvt=''
482 d_readdir=''
483 d_rewinddir=''
484 d_seekdir=''
485 d_telldir=''
486 d_readlink=''
487 d_readv=''
488 d_realpath=''
489 d_recvmsg=''
490 d_rename=''
491 d_rmdir=''
492 d_safebcpy=''
493 d_safemcpy=''
494 d_sanemcmp=''
495 d_sbrkproto=''
496 d_select=''
497 d_sem=''
498 d_semctl=''
499 d_semget=''
500 d_semop=''
501 d_sendmsg=''
502 d_setegid=''
503 d_seteuid=''
504 d_setgrent=''
505 d_setgrps=''
506 d_sethent=''
507 d_setitimer=''
508 d_setlinebuf=''
509 d_setlocale=''
510 d_setnent=''
511 d_setpent=''
512 d_setpgid=''
513 d_setpgrp2=''
514 d_bsdsetpgrp=''
515 d_setpgrp=''
516 d_setprior=''
517 d_setproctitle=''
518 d_setpwent=''
519 d_setregid=''
520 d_setresgid=''
521 d_setresuid=''
522 d_setreuid=''
523 d_setrgid=''
524 d_setruid=''
525 d_setsent=''
526 d_setsid=''
527 d_setvbuf=''
528 d_sfio=''
529 usesfio=''
530 d_shm=''
531 d_shmat=''
532 d_shmatprototype=''
533 shmattype=''
534 d_shmctl=''
535 d_shmdt=''
536 d_shmget=''
537 d_sigaction=''
538 d_sigprocmask=''
539 d_sigsetjmp=''
540 d_sockatmark=''
541 d_sockatmarkproto=''
542 d_msg_ctrunc=''
543 d_msg_dontroute=''
544 d_msg_oob=''
545 d_msg_peek=''
546 d_msg_proxy=''
547 d_oldsock=''
548 d_scm_rights=''
549 d_socket=''
550 d_sockpair=''
551 sockethdr=''
552 socketlib=''
553 d_socklen_t=''
554 d_socks5_init=''
555 d_sqrtl=''
556 d_sresgproto=''
557 d_sresuproto=''
558 d_statblks=''
559 d_statfs_f_flags=''
560 d_statfs_s=''
561 d_fstatvfs=''
562 d_statvfs=''
563 d_stdio_cnt_lval=''
564 d_stdio_ptr_lval=''
565 d_stdio_ptr_lval_nochange_cnt=''
566 d_stdio_ptr_lval_sets_cnt=''
567 d_stdiobase=''
568 d_stdstdio=''
569 stdio_base=''
570 stdio_bufsiz=''
571 stdio_cnt=''
572 stdio_filbuf=''
573 stdio_ptr=''
574 d_index=''
575 d_strchr=''
576 d_strcoll=''
577 d_strctcpy=''
578 d_strerrm=''
579 d_strerror=''
580 d_sysernlst=''
581 d_syserrlst=''
582 d_strftime=''
583 d_strtod=''
584 d_strtol=''
585 d_strtold=''
586 d_strtoll=''
587 d_strtoq=''
588 d_strtoul=''
589 d_strtoull=''
590 d_strtouq=''
591 d_strxfrm=''
592 d_symlink=''
593 d_syscall=''
594 d_syscallproto=''
595 d_sysconf=''
596 d_system=''
597 d_tcgetpgrp=''
598 d_tcsetpgrp=''
599 d_telldirproto=''
600 d_time=''
601 timetype=''
602 clocktype=''
603 d_times=''
604 d_truncate=''
605 d_tzname=''
606 d_u32align=''
607 d_ualarm=''
608 d_umask=''
609 d_semctl_semid_ds=''
610 d_semctl_semun=''
611 d_union_semun=''
612 d_usleep=''
613 d_usleepproto=''
614 d_ustat=''
615 d_vfork=''
616 usevfork=''
617 d_voidsig=''
618 signal_t=''
619 d_volatile=''
620 d_charvspr=''
621 d_vprintf=''
622 d_wait4=''
623 d_waitpid=''
624 d_wcstombs=''
625 d_wctomb=''
626 d_writev=''
627 dlext=''
628 cccdlflags=''
629 ccdlflags=''
630 dlsrc=''
631 ld=''
632 lddlflags=''
633 usedl=''
634 doublesize=''
635 ebcdic=''
636 fflushNULL=''
637 fflushall=''
638 fpossize=''
639 fpostype=''
640 gccosandvers=''
641 gccversion=''
642 gidformat=''
643 gidsign=''
644 gidsize=''
645 gidtype=''
646 groupstype=''
647 h_fcntl=''
648 h_sysfile=''
649 i_arpainet=''
650 db_hashtype=''
651 db_prefixtype=''
652 db_version_major=''
653 db_version_minor=''
654 db_version_patch=''
655 i_db=''
656 i_dbm=''
657 i_rpcsvcdbm=''
658 d_dirnamlen=''
659 direntrytype=''
660 i_dirent=''
661 i_dld=''
662 i_dlfcn=''
663 i_fcntl=''
664 i_float=''
665 i_gdbm=''
666 d_grpasswd=''
667 i_grp=''
668 i_iconv=''
669 i_ieeefp=''
670 i_inttypes=''
671 i_libutil=''
672 i_limits=''
673 i_locale=''
674 i_machcthr=''
675 i_malloc=''
676 i_math=''
677 i_memory=''
678 i_mntent=''
679 i_ndbm=''
680 i_netdb=''
681 i_neterrno=''
682 i_netinettcp=''
683 i_niin=''
684 i_sysin=''
685 i_poll=''
686 i_prot=''
687 i_pthread=''
688 d_pwage=''
689 d_pwchange=''
690 d_pwclass=''
691 d_pwcomment=''
692 d_pwexpire=''
693 d_pwgecos=''
694 d_pwpasswd=''
695 d_pwquota=''
696 i_pwd=''
697 i_sfio=''
698 i_shadow=''
699 i_socks=''
700 i_stddef=''
701 i_stdlib=''
702 i_string=''
703 strings=''
704 i_sunmath=''
705 i_sysaccess=''
706 i_sysdir=''
707 i_sysfile=''
708 d_voidtty=''
709 i_bsdioctl=''
710 i_sysfilio=''
711 i_sysioctl=''
712 i_syssockio=''
713 i_syslog=''
714 i_sysmman=''
715 i_sysmode=''
716 i_sysmount=''
717 i_sysndir=''
718 i_sysparam=''
719 i_sysresrc=''
720 i_syssecrt=''
721 i_sysselct=''
722 i_sysstat=''
723 i_sysstatfs=''
724 i_sysstatvfs=''
725 i_systimes=''
726 i_systypes=''
727 i_sysuio=''
728 i_sysun=''
729 i_sysutsname=''
730 i_sysvfs=''
731 i_syswait=''
732 i_sgtty=''
733 i_termio=''
734 i_termios=''
735 i_systime=''
736 i_systimek=''
737 i_time=''
738 timeincl=''
739 i_unistd=''
740 i_ustat=''
741 i_utime=''
742 i_values=''
743 i_stdarg=''
744 i_varargs=''
745 i_varhdr=''
746 i_vfork=''
747 inc_version_list=''
748 inc_version_list_init=''
749 installprefix=''
750 installprefixexp=''
751 installstyle=''
752 installusrbinperl=''
753 intsize=''
754 longsize=''
755 shortsize=''
756 issymlink=''
757 libc=''
758 ldlibpthname=''
759 libperl=''
760 shrpenv=''
761 useshrplib=''
762 glibpth=''
763 libpth=''
764 loclibpth=''
765 plibpth=''
766 xlibpth=''
767 ignore_versioned_solibs=''
768 libs=''
769 libsdirs=''
770 libsfiles=''
771 libsfound=''
772 libspath=''
773 lns=''
774 d_PRIEUldbl=''
775 d_PRIFUldbl=''
776 d_PRIGUldbl=''
777 d_PRIeldbl=''
778 d_PRIfldbl=''
779 d_PRIgldbl=''
780 d_SCNfldbl=''
781 sPRIEUldbl=''
782 sPRIFUldbl=''
783 sPRIGUldbl=''
784 sPRIeldbl=''
785 sPRIfldbl=''
786 sPRIgldbl=''
787 sSCNfldbl=''
788 lseeksize=''
789 lseektype=''
790 make_set_make=''
791 d_mymalloc=''
792 freetype=''
793 mallocobj=''
794 mallocsrc=''
795 malloctype=''
796 usemymalloc=''
797 installman1dir=''
798 man1dir=''
799 man1direxp=''
800 man1ext=''
801 installman3dir=''
802 man3dir=''
803 man3direxp=''
804 man3ext=''
805 modetype=''
806 multiarch=''
807 mydomain=''
808 myhostname=''
809 phostname=''
810 c=''
811 n=''
812 d_eofnblk=''
813 eagain=''
814 o_nonblock=''
815 rd_nodata=''
816 need_va_copy=''
817 netdb_hlen_type=''
818 netdb_host_type=''
819 netdb_name_type=''
820 netdb_net_type=''
821 groupcat=''
822 hostcat=''
823 passcat=''
824 orderlib=''
825 ranlib=''
826 d_perl_otherlibdirs=''
827 otherlibdirs=''
828 package=''
829 spackage=''
830 pager=''
831 api_revision=''
832 api_subversion=''
833 api_version=''
834 api_versionstring=''
835 patchlevel=''
836 perl_patchlevel=''
837 revision=''
838 subversion=''
839 version=''
840 perl5=''
841 perladmin=''
842 perlpath=''
843 d_nv_preserves_uv=''
844 d_nv_preserves_uv_bits=''
845 i16size=''
846 i16type=''
847 i32size=''
848 i32type=''
849 i64size=''
850 i64type=''
851 i8size=''
852 i8type=''
853 ivsize=''
854 ivtype=''
855 nvsize=''
856 nvtype=''
857 u16size=''
858 u16type=''
859 u32size=''
860 u32type=''
861 u64size=''
862 u64type=''
863 u8size=''
864 u8type=''
865 uvsize=''
866 uvtype=''
867 ivdformat=''
868 nvEUformat=''
869 nvFUformat=''
870 nvGUformat=''
871 nveformat=''
872 nvfformat=''
873 nvgformat=''
874 uvXUformat=''
875 uvoformat=''
876 uvuformat=''
877 uvxformat=''
878 pidtype=''
879 prefix=''
880 prefixexp=''
881 installprivlib=''
882 privlib=''
883 privlibexp=''
884 prototype=''
885 ptrsize=''
886 d_PRIXU64=''
887 d_PRId64=''
888 d_PRIi64=''
889 d_PRIo64=''
890 d_PRIu64=''
891 d_PRIx64=''
892 sPRIXU64=''
893 sPRId64=''
894 sPRIi64=''
895 sPRIo64=''
896 sPRIu64=''
897 sPRIx64=''
898 d_quad=''
899 quadkind=''
900 quadtype=''
901 uquadtype=''
902 drand01=''
903 randbits=''
904 randfunc=''
905 randseedtype=''
906 seedfunc=''
907 installscript=''
908 scriptdir=''
909 scriptdirexp=''
910 selectminbits=''
911 selecttype=''
912 sh=''
913 sig_count=''
914 sig_name=''
915 sig_name_init=''
916 sig_num=''
917 sig_num_init=''
918 sig_size=''
919 installsitearch=''
920 sitearch=''
921 sitearchexp=''
922 installsitebin=''
923 sitebin=''
924 sitebinexp=''
925 installsitelib=''
926 sitelib=''
927 sitelib_stem=''
928 sitelibexp=''
929 siteprefix=''
930 siteprefixexp=''
931 sizesize=''
932 sizetype=''
933 so=''
934 socksizetype=''
935 sharpbang=''
936 shsharp=''
937 spitshell=''
938 src=''
939 ssizetype=''
940 startperl=''
941 startsh=''
942 stdchar=''
943 d_stdio_stream_array=''
944 stdio_stream_array=''
945 sysman=''
946 trnl=''
947 uidformat=''
948 uidsign=''
949 uidsize=''
950 uidtype=''
951 archname64=''
952 use64bitall=''
953 use64bitint=''
954 ccflags_uselargefiles=''
955 ldflags_uselargefiles=''
956 libswanted_uselargefiles=''
957 uselargefiles=''
958 uselongdouble=''
959 usemorebits=''
960 usemultiplicity=''
961 nm_opt=''
962 nm_so_opt=''
963 runnm=''
964 usenm=''
965 useperlio=''
966 usesocks=''
967 d_oldpthreads=''
968 use5005threads=''
969 useithreads=''
970 usereentrant=''
971 usethreads=''
972 incpath=''
973 mips_type=''
974 usrinc=''
975 d_vendorarch=''
976 installvendorarch=''
977 vendorarch=''
978 vendorarchexp=''
979 d_vendorbin=''
980 installvendorbin=''
981 vendorbin=''
982 vendorbinexp=''
983 d_vendorlib=''
984 installvendorlib=''
985 vendorlib=''
986 vendorlib_stem=''
987 vendorlibexp=''
988 usevendorprefix=''
989 vendorprefix=''
990 vendorprefixexp=''
991 versiononly=''
992 defvoidused=''
993 voidflags=''
994 pm_apiversion=''
995 xs_apiversion=''
996 yacc=''
997 yaccflags=''
998 CONFIG=''
999
1000 define='define'
1001 undef='undef'
1002 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1003 rmlist=''
1004
1005 : We must find out about Eunice early
1006 eunicefix=':'
1007 if test -f /etc/unixtovms; then
1008         eunicefix=/etc/unixtovms
1009 fi
1010 if test -f /etc/unixtovms.exe; then
1011         eunicefix=/etc/unixtovms.exe
1012 fi
1013
1014 i_whoami=''
1015 ccname=''
1016 ccversion=''
1017 perllibs=''
1018 : set useposix=false in your hint file to disable the POSIX extension.
1019 useposix=true
1020 : set useopcode=false in your hint file to disable the Opcode extension.
1021 useopcode=true
1022 : Trailing extension.  Override this in a hint file, if needed.
1023 _exe=''
1024 : Extra object files, if any, needed on this platform.
1025 archobjs=''
1026 archname=''
1027 : Possible local include directories to search.
1028 : Set locincpth to "" in a hint file to defeat local include searches.
1029 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1030 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1031 :
1032 : no include file wanted by default
1033 inclwanted=''
1034
1035 groupstype=''
1036 libnames=''
1037 : change the next line if compiling for Xenix/286 on Xenix/386
1038 xlibpth='/usr/lib/386 /lib/386'
1039 : Possible local library directories to search.
1040 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1041 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1042
1043 : general looking path for locating libraries
1044 glibpth="/lib /usr/lib $xlibpth"
1045 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1046 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1047 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1048
1049 : Private path used by Configure to find libraries.  Its value
1050 : is prepended to libpth. This variable takes care of special
1051 : machines, like the mips.  Usually, it should be empty.
1052 plibpth=''
1053
1054 : default library list
1055 libswanted=''
1056 : some systems want to use only the non-versioned libso:s
1057 ignore_versioned_solibs=''
1058 archname64=''
1059 ccflags_uselargefiles=''
1060 ldflags_uselargefiles=''
1061 libswanted_uselargefiles=''
1062 : set usemultiplicity on the Configure command line to enable multiplicity.
1063 : set usesocks on the Configure command line to enable socks.
1064 : set usethreads on the Configure command line to enable threads.
1065 usereentrant='undef'
1066 : full support for void wanted by default
1067 defvoidused=15
1068
1069 : List of libraries we want.
1070 : If anyone needs -lnet, put it in a hint file.
1071 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1072 libswanted="$libswanted dld ld sun m c cposix posix"
1073 libswanted="$libswanted ndir dir crypt sec"
1074 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1075 : We probably want to search /usr/shlib before most other libraries.
1076 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1077 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1078 glibpth="/usr/shlib $glibpth"
1079 : Do not use vfork unless overridden by a hint file.
1080 usevfork=false
1081
1082 : Find the basic shell for Bourne shell scripts
1083 case "$sh" in
1084 '')
1085         case "$SYSTYPE" in
1086         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1087         *) xxx='/bin/sh';;
1088         esac
1089         if test -f "$xxx"; then
1090                 sh="$xxx"
1091         else
1092                 : Build up a list and do a single loop so we can 'break' out.
1093                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1094                 for xxx in sh bash ksh pdksh ash; do
1095                         for p in $pth; do
1096                                 try="$try ${p}/${xxx}"
1097                         done
1098                 done
1099                 for xxx in $try; do
1100                         if test -f "$xxx"; then
1101                                 sh="$xxx";
1102                                 break
1103                         elif test -f "$xxx.exe"; then
1104                                 sh="$xxx";
1105                                 break
1106                         fi
1107                 done
1108         fi
1109         ;;
1110 esac
1111
1112 case "$sh" in
1113 '')     cat <<EOM >&2
1114 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1115
1116 Usually it's in /bin/sh.  How did you even get this far?
1117 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1118 we'll try to straighten this all out.
1119 EOM
1120         exit 1
1121         ;;
1122 esac
1123
1124 : see if sh knows # comments
1125 if `$sh -c '#' >/dev/null 2>&1`; then
1126         shsharp=true
1127         spitshell=cat
1128         xcat=/bin/cat
1129         test -f $xcat || xcat=/usr/bin/cat
1130         echo "#!$xcat" >sharp
1131         $eunicefix sharp
1132         chmod +x sharp
1133         ./sharp > today
1134         if test -s today; then
1135                 sharpbang='#!'
1136         else
1137                 echo "#! $xcat" > sharp
1138                 $eunicefix sharp
1139                 chmod +x sharp
1140                 ./sharp > today
1141                 if test -s today; then
1142                         sharpbang='#! '
1143                 else
1144                         sharpbang=': use '
1145                 fi
1146         fi
1147 else
1148         echo " "
1149         echo "Your $sh doesn't grok # comments--I will strip them later on."
1150         shsharp=false
1151         cd ..
1152         echo "exec grep -v '^[  ]*#'" >spitshell
1153         chmod +x spitshell
1154         $eunicefix spitshell
1155         spitshell=`pwd`/spitshell
1156         cd UU
1157         echo "I presume that if # doesn't work, #! won't work either!"
1158         sharpbang=': use '
1159 fi
1160 rm -f sharp today
1161
1162 : figure out how to guarantee sh startup
1163 case "$startsh" in
1164 '') startsh=${sharpbang}${sh} ;;
1165 *)
1166 esac
1167 cat >sharp <<EOSS
1168 $startsh
1169 set abc
1170 test "$?abc" != 1
1171 EOSS
1172
1173 chmod +x sharp
1174 $eunicefix sharp
1175 if ./sharp; then
1176         : echo "Yup, it does."
1177 else
1178         echo "Hmm... '$startsh' does not guarantee sh startup..."
1179         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1180 fi
1181 rm -f sharp
1182
1183
1184 : Save command line options in file UU/cmdline.opt for later use in
1185 : generating config.sh.
1186 cat > cmdline.opt <<EOSH
1187 # Configure command line arguments.
1188 config_arg0='$0'
1189 config_args='$*'
1190 config_argc=$#
1191 EOSH
1192 argn=1
1193 for arg in "$@"; do
1194         cat >>cmdline.opt <<EOSH
1195 config_arg$argn='$arg'
1196 EOSH
1197         argn=`expr $argn + 1`
1198 done
1199
1200 : produce awk script to parse command line options
1201 cat >options.awk <<'EOF'
1202 BEGIN {
1203         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1204
1205         len = length(optstr);
1206         for (i = 1; i <= len; i++) {
1207                 c = substr(optstr, i, 1);
1208                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1209                 if (a == ":") {
1210                         arg[c] = 1;
1211                         i++;
1212                 }
1213                 opt[c] = 1;
1214         }
1215 }
1216 {
1217         expect = 0;
1218         str = $0;
1219         if (substr(str, 1, 1) != "-") {
1220                 printf("'%s'\n", str);
1221                 next;
1222         }
1223         len = length($0);
1224         for (i = 2; i <= len; i++) {
1225                 c = substr(str, i, 1);
1226                 if (!opt[c]) {
1227                         printf("-%s\n", substr(str, i));
1228                         next;
1229                 }
1230                 printf("-%s\n", c);
1231                 if (arg[c]) {
1232                         if (i < len)
1233                                 printf("'%s'\n", substr(str, i + 1));
1234                         else
1235                                 expect = 1;
1236                         next;
1237                 }
1238         }
1239 }
1240 END {
1241         if (expect)
1242                 print "?";
1243 }
1244 EOF
1245
1246 : process the command line options
1247 set X `for arg in "$@"; do echo "X$arg"; done |
1248         sed -e s/X// | awk -f options.awk`
1249 eval "set $*"
1250 shift
1251 rm -f options.awk
1252
1253 : set up default values
1254 fastread=''
1255 reuseval=false
1256 config_sh=''
1257 alldone=''
1258 error=''
1259 silent=''
1260 extractsh=''
1261 override=''
1262 knowitall=''
1263 rm -f optdef.sh posthint.sh
1264 cat >optdef.sh <<EOS
1265 $startsh
1266 EOS
1267
1268
1269 : option parsing
1270 while test $# -gt 0; do
1271         case "$1" in
1272         -d) shift; fastread=yes;;
1273         -e) shift; alldone=cont;;
1274         -f)
1275                 shift
1276                 cd ..
1277                 if test -r "$1"; then
1278                         config_sh="$1"
1279                 else
1280                         echo "$me: cannot read config file $1." >&2
1281                         error=true
1282                 fi
1283                 cd UU
1284                 shift;;
1285         -h) shift; error=true;;
1286         -r) shift; reuseval=true;;
1287         -s) shift; silent=true; realsilent=true;;
1288         -E) shift; alldone=exit;;
1289         -K) shift; knowitall=true;;
1290         -O) shift; override=true;;
1291         -S) shift; silent=true; extractsh=true;;
1292         -D)
1293                 shift
1294                 case "$1" in
1295                 *=)
1296                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1297                         echo "$me: ignoring -D $1" >&2
1298                         ;;
1299                 *=*) echo "$1" | \
1300                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1301                 *) echo "$1='define'" >> optdef.sh;;
1302                 esac
1303                 shift
1304                 ;;
1305         -U)
1306                 shift
1307                 case "$1" in
1308                 *=) echo "$1" >> optdef.sh;;
1309                 *=*)
1310                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1311                         echo "$me: ignoring -U $1" >&2
1312                         ;;
1313                 *) echo "$1='undef'" >> optdef.sh;;
1314                 esac
1315                 shift
1316                 ;;
1317         -A)
1318             shift
1319             xxx=''
1320             yyy="$1"
1321             zzz=''
1322             uuu=undef
1323             case "$yyy" in
1324             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1325                  case "$zzz" in
1326                  *:*) zzz='' ;;
1327                  *)   xxx=append
1328                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1329                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1330                  esac
1331                  ;;
1332             esac
1333             case "$xxx" in
1334             '')  case "$yyy" in
1335                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1336                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1337                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1338                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1339                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1340                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1341                  esac
1342                  ;;       
1343             esac
1344             case "$xxx" in
1345             append)
1346                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1347             clear)
1348                 echo "$yyy=''"                  >> posthint.sh ;;
1349             define)
1350                 case "$zzz" in
1351                 '') zzz=define ;;
1352                 esac
1353                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1354             eval)
1355                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1356             prepend)
1357                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1358             undef)
1359                 case "$zzz" in
1360                 '') zzz="$uuu" ;;
1361                 esac
1362                 echo "$yyy=$zzz"                >> posthint.sh ;;
1363             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1364             esac
1365             shift
1366             ;;
1367         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1368             exit 0;;
1369         --) break;;
1370         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1371         *) break;;
1372         esac
1373 done
1374
1375 case "$error" in
1376 true)
1377         cat >&2 <<EOM
1378 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1379                  [-U symbol] [-U symbol=] [-A command:symbol...]
1380   -d : use defaults for all answers.
1381   -e : go on without questioning past the production of config.sh.
1382   -f : specify an alternate default configuration file.
1383   -h : print this help message and exit (with an error status).
1384   -r : reuse C symbols value if possible (skips costly nm extraction).
1385   -s : silent mode, only echoes questions and essential information.
1386   -D : define symbol to have some value:
1387          -D symbol         symbol gets the value 'define'
1388          -D symbol=value   symbol gets the value 'value'
1389   -E : stop at the end of questions, after having produced config.sh.
1390   -K : do not use unless you know what you are doing.
1391   -O : let -D and -U override definitions from loaded configuration file.
1392   -S : perform variable substitutions on all .SH files (can mix with -f)
1393   -U : undefine symbol:
1394          -U symbol    symbol gets the value 'undef'
1395          -U symbol=   symbol gets completely empty
1396   -A : manipulate symbol after the platform specific hints have been applied:
1397          -A symbol=value                append " "value to symbol
1398          -A append:symbol=value         append value to symbol
1399          -A define:symbol=value         define symbol to have value
1400          -A clear:symbol                define symbol to be ''
1401          -A define:symbol               define symbol to be 'define'
1402          -A eval:symbol=value           define symbol to be eval of value
1403          -A prepend:symbol=value        prepend value to symbol
1404          -A undef:symbol                define symbol to be 'undef'
1405          -A undef:symbol=               define symbol to be ''
1406   -V : print version number and exit (with a zero status).
1407 EOM
1408         exit 1
1409         ;;
1410 esac
1411
1412 : Sanity checks
1413 case "$fastread$alldone" in
1414 yescont|yesexit) ;;
1415 *)
1416         case "$extractsh" in
1417         true) ;;
1418         *)
1419                 if test ! -t 0; then
1420                         echo "Say 'sh Configure', not 'sh <Configure'"
1421                         exit 1
1422                 fi
1423                 ;;
1424         esac
1425         ;;
1426 esac
1427
1428 exec 4>&1
1429 case "$silent" in
1430 true) exec 1>/dev/null;;
1431 esac
1432
1433 : run the defines and the undefines, if any, but leave the file out there...
1434 touch optdef.sh
1435 . ./optdef.sh
1436 : create the posthint manipulation script and leave the file out there...
1437 touch posthint.sh
1438
1439 : set package name
1440 package=perl5
1441 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1442 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1443 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1444 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1445 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1446 esac
1447
1448 : Some greps do not return status, grrr.
1449 echo "grimblepritz" >grimble
1450 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1451         contains=contains
1452 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1453         contains=grep
1454 else
1455         contains=contains
1456 fi
1457 rm -f grimble
1458 : the following should work in any shell
1459 case "$contains" in
1460 contains*)
1461         echo " "
1462         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1463         cat >contains <<'EOSS'
1464 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1465 EOSS
1466 chmod +x contains
1467 esac
1468
1469 : Find the path to the source tree
1470 case "$src" in
1471 '') case "$0" in
1472     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1473          case "$src" in
1474          /*)    ;;
1475          .)     ;;
1476          *)     src=`cd ../$src && pwd` ;;
1477          esac
1478          ;;
1479     *)   src='.';;
1480     esac;;
1481 esac
1482 case "$src" in
1483 '')     src=/
1484         rsrc=/
1485         ;;
1486 /*) rsrc="$src";;
1487 *) rsrc="../$src";;
1488 esac
1489 if test -f $rsrc/Configure && \
1490         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1491 then
1492    : found it, so we are ok.
1493 else
1494         rsrc=''
1495         for src in . .. ../.. ../../.. ../../../..; do
1496                 if test -f ../$src/Configure && \
1497                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1498                 then
1499                         rsrc=../$src
1500                         break
1501                 fi
1502         done
1503 fi
1504 case "$rsrc" in
1505 '')
1506         cat <<EOM >&4
1507
1508 Sorry, I can't seem to locate the source dir for $package.  Please start
1509 Configure with an explicit path -- i.e. /some/path/Configure.
1510
1511 EOM
1512         exit 1
1513         ;;
1514 ../.)   rsrc='..';;
1515 *)
1516         echo " "
1517         echo "Sources for $package found in \"$src\"." >&4
1518         ;;
1519 esac
1520
1521 : script used to extract .SH files with variable substitutions
1522 cat >extract <<'EOS'
1523 PERL_CONFIG_SH=true
1524 echo "Doing variable substitutions on .SH files..."
1525 if test -f MANIFEST; then
1526         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1527 else
1528         echo "(Looking for .SH files under the source directory.)"
1529         set x `(cd $src; find . -name "*.SH" -print)`
1530 fi
1531 shift
1532 case $# in
1533 0) set x `(cd $src; echo *.SH)`; shift;;
1534 esac
1535 if test ! -f $src/$1; then
1536         shift
1537 fi
1538 mkdir_p='
1539 name=$1;
1540 create="";
1541 while test $name; do
1542         if test ! -d "$name"; then
1543                 create="$name $create";
1544                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1545                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1546         else
1547                 name="";
1548         fi;
1549 done;
1550 for file in $create; do
1551         mkdir $file;
1552 done
1553 '
1554 for file in $*; do
1555         case "$src" in
1556         ".")
1557                 case "$file" in
1558                 */*)
1559                         dir=`expr X$file : 'X\(.*\)/'`
1560                         file=`expr X$file : 'X.*/\(.*\)'`
1561                         (cd $dir && . ./$file)
1562                         ;;
1563                 *)
1564                         . ./$file
1565                         ;;
1566                 esac
1567                 ;;
1568         *)
1569                 case "$file" in
1570                 */*)
1571                         dir=`expr X$file : 'X\(.*\)/'`
1572                         file=`expr X$file : 'X.*/\(.*\)'`
1573                         (set x $dir; shift; eval $mkdir_p)
1574                         sh <$src/$dir/$file
1575                         ;;
1576                 *)
1577                         sh <$src/$file
1578                         ;;
1579                 esac
1580                 ;;
1581         esac
1582 done
1583 if test -f $src/config_h.SH; then
1584         if test ! -f config.h; then
1585         : oops, they left it out of MANIFEST, probably, so do it anyway.
1586         . $src/config_h.SH
1587         fi
1588 fi
1589 EOS
1590
1591 : extract files and exit if asked to do so
1592 case "$extractsh" in
1593 true)
1594         case "$realsilent" in
1595         true) ;;
1596         *) exec 1>&4;;
1597         esac
1598         case "$config_sh" in
1599         '') config_sh='config.sh';;
1600         esac
1601         echo " "
1602         echo "Fetching answers from $config_sh..."
1603         cd ..
1604         . $config_sh
1605         test "$override" && . ./optdef.sh
1606         echo " "
1607         . UU/extract
1608         rm -rf UU
1609         echo "Extraction done."
1610         exit 0
1611         ;;
1612 esac
1613
1614 : Eunice requires " " instead of "", can you believe it
1615 echo " "
1616 : Here we go...
1617 echo "Beginning of configuration questions for $package."
1618
1619 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1620
1621 : first determine how to suppress newline on echo command
1622 echo " "
1623 echo "Checking echo to see how to suppress newlines..."
1624 (echo "hi there\c" ; echo " ") >.echotmp
1625 if $contains c .echotmp >/dev/null 2>&1 ; then
1626         echo "...using -n."
1627         n='-n'
1628         c=''
1629 else
1630         cat <<'EOM'
1631 ...using \c
1632 EOM
1633         n=''
1634         c='\c'
1635 fi
1636 echo $n "The star should be here-->$c"
1637 echo '*'
1638 rm -f .echotmp
1639
1640 : Now test for existence of everything in MANIFEST
1641 echo " "
1642 if test -f $rsrc/MANIFEST; then
1643         echo "First let's make sure your kit is complete.  Checking..." >&4
1644         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1645         rm -f missing
1646         tmppwd=`pwd`
1647         for filelist in x??; do
1648                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1649         done
1650         if test -s missing; then
1651                 cat missing >&4
1652                 cat >&4 <<'EOM'
1653
1654 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1655
1656 You have the option of continuing the configuration process, despite the
1657 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1658 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1659 and contact the author (perlbug@perl.org).
1660
1661 EOM
1662                 echo $n "Continue? [n] $c" >&4
1663                 read ans
1664                 case "$ans" in
1665                 y*)
1666                         echo "Continuing..." >&4
1667                         rm -f missing
1668                         ;;
1669                 *)
1670                         echo "ABORTING..." >&4
1671                         kill $$
1672                         ;;
1673                 esac
1674         else
1675                 echo "Looks good..."
1676         fi
1677 else
1678         echo "There is no MANIFEST file.  I hope your kit is complete !"
1679 fi
1680 rm -f missing x??
1681
1682 echo " "
1683 : Find the appropriate value for a newline for tr
1684 if test -n "$DJGPP"; then
1685        trnl='\012'
1686 fi
1687 if test X"$trnl" = X; then
1688         case "`echo foo|tr '\n' x 2>/dev/null`" in
1689         foox) trnl='\n' ;;
1690         esac
1691 fi
1692 if test X"$trnl" = X; then
1693         case "`echo foo|tr '\012' x 2>/dev/null`" in
1694         foox) trnl='\012' ;;
1695         esac
1696 fi
1697 if test X"$trnl" = X; then
1698         cat <<EOM >&2
1699
1700 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1701
1702 EOM
1703         exit 1
1704 fi
1705
1706 : compute the number of columns on the terminal for proper question formatting
1707 case "$COLUMNS" in
1708 '') COLUMNS='80';;
1709 esac
1710
1711 : set up the echo used in my read
1712 myecho="case \"\$xxxm\" in
1713 '') echo $n \"\$rp $c\" >&4;;
1714 *) case \"\$rp\" in
1715         '') echo $n \"[\$xxxm] $c\";;
1716         *)
1717                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1718                         echo \"\$rp\" >&4
1719                         echo $n \"[\$xxxm] $c\" >&4
1720                 else
1721                         echo $n \"\$rp [\$xxxm] $c\" >&4
1722                 fi
1723                 ;;
1724         esac;;
1725 esac"
1726
1727 : now set up to do reads with possible shell escape and default assignment
1728 cat <<EOSC >myread
1729 $startsh
1730 xxxm=\$dflt
1731 $myecho
1732 ans='!'
1733 case "\$fastread" in
1734 yes) case "\$dflt" in
1735         '') ;;
1736         *) ans='';
1737                 case "\$silent-\$rp" in
1738                 true-) ;;
1739                 *) echo " " >&4;;
1740                 esac;;
1741         esac;;
1742 *) case "\$silent" in
1743         true) case "\$rp" in
1744                 '') ans='';;
1745                 esac;;
1746         esac;;
1747 esac
1748 while expr "X\$ans" : "X!" >/dev/null; do
1749         read answ
1750         set x \$xxxm
1751         shift
1752         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1753         case  "\$answ" in
1754         "!")
1755                 sh 1>&4
1756                 echo " "
1757                 $myecho
1758                 ;;
1759         !*)
1760                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1761                 shift
1762                 sh 1>&4 -c "\$*"
1763                 echo " "
1764                 $myecho
1765                 ;;
1766         "\$ans")
1767                 case "\$ans" in
1768                 \\&*)
1769                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1770                         shift
1771                         case "\$1" in
1772                         -d)
1773                                 fastread=yes
1774                                 echo "(OK, I'll run with -d after this question.)" >&4
1775                                 ;;
1776                         -*)
1777                                 echo "*** Sorry, \$1 not supported yet." >&4
1778                                 ;;
1779                         esac
1780                         $myecho
1781                         ans=!
1782                         ;;
1783                 esac;;
1784         *)
1785                 case "\$aok" in
1786                 y)
1787                         echo "*** Substitution done -- please confirm."
1788                         xxxm="\$ans"
1789                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1790                         xxxm="\$ans"
1791                         ans=!
1792                         ;;
1793                 *)
1794                         echo "*** Error -- try again."
1795                         ans=!
1796                         ;;
1797                 esac
1798                 $myecho
1799                 ;;
1800         esac
1801         case "\$ans\$xxxm\$nostick" in
1802         '')
1803                 ans=!
1804                 $myecho
1805                 ;;
1806         esac
1807 done
1808 case "\$ans" in
1809 '') ans="\$xxxm";;
1810 esac
1811 EOSC
1812
1813 : create .config dir to save info across Configure sessions
1814 test -d ../.config || mkdir ../.config
1815 cat >../.config/README <<EOF
1816 This directory created by Configure to save information that should
1817 persist across sessions for $package.
1818
1819 You may safely delete it if you wish.
1820 EOF
1821
1822 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1823 case "$usedevel" in
1824 $define|true|[yY]*) ;;
1825 *) case "$xversion" in
1826    *[13579])
1827         cat >&4 <<EOH
1828 *** WHOA THERE!!! ***
1829
1830     This is an UNSTABLE DEVELOPMENT release.
1831     The version of this $package distribution is $xversion, that is, odd,
1832     (as opposed to even) and that signifies a development release.
1833     If you want a maintenance release, you want an even-numbered version.
1834
1835     Do ***NOT*** install this into production use.
1836     Data corruption and crashes are possible.
1837
1838     It is most seriously suggested that you do not continue any further
1839     unless you want to help in developing and debugging Perl.
1840
1841     If you *still* want to build perl, you can answer 'y' now,
1842     or pass -Dusedevel to Configure.
1843
1844 EOH
1845         rp='Do you really want to continue?'
1846         dflt='n'
1847         . ./myread
1848         case "$ans" in
1849         [yY]) echo >&4 "Okay, continuing."
1850               usedevel="$define" ;;
1851         *) echo >&4 "Okay, bye."
1852            exit 1
1853            ;;
1854         esac
1855         ;;
1856     esac
1857     ;;
1858 esac
1859 case "$usedevel" in
1860 $define|true|[yY]*)
1861         case "$versiononly" in
1862         '') versiononly="$define" ;;
1863         esac
1864         case "$installusrbinperl" in
1865         '') installusrbinperl="$undef" ;;
1866         esac
1867         ;;
1868 esac
1869
1870 : general instructions
1871 needman=true
1872 firsttime=true
1873 user=`(logname) 2>/dev/null`
1874 case "$user" in
1875 '') user=`whoami 2>&1`;;
1876 esac
1877 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1878         firsttime=false
1879         echo " "
1880         rp='Would you like to see the instructions?'
1881         dflt=n
1882         . ./myread
1883         case "$ans" in
1884         [yY]*) ;;
1885         *) needman=false;;
1886         esac
1887 fi
1888 if $needman; then
1889         cat <<EOH
1890
1891 This installation shell script will examine your system and ask you questions
1892 to determine how the perl5 package should be installed. If you get
1893 stuck on a question, you may use a ! shell escape to start a subshell or
1894 execute a command.  Many of the questions will have default answers in square
1895 brackets; typing carriage return will give you the default.
1896
1897 On some of the questions which ask for file or directory names you are allowed
1898 to use the ~name construct to specify the login directory belonging to "name",
1899 even if you don't have a shell which knows about that.  Questions where this is
1900 allowed will be marked "(~name ok)".
1901
1902 EOH
1903         rp=''
1904         dflt='Type carriage return to continue'
1905         . ./myread
1906         cat <<'EOH'
1907
1908 The prompter used in this script allows you to use shell variables and
1909 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1910 in the default answer, as if the default line was a set of arguments given to a
1911 script shell.  This means you may also use $* to repeat the whole default line,
1912 so you do not have to re-type everything to add something to the default.
1913
1914 Everytime there is a substitution, you will have to confirm.  If there is an
1915 error (e.g. an unmatched backtick), the default answer will remain unchanged
1916 and you will be prompted again.
1917
1918 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1919 the questions and use the computed defaults (or the previous answers if there
1920 was already a config.sh file). Type 'Configure -h' for a list of options.
1921 You may also start interactively and then answer '& -d' at any prompt to turn
1922 on the non-interactive behaviour for the remainder of the execution.
1923
1924 EOH
1925         . ./myread
1926         cat <<EOH
1927
1928 Much effort has been expended to ensure that this shell script will run on any
1929 Unix system.  If despite that it blows up on yours, your best bet is to edit
1930 Configure and run it again.  If you can't run Configure for some reason,
1931 you'll have to generate a config.sh file by hand.  Whatever problems you
1932 have, let me (perlbug@perl.org) know how I blew it.
1933
1934 This installation script affects things in two ways:
1935
1936 1) it may do direct variable substitutions on some of the files included
1937    in this kit.
1938 2) it builds a config.h file for inclusion in C programs.  You may edit
1939    any of these files as the need arises after running this script.
1940
1941 If you make a mistake on a question, there is no easy way to back up to it
1942 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1943 files.  Configure will offer to let you do this before it runs the SH files.
1944
1945 EOH
1946         dflt='Type carriage return to continue'
1947         . ./myread
1948         case "$firsttime" in
1949         true) echo $user >>../.config/instruct;;
1950         esac
1951 fi
1952
1953 : find out where common programs are
1954 echo " "
1955 echo "Locating common programs..." >&4
1956 cat <<EOSC >loc
1957 $startsh
1958 case \$# in
1959 0) exit 1;;
1960 esac
1961 thing=\$1
1962 shift
1963 dflt=\$1
1964 shift
1965 for dir in \$*; do
1966         case "\$thing" in
1967         .)
1968         if test -d \$dir/\$thing; then
1969                 echo \$dir
1970                 exit 0
1971         fi
1972         ;;
1973         *)
1974         for thisthing in \$dir/\$thing; do
1975                 : just loop through to pick last item
1976         done
1977         if test -f \$thisthing; then
1978                 echo \$thisthing
1979                 exit 0
1980         elif test -f \$dir/\$thing.exe; then
1981                 if test -n "$DJGPP"; then
1982                         echo \$dir/\$thing.exe
1983                 else
1984                         : on Eunice apparently
1985                         echo \$dir/\$thing
1986                 fi
1987                 exit 0
1988         fi
1989         ;;
1990         esac
1991 done
1992 echo \$dflt
1993 exit 1
1994 EOSC
1995 chmod +x loc
1996 $eunicefix loc
1997 loclist="
1998 awk
1999 cat
2000 comm
2001 cp
2002 echo
2003 expr
2004 grep
2005 ls
2006 make
2007 mkdir
2008 rm
2009 sed
2010 sort
2011 touch
2012 tr
2013 uniq
2014 "
2015 trylist="
2016 Mcc
2017 ar
2018 bison
2019 byacc
2020 cpp
2021 csh
2022 date
2023 egrep
2024 gzip
2025 less
2026 ln
2027 more
2028 nm
2029 nroff
2030 pg
2031 test
2032 uname
2033 zip
2034 "
2035 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2036 pth="$pth /lib /usr/lib"
2037 for file in $loclist; do
2038         eval xxx=\$$file
2039         case "$xxx" in
2040         /*|?:[\\/]*)
2041                 if test -f "$xxx"; then
2042                         : ok
2043                 else
2044                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2045                         xxx=`./loc $file $file $pth`
2046                 fi
2047                 ;;
2048         '') xxx=`./loc $file $file $pth`;;
2049         *) xxx=`./loc $xxx $xxx $pth`;;
2050         esac
2051         eval $file=$xxx
2052         eval _$file=$xxx
2053         case "$xxx" in
2054         /*)
2055                 echo $file is in $xxx.
2056                 ;;
2057         ?:[\\/]*)
2058                 echo $file is in $xxx.
2059                 ;;
2060         *)
2061                 echo "I don't know where '$file' is, and my life depends on it." >&4
2062                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2063                 exit 1
2064                 ;;
2065         esac
2066 done
2067 echo " "
2068 echo "Don't worry if any of the following aren't found..."
2069 say=offhand
2070 for file in $trylist; do
2071         eval xxx=\$$file
2072         case "$xxx" in
2073         /*|?:[\\/]*)
2074                 if test -f "$xxx"; then
2075                         : ok
2076                 else
2077                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2078                         xxx=`./loc $file $file $pth`
2079                 fi
2080                 ;;
2081         '') xxx=`./loc $file $file $pth`;;
2082         *) xxx=`./loc $xxx $xxx $pth`;;
2083         esac
2084         eval $file=$xxx
2085         eval _$file=$xxx
2086         case "$xxx" in
2087         /*)
2088                 echo $file is in $xxx.
2089                 ;;
2090         ?:[\\/]*)
2091                 echo $file is in $xxx.
2092                 ;;
2093         *)
2094                 echo "I don't see $file out there, $say."
2095                 say=either
2096                 ;;
2097         esac
2098 done
2099 case "$egrep" in
2100 egrep)
2101         echo "Substituting grep for egrep."
2102         egrep=$grep
2103         ;;
2104 esac
2105 case "$ln" in
2106 ln)
2107         echo "Substituting cp for ln."
2108         ln=$cp
2109         ;;
2110 esac
2111 case "$test" in
2112 test)
2113         echo "Hopefully test is built into your sh."
2114         ;;
2115 *)
2116         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2117                 echo "Using the test built into your sh."
2118                 test=test
2119                 _test=test
2120         fi
2121         ;;
2122 esac
2123 case "$echo" in
2124 echo)
2125         echo "Hopefully echo is built into your sh."
2126         ;;
2127 '') ;;
2128 *)
2129         echo " "
2130 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2131         $echo $n "hi there$c" >foo1
2132         echo $n "hi there$c" >foo2
2133         if cmp foo1 foo2 >/dev/null 2>&1; then
2134                 echo "They are compatible.  In fact, they may be identical."
2135         else
2136                 case "$n" in
2137                 '-n') n='' c='\c';;
2138                 *) n='-n' c='';;
2139                 esac
2140                 cat <<FOO
2141 They are not compatible!  You are probably running ksh on a non-USG system.
2142 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2143 have echo built in and we may have to run some Bourne shell scripts.  That
2144 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2145
2146 FOO
2147                 $echo $n "The star should be here-->$c"
2148                 $echo "*"
2149         fi
2150         $rm -f foo1 foo2
2151         ;;
2152 esac
2153
2154 cat <<EOS >checkcc
2155 $startsh
2156 EOS
2157 cat <<'EOSC' >>checkcc
2158 case "$cc" in
2159 '') ;;
2160 *)  $rm -f try try.*
2161     $cat >try.c <<EOM
2162 int main(int argc, char *argv[]) {
2163   return 0;
2164 }
2165 EOM
2166     if $cc -o try $ccflags $ldflags try.c; then
2167        :
2168     else
2169         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2170         despair=yes
2171         trygcc=yes
2172         case "$cc" in
2173         *gcc*) trygcc=no ;;
2174         esac
2175         case "`$cc -v -c try.c 2>&1`" in
2176         *gcc*) trygcc=no ;;
2177         esac
2178         if $test X"$trygcc" = Xyes; then
2179             if gcc -o try -c try.c; then
2180                 echo " "
2181                 echo "You seem to have a working gcc, though." >&4
2182                 rp="Would you like to use it?"
2183                 dflt=y
2184                 if $test -f myread; then
2185                     . ./myread
2186                 else
2187                     if $test -f UU/myread; then
2188                         . ./UU/myread
2189                     else
2190                         echo "Cannot find myread, sorry.  Aborting." >&2
2191                         exit 1
2192                     fi
2193                 fi  
2194                 case "$ans" in
2195                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2196                 esac
2197             fi
2198         fi
2199         if $test X"$despair" = Xyes; then
2200             $cat >&4 <<EOM
2201 You need to find a working C compiler.
2202 Either (purchase and) install the C compiler supplied by your OS vendor,
2203 or for a free C compiler try http://gcc.gnu.org/
2204 I cannot continue any further, aborting.
2205 EOM
2206             exit 1
2207         fi
2208     fi
2209     $rm -f try try.*
2210     ;;
2211 esac
2212 EOSC
2213
2214 : determine whether symbolic links are supported
2215 echo " "
2216 $touch blurfl
2217 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2218         echo "Symbolic links are supported." >&4
2219         lns="$ln -s"
2220 else
2221         echo "Symbolic links are NOT supported." >&4
2222         lns="$ln"
2223 fi
2224 $rm -f blurfl sym
2225
2226 : determine whether symbolic links are supported
2227 echo " "
2228 case "$lns" in
2229 *"ln -s")
2230         echo "Checking how to test for symbolic links..." >&4
2231         $lns blurfl sym
2232         if $test "X$issymlink" = X; then
2233                 sh -c "PATH= test -h sym" >/dev/null 2>&1
2234                 if test $? = 0; then
2235                         issymlink="test -h"
2236                 fi              
2237         fi
2238         if $test "X$issymlink" = X; then
2239                 if  $test -h >/dev/null 2>&1; then
2240                         issymlink="$test -h"
2241                         echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2242                 fi              
2243         fi
2244         if $test "X$issymlink" = X; then
2245                 if $test -L sym 2>/dev/null; then
2246                         issymlink="$test -L"
2247                 fi
2248         fi
2249         if $test "X$issymlink" != X; then
2250                 echo "You can test for symbolic links with '$issymlink'." >&4
2251         else
2252                 echo "I do not know how you can test for symbolic links." >&4
2253         fi
2254         $rm -f blurfl sym
2255         ;;
2256 *)      echo "No symbolic links, so not testing for their testing..." >&4
2257         ;;
2258 esac
2259 echo " "
2260
2261
2262 case "$mksymlinks" in
2263 $define|true|[yY]*)
2264         case "$src" in
2265         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2266                 exit 1
2267                 ;;
2268         *)      case "$lns:$issymlink" in
2269                 *"ln -s:"*"test -"?)
2270                         echo "Creating the symbolic links..." >&4
2271                         echo "(First creating the subdirectories...)" >&4
2272                         cd ..
2273                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2274                                 read directory
2275                                 test -z "$directory" && break
2276                                 mkdir -p $directory
2277                         done
2278                         # Sanity check 1.
2279                         if test ! -d t/base; then
2280                                 echo "Failed to create the subdirectories.  Aborting." >&4
2281                                 exit 1
2282                         fi
2283                         echo "(Then creating the symlinks...)" >&4
2284                         awk '{print $1}' $src/MANIFEST | while true; do
2285                                 read filename
2286                                 test -z "$filename" && break
2287                                 if test -f $filename; then
2288                                         if $issymlink $filename; then
2289                                                 rm -f $filename
2290                                         fi
2291                                 fi
2292                                 if test -f $filename; then
2293                                         echo "$filename already exists, not symlinking."
2294                                 else
2295                                         ln -s $src/$filename $filename
2296                                 fi
2297                         done
2298                         # Sanity check 2.
2299                         if test ! -f t/base/commonsense.t; then
2300                                 echo "Failed to create the symlinks.  Aborting." >&4
2301                                 exit 1
2302                         fi
2303                         cd UU
2304                         ;;
2305                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2306                         ;;
2307                 esac
2308                 ;;
2309         esac
2310         ;;
2311 esac
2312
2313
2314 case "$usecrosscompile" in
2315 $define|true|[yY]*)
2316         $echo "Cross-compiling..."
2317         croak=''
2318         case "$cc" in
2319         *-*-gcc) # A cross-compiling gcc, probably.
2320             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2321             ar=$targetarch-ar
2322             # leave out ld, choosing it is more complex
2323             nm=$targetarch-nm
2324             ranlib=$targetarch-ranlib
2325             $echo 'extern int foo;' > try.c
2326             set X `$cc -v -E perl.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2327             shift
2328             if $test $# -gt 0; then
2329                 incpth="$incpth $*"
2330                 incpth="$echo $incpth|$sed 's/^ //'"
2331                 echo "Guessing incpth $incpth" >&4
2332                 for i in $*; do
2333                     j=`$echo $i|$sed 's,/include$,/lib,'`
2334                     if $test -d $j; then
2335                         libpth="$libpth $j"
2336                     fi
2337                 done   
2338                 libpth="$echo $libpth|$sed 's/^ //'"
2339                 echo "Guessing libpth $libpth." >&4
2340             fi
2341             $rm -f try.c
2342             ;;
2343         esac
2344         case "$targetarch" in
2345         '') echo "Targetarch not defined." >&4; croak=y ;;
2346         *)  echo "Using targetarch $targetarch." >&4 ;;
2347         esac
2348         case "$incpth" in
2349         '') echo "Incpth not defined." >&4; croak=y ;;
2350         *)  echo "Using incpth $incpth." >&4 ;;
2351         esac
2352         case "$libpth" in
2353         '') echo "Libpth not defined." >&4; croak=y ;;
2354         *)  echo "Using libpth $libpth." >&4 ;;
2355         esac
2356         case "$usrinc" in
2357         '') for i in $incpth; do
2358                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2359                     usrinc=$i
2360                     echo "Guessing usrinc $usrinc." >&4
2361                     break
2362                 fi
2363             done
2364             case "$usrinc" in
2365             '') echo "Usrinc not defined." >&4; croak=y ;;
2366             esac
2367             ;;
2368         *)  echo "Using usrinc $usrinc." >&4 ;;
2369         esac
2370         case "$targethost" in
2371         '') echo "Targethost not defined." >&4; croak=y ;;
2372         *)  echo "Using targethost $targethost." >&4
2373         esac
2374         locincpth=' '
2375         loclibpth=' '
2376         case "$croak" in
2377         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2378         esac
2379         case "$src" in
2380         /*) run=$src/Cross/run
2381             to=$src/Cross/to
2382             from=$src/Cross/from
2383             ;;
2384         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2385             run=$pwd/Cross/run
2386             to=$pwd/Cross/to
2387             from=$pwd/Cross/from
2388             ;;
2389         esac
2390         case "$targetrun" in
2391         '') targetrun=ssh ;;
2392         esac
2393         case "$targetto" in
2394         '') targetto=scp ;;
2395         esac
2396         case "$targetfrom" in
2397         '') targetfrom=scp ;;
2398         esac
2399         run=$run-$targetrun
2400         to=$to-$targetto
2401         from=$from-$targetfrom
2402         case "$targetdir" in
2403         '')  targetdir=/tmp
2404              echo "Guessing targetdir $targetdir." >&4
2405              ;;
2406         esac
2407         case "$targetuser" in
2408         '')  targetuser=root
2409              echo "Guessing targetuser $targetuser." >&4
2410              ;;
2411         esac
2412         case "$targetfrom" in
2413         scp)    q=-q ;;
2414         *)      q='' ;;
2415         esac
2416         case "$targetrun" in
2417         ssh|rsh)
2418             cat >$run <<EOF
2419 #!/bin/sh
2420 exe=\$1
2421 shift
2422 $to \$exe
2423 $targetrun -l $targetuser $targethost "cd $targetdir && ./\$exe \$@"
2424 EOF
2425             ;;
2426         *)  echo "Unknown targetrun '$targetrun'" >&4
2427             exit 1
2428             ;;
2429         esac
2430         case "$targetto" in
2431         scp|rcp)
2432             cat >$to <<EOF
2433 #!/bin/sh
2434 for f in \$@
2435 do
2436   $targetto $q \$f $targetuser@$targethost:$targetdir/. || exit 1
2437 done
2438 exit 0
2439 EOF
2440             ;;
2441         cp) cat >$to <<EOF
2442 #!/bin/sh
2443 cp \$@ $targetdir/.
2444 EOF
2445             ;;
2446         *)  echo "Unknown targetto '$targetto'" >&4
2447             exit 1
2448             ;;
2449         esac
2450         case "$targetfrom" in
2451         scp|rcp)
2452           cat >$from <<EOF
2453 #!/bin/sh
2454 for f in \$@
2455 do
2456   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2457 done
2458 exit 0
2459 EOF
2460             ;;
2461         cp) cat >$from <<EOF
2462 #!/bin/sh
2463 for f in \$@
2464 do
2465   cp $targetdir/\$f . || exit 1
2466 done
2467 exit 0
2468 EOF
2469             ;;
2470         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2471             exit 1
2472             ;;
2473         esac
2474         if $test ! -f $run; then
2475             echo "Target 'run' script '$run' not found." >&4
2476         else
2477             chmod a+rx $run
2478         fi
2479         if $test ! -f $to; then
2480             echo "Target 'to' script '$to' not found." >&4
2481         else
2482             chmod a+rx $to
2483         fi
2484         if $test ! -f $from; then
2485             echo "Target 'from' script '$from' not found." >&4
2486         else
2487             chmod a+rx $from
2488         fi
2489         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2490             exit 1
2491         fi
2492         cat >&4 <<EOF
2493 Using '$run' for remote execution, and '$from' and '$to'
2494 for remote file transfer.
2495 EOF
2496         ;;
2497 *)      run=''
2498         to=:
2499         from=:
2500         usecrosscompile='undef'
2501         targetarch=''
2502         ;;
2503 esac
2504
2505 : see whether [:lower:] and [:upper:] are supported character classes
2506 echo " "
2507 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2508 ABYZ)
2509         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2510         up='[:upper:]'
2511         low='[:lower:]'
2512         ;;
2513 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2514         # (0xc9 and 0xd1), therefore that is a nice testing point.
2515         if test "X$up" = X -o "X$low" = X; then
2516             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2517             ij) up='[A-Z]'
2518                 low='[a-z]'
2519                 ;;
2520             esac
2521         fi
2522         if test "X$up" = X -o "X$low" = X; then
2523             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2524             ij) up='A-Z'
2525                 low='a-z'
2526                 ;;
2527             esac
2528         fi
2529         if test "X$up" = X -o "X$low" = X; then
2530             case "`echo IJ | od -x 2>/dev/null`" in
2531             *C9D1*|*c9d1*)
2532                 echo "Hey, this might be EBCDIC." >&4
2533                 if test "X$up" = X -o "X$low" = X; then
2534                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2535                     ij) up='[A-IJ-RS-Z]'
2536                         low='[a-ij-rs-z]'
2537                         ;;
2538                     esac
2539                 fi
2540                 if test "X$up" = X -o "X$low" = X; then
2541                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2542                     ij) up='A-IJ-RS-Z'
2543                         low='a-ij-rs-z'
2544                         ;;
2545                     esac
2546                 fi
2547                 ;;
2548             esac
2549         fi
2550 esac
2551 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2552 ij)
2553     echo "Using $up and $low to convert case." >&4
2554     ;;
2555 *)
2556     echo "I don't know how to translate letters from upper to lower case." >&4
2557     echo "Your tr is not acting any way I know of." >&4
2558     exit 1
2559     ;;
2560 esac
2561 : set up the translation script tr, must be called with ./tr of course
2562 cat >tr <<EOSC
2563 $startsh
2564 case "\$1\$2" in
2565 '[A-Z][a-z]') exec $tr '$up' '$low';;
2566 '[a-z][A-Z]') exec $tr '$low' '$up';;
2567 esac
2568 exec $tr "\$@"
2569 EOSC
2570 chmod +x tr
2571 $eunicefix tr
2572
2573 : Try to determine whether config.sh was made on this system
2574 case "$config_sh" in
2575 '')
2576 myuname=`$uname -a 2>/dev/null`
2577 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2578 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2579 # because the A-Z/a-z are not consecutive.
2580 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2581         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2582 newmyuname="$myuname"
2583 dflt=n
2584 case "$knowitall" in
2585 '')
2586         if test -f ../config.sh; then
2587                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2588                         eval "`grep myuname= ../config.sh`"
2589                 fi
2590                 if test "X$myuname" = "X$newmyuname"; then
2591                         dflt=y
2592                 fi
2593         fi
2594         ;;
2595 *) dflt=y;;
2596 esac
2597
2598 : Get old answers from old config file if Configure was run on the
2599 : same system, otherwise use the hints.
2600 hint=default
2601 cd ..
2602 if test -f config.sh; then
2603         echo " "
2604         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2605         . UU/myread
2606         case "$ans" in
2607         n*|N*) echo "OK, I'll ignore it."
2608                 mv config.sh config.sh.old
2609                 myuname="$newmyuname"
2610                 ;;
2611         *)  echo "Fetching default answers from your old config.sh file..." >&4
2612                 tmp_n="$n"
2613                 tmp_c="$c"
2614                 tmp_sh="$sh"
2615                 . ./config.sh
2616                 cp config.sh UU
2617                 n="$tmp_n"
2618                 c="$tmp_c"
2619                 : Older versions did not always set $sh.  Catch re-use of such
2620                 : an old config.sh.
2621                 case "$sh" in
2622                 '') sh="$tmp_sh" ;;
2623                 esac
2624                 hint=previous
2625                 ;;
2626         esac
2627 fi
2628 . ./UU/checkcc
2629 if test ! -f config.sh; then
2630         $cat <<EOM
2631
2632 First time through, eh?  I have some defaults handy for some systems
2633 that need some extra help getting the Configure answers right:
2634
2635 EOM
2636         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2637         dflt=''
2638         : Half the following guesses are probably wrong... If you have better
2639         : tests or hints, please send them to perlbug@perl.org
2640         : The metaconfig authors would also appreciate a copy...
2641         $test -f /irix && osname=irix
2642         $test -f /xenix && osname=sco_xenix
2643         $test -f /dynix && osname=dynix
2644         $test -f /dnix && osname=dnix
2645         $test -f /lynx.os && osname=lynxos
2646         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2647         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2648         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2649         $test -f /bin/mips && /bin/mips && osname=mips
2650         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2651                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2652         $test -d /usr/apollo/bin && osname=apollo
2653         $test -f /etc/saf/_sactab && osname=svr4
2654         $test -d /usr/include/minix && osname=minix
2655         if $test -d /MachTen -o -d /MachTen_Folder; then
2656                 osname=machten
2657                 if $test -x /sbin/version; then
2658                         osvers=`/sbin/version | $awk '{print $2}' |
2659                         $sed -e 's/[A-Za-z]$//'`
2660                 elif $test -x /usr/etc/version; then
2661                         osvers=`/usr/etc/version | $awk '{print $2}' |
2662                         $sed -e 's/[A-Za-z]$//'`
2663                 else
2664                         osvers="$2.$3"
2665                 fi
2666         fi
2667
2668         $test -f /sys/posix.dll &&
2669                 $test -f /usr/bin/what &&
2670                 set X `/usr/bin/what /sys/posix.dll` &&
2671                 $test "$3" = UWIN &&
2672                 osname=uwin &&
2673                 osvers="$5"
2674
2675         if $test -f $uname; then
2676                 set X $myuname
2677                 shift
2678
2679                 case "$5" in
2680                 fps*) osname=fps ;;
2681                 mips*)
2682                         case "$4" in
2683                         umips) osname=umips ;;
2684                         *) osname=mips ;;
2685                         esac;;
2686                 [23]100) osname=mips ;;
2687                 next*) osname=next ;;
2688                 i386*)
2689                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2690                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2691                                 osname='sco'
2692                                 osvers=$tmp
2693                         elif $test -f /etc/kconfig; then
2694                                 osname=isc
2695                                 if test "$lns" = "$ln -s"; then
2696                                         osvers=4
2697                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2698                                         osvers=3
2699                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2700                                         osvers=2
2701                                 fi
2702                         fi
2703                         tmp=''
2704                         ;;
2705                 pc*)
2706                         if test -n "$DJGPP"; then
2707                                 osname=dos
2708                                 osvers=djgpp
2709                         fi
2710                         ;;
2711                 esac
2712
2713                 case "$1" in
2714                 aix) osname=aix
2715                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2716                         case "$tmp" in
2717                         'not found') osvers="$4"."$3" ;;
2718                         '<3240'|'<>3240') osvers=3.2.0 ;;
2719                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2720                         '=3250'|'>3250') osvers=3.2.5 ;;
2721                         *) osvers=$tmp;;
2722                         esac
2723                         ;;
2724                 bsd386) osname=bsd386
2725                         osvers=`$uname -r`
2726                         ;;
2727                 cygwin*) osname=cygwin
2728                         osvers="$3"
2729                         ;;
2730                 *dc.osx) osname=dcosx
2731                         osvers="$3"
2732                         ;;
2733                 dnix) osname=dnix
2734                         osvers="$3"
2735                         ;;
2736                 domainos) osname=apollo
2737                         osvers="$3"
2738                         ;;
2739                 dgux) osname=dgux 
2740                         osvers="$3"
2741                         ;;
2742                 dynixptx*) osname=dynixptx
2743                         osvers=`echo "$4"|sed 's/^v//'`
2744                         ;;
2745                 freebsd) osname=freebsd 
2746                         osvers="$3" ;;
2747                 genix) osname=genix ;;
2748                 hp*) osname=hpux 
2749                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2750                         ;;
2751                 irix*) osname=irix
2752                         case "$3" in
2753                         4*) osvers=4 ;;
2754                         5*) osvers=5 ;;
2755                         *)      osvers="$3" ;;
2756                         esac
2757                         ;;
2758                 linux) osname=linux
2759                         case "$3" in
2760                         *)      osvers="$3" ;;
2761                         esac
2762                         ;;
2763                 MiNT) osname=mint
2764                         ;;
2765                 netbsd*) osname=netbsd
2766                         osvers="$3"
2767                         ;;
2768                 news-os) osvers="$3"
2769                         case "$3" in
2770                         4*) osname=newsos4 ;;
2771                         *) osname=newsos ;;
2772                         esac
2773                         ;;
2774                 next*) osname=next ;;
2775                 nonstop-ux) osname=nonstopux ;;
2776                 POSIX-BC | posix-bc ) osname=posix-bc
2777                         osvers="$3"
2778                         ;;
2779                 powerux | power_ux | powermax_os | powermaxos | \
2780                 powerunix | power_unix) osname=powerux
2781                         osvers="$3"
2782                         ;;
2783                 qnx) osname=qnx
2784                         osvers="$4"
2785                         ;;
2786                 solaris) osname=solaris
2787                         case "$3" in
2788                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2789                         *)      osvers="$3" ;;
2790                         esac
2791                         ;;
2792                 sunos) osname=sunos
2793                         case "$3" in
2794                         5*) osname=solaris
2795                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2796                         *)      osvers="$3" ;;
2797                         esac
2798                         ;;
2799                 titanos) osname=titanos
2800                         case "$3" in
2801                         1*) osvers=1 ;;
2802                         2*) osvers=2 ;;
2803                         3*) osvers=3 ;;
2804                         4*) osvers=4 ;;
2805                         *)      osvers="$3" ;;
2806                         esac
2807                         ;;
2808                 ultrix) osname=ultrix
2809                         osvers="$3"
2810                         ;;
2811                 osf1|mls+)      case "$5" in
2812                                 alpha)
2813                                         osname=dec_osf
2814                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2815                                         case "$osvers" in
2816                                         [1-9].[0-9]*) ;;
2817                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2818                                         esac
2819                                         ;;
2820                         hp*)    osname=hp_osf1  ;;
2821                         mips)   osname=mips_osf1 ;;
2822                         esac
2823                         ;;
2824                 unixware) osname=svr5
2825                         osvers="$4"
2826                         ;;
2827                 uts) osname=uts
2828                         osvers="$3"
2829                         ;;
2830                 $2) case "$osname" in
2831                         *isc*) ;;
2832                         *freebsd*) ;;
2833                         svr*)
2834                                 : svr4.x or possibly later
2835                                 case "svr$3" in 
2836                                 ${osname}*)
2837                                         osname=svr$3
2838                                         osvers=$4
2839                                         ;;
2840                                 esac
2841                                 case "$osname" in
2842                                 svr4.0)
2843                                         : Check for ESIX
2844                                         if test -f /stand/boot ; then
2845                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2846                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2847                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2848                                                         if test -n "$isesix"; then
2849                                                                 osname=esix4
2850                                                         fi
2851                                                 fi
2852                                         fi
2853                                         ;;
2854                                 esac
2855                                 ;;
2856                         *)      if test -f /etc/systemid; then
2857                                         osname=sco
2858                                         set `echo $3 | $sed 's/\./ /g'` $4
2859                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2860                                                 osvers=$1.$2.$3
2861                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2862                                                 osvers=$1.$2
2863                                         elif $test -f $src/hints/sco_$1.sh; then
2864                                                 osvers=$1
2865                                         fi
2866                                 else
2867                                         case "$osname" in
2868                                         '') : Still unknown.  Probably a generic Sys V.
2869                                                 osname="sysv"
2870                                                 osvers="$3"
2871                                                 ;;
2872                                         esac
2873                                 fi
2874                                 ;;
2875                         esac
2876                         ;;
2877                 *)      case "$osname" in
2878                         '') : Still unknown.  Probably a generic BSD.
2879                                 osname="$1"
2880                                 osvers="$3"
2881                                 ;;
2882                         esac
2883                         ;;
2884                 esac
2885         else
2886                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2887                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2888                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2889                                 osname=news_os
2890                         fi
2891                         $rm -f UU/kernel.what
2892                 elif test -d c:/.; then
2893                         set X $myuname
2894                         osname=os2
2895                         osvers="$5"
2896                 fi
2897         fi
2898         
2899         case "$targetarch" in
2900         '') ;;
2901         *)  hostarch=$osname
2902             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
2903             osvers=''
2904             ;;
2905         esac
2906
2907         : Now look for a hint file osname_osvers, unless one has been
2908         : specified already.
2909         case "$hintfile" in
2910         ''|' ')
2911                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2912                 : Also try without trailing minor version numbers.
2913                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2914                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2915                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2916                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2917                 case "$file" in
2918                 '') dflt=none ;;
2919                 *)  case "$osvers" in
2920                         '') dflt=$file
2921                                 ;;
2922                         *)  if $test -f $src/hints/$file.sh ; then
2923                                         dflt=$file
2924                                 elif $test -f $src/hints/$xfile.sh ; then
2925                                         dflt=$xfile
2926                                 elif $test -f $src/hints/$xxfile.sh ; then
2927                                         dflt=$xxfile
2928                                 elif $test -f $src/hints/$xxxfile.sh ; then
2929                                         dflt=$xxxfile
2930                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2931                                         dflt=$xxxxfile
2932                                 elif $test -f "$src/hints/${osname}.sh" ; then
2933                                         dflt="${osname}"
2934                                 else
2935                                         dflt=none
2936                                 fi
2937                                 ;;
2938                         esac
2939                         ;;
2940                 esac
2941                 if $test -f Policy.sh ; then
2942                         case "$dflt" in
2943                         *Policy*) ;;
2944                         none) dflt="Policy" ;;
2945                         *) dflt="Policy $dflt" ;;
2946                         esac
2947                 fi
2948                 ;;
2949         *)
2950                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2951                 ;;
2952         esac
2953
2954         if $test -f Policy.sh ; then
2955                 $cat <<EOM
2956
2957 There's also a Policy hint file available, which should make the
2958 site-specific (policy) questions easier to answer.
2959 EOM
2960
2961         fi
2962
2963         $cat <<EOM
2964
2965 You may give one or more space-separated answers, or "none" if appropriate.
2966 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2967 is a good thing.  DO NOT give a wrong version or a wrong OS.
2968
2969 EOM
2970
2971         rp="Which of these apply, if any?"
2972         . UU/myread
2973         tans=$ans
2974         for file in $tans; do
2975                 if $test X$file = XPolicy -a -f Policy.sh; then
2976                         . Policy.sh
2977                         $cat Policy.sh >> UU/config.sh
2978                 elif $test -f $src/hints/$file.sh; then
2979                         . $src/hints/$file.sh
2980                         $cat $src/hints/$file.sh >> UU/config.sh
2981                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
2982                         : nothing
2983                 else
2984                         : Give one chance to correct a possible typo.
2985                         echo "$file.sh does not exist"
2986                         dflt=$file
2987                         rp="hint to use instead?"
2988                         . UU/myread
2989                         for file in $ans; do
2990                                 if $test -f "$src/hints/$file.sh"; then
2991                                         . $src/hints/$file.sh
2992                                         $cat $src/hints/$file.sh >> UU/config.sh
2993                                 elif $test X$ans = X -o X$ans = Xnone ; then
2994                                         : nothing
2995                                 else
2996                                         echo "$file.sh does not exist -- ignored."
2997                                 fi
2998                         done
2999                 fi
3000         done
3001
3002         hint=recommended
3003         : Remember our hint file for later.
3004         if $test -f "$src/hints/$file.sh" ; then
3005                 hintfile="$file"
3006         else
3007                 hintfile=''
3008         fi
3009 fi
3010 cd UU
3011 ;;
3012 *)
3013         echo " "
3014         echo "Fetching default answers from $config_sh..." >&4
3015         tmp_n="$n"
3016         tmp_c="$c"
3017         cd ..
3018         cp $config_sh config.sh 2>/dev/null
3019         chmod +w config.sh
3020         . ./config.sh
3021         cd UU
3022         cp ../config.sh .
3023         n="$tmp_n"
3024         c="$tmp_c"
3025         hint=previous
3026         ;;
3027 esac
3028 test "$override" && . ./optdef.sh
3029
3030 : Restore computed paths
3031 for file in $loclist $trylist; do
3032         eval $file="\$_$file"
3033 done
3034
3035 cat << EOM
3036
3037 Configure uses the operating system name and version to set some defaults.
3038 The default value is probably right if the name rings a bell. Otherwise,
3039 since spelling matters for me, either accept the default or answer "none"
3040 to leave it blank.
3041
3042 EOM
3043 case "$osname" in
3044         ''|' ')
3045                 case "$hintfile" in
3046                 ''|' '|none) dflt=none ;;
3047                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3048                 esac
3049                 ;;
3050         *) dflt="$osname" ;;
3051 esac
3052 rp="Operating system name?"
3053 . ./myread
3054 case "$ans" in
3055 none)  osname='' ;;
3056 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3057 esac
3058 echo " "
3059 case "$osvers" in
3060         ''|' ')
3061                 case "$hintfile" in
3062                 ''|' '|none) dflt=none ;;
3063                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3064                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3065                         case "$dflt" in
3066                         ''|' ') dflt=none ;;
3067                         esac
3068                         ;;
3069                 esac
3070                 ;;
3071         *) dflt="$osvers" ;;
3072 esac
3073 rp="Operating system version?"
3074 . ./myread
3075 case "$ans" in
3076 none)  osvers='' ;;
3077 *) osvers="$ans" ;;
3078 esac
3079
3080
3081 . ./posthint.sh
3082
3083 : who configured the system
3084 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3085 cf_by=`(logname) 2>/dev/null`
3086 case "$cf_by" in
3087 "")
3088         cf_by=`(whoami) 2>/dev/null`
3089         case "$cf_by" in
3090         "") cf_by=unknown ;;
3091         esac ;;
3092 esac
3093
3094 : set up the script used to warn in case of inconsistency
3095 cat <<EOS >whoa
3096 $startsh
3097 EOS
3098 cat <<'EOSC' >>whoa
3099 dflt=y
3100 echo " "
3101 echo "*** WHOA THERE!!! ***" >&4
3102 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3103 rp="    Keep the $hint value?"
3104 . ./myread
3105 case "$ans" in
3106 y) td=$was; tu=$was;;
3107 esac
3108 EOSC
3109
3110 : function used to set $1 to $val
3111 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3112 case "$val$was" in
3113 $define$undef) . ./whoa; eval "$var=\$td";;
3114 $undef$define) . ./whoa; eval "$var=\$tu";;
3115 *) eval "$var=$val";;
3116 esac'
3117
3118 case "$usethreads" in
3119 $define|true|[yY]*)     dflt='y';;
3120 *) dflt='n';;
3121 esac
3122 cat <<EOM
3123
3124 Perl can be built to take advantage of threads on some systems.
3125 To do so, Configure can be run with -Dusethreads.
3126
3127 Note that threading is a highly experimental feature, and
3128 some known race conditions still remain.  If you choose to try
3129 it, be very sure to not actually deploy it for production
3130 purposes.  README.threads has more details, and is required
3131 reading if you enable threads.
3132
3133 If this doesn't make any sense to you, just accept the default '$dflt'.
3134 EOM
3135 rp='Build a threading Perl?'
3136 . ./myread
3137 case "$ans" in
3138 y|Y)    val="$define" ;;
3139 *)      val="$undef" ;;
3140 esac
3141 set usethreads
3142 eval $setvar
3143
3144 case "$usethreads" in
3145 $define)
3146         $cat <<EOM
3147
3148 As of 5.5.640, Perl has two different internal threading implementations,
3149 the 5.005 version (5005threads) and an interpreter-based version
3150 (ithreads) that has one interpreter per thread.  Both are very 
3151 experimental.  This arrangement exists to help developers work out
3152 which one is better.
3153
3154 If you're a casual user, you probably don't want interpreter-threads
3155 at this time.  There doesn't yet exist a way to create threads from
3156 within Perl in this model, i.e., "use Thread;" will NOT work.
3157 EOM
3158         : Default to ithreads unless overridden on command line or with
3159         : old config.sh
3160         dflt='y'
3161         case "$use5005threads" in
3162                 $define|true|[yY]*) dflt='n';;
3163         esac
3164         case "$useithreads" in
3165                 $undef|false|[nN]*) dflt='n';;
3166         esac
3167         rp='Use interpreter-based ithreads?'
3168         . ./myread
3169         case "$ans" in
3170         y|Y)    val="$define" ;;
3171         *)      val="$undef" ;;
3172         esac
3173         set useithreads
3174         eval $setvar
3175         : Now set use5005threads to the opposite value.
3176         case "$useithreads" in
3177         $define) val="$undef" ;;
3178         *) val="$define" ;;
3179         esac
3180         set use5005threads
3181         eval $setvar
3182         ;;
3183 *)
3184         useithreads="$undef"
3185         use5005threads="$undef"
3186         ;;
3187 esac
3188
3189 case "$useithreads$use5005threads" in
3190 "$define$define")
3191         $cat >&4 <<EOM
3192
3193 You cannot have both the ithreads and the 5.005 threads enabled
3194 at the same time.  Disabling the 5.005 threads since they are
3195 much less stable than the ithreads.
3196
3197 EOM
3198         use5005threads="$undef"
3199         ;;
3200 esac
3201
3202 case "$d_oldpthreads" in
3203 '')     : Configure tests would be welcome here.  For now, assume undef.
3204         val="$undef" ;;
3205 *)      val="$d_oldpthreads" ;;
3206 esac
3207 set d_oldpthreads
3208 eval $setvar
3209
3210
3211 case "$usethreads" in
3212 "$define"|true|[yY]*)
3213 : Look for a hint-file generated 'call-back-unit'.  If the
3214 : user has specified that a threading perl is to be built,
3215 : we may need to set or change some other defaults.
3216         if $test -f usethreads.cbu; then
3217                 echo "Your platform has some specific hints for threaded builds, using them..."
3218                 . ./usethreads.cbu
3219         else
3220                 $cat <<EOM
3221 (Your platform doesn't have any specific hints for threaded builds.
3222  Assuming POSIX threads, then.)
3223 EOM
3224         fi
3225         ;;
3226 esac
3227
3228 cat <<EOM
3229
3230 Perl can be built so that multiple Perl interpreters can coexist
3231 within the same Perl executable.
3232 EOM
3233
3234 case "$useithreads" in
3235 $define)
3236         cat <<EOM
3237 This multiple interpreter support is required for interpreter-based threads.
3238 EOM
3239         val="$define"
3240         ;;
3241 *)      case "$usemultiplicity" in
3242         $define|true|[yY]*)     dflt='y';;
3243         *) dflt='n';;
3244         esac
3245         echo " "
3246         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3247         rp='Build Perl for multiplicity?'
3248         . ./myread
3249         case "$ans" in
3250         y|Y)    val="$define" ;;
3251         *)      val="$undef" ;;
3252         esac
3253         ;;
3254 esac
3255 set usemultiplicity
3256 eval $setvar
3257
3258 : make some quick guesses about what we are up against
3259 echo " "
3260 $echo $n "Hmm...  $c"
3261 echo exit 1 >bsd
3262 echo exit 1 >usg
3263 echo exit 1 >v7
3264 echo exit 1 >osf1
3265 echo exit 1 >eunice
3266 echo exit 1 >xenix
3267 echo exit 1 >venix
3268 echo exit 1 >os2
3269 d_bsd="$undef"
3270 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3271 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3272 then
3273         echo "Looks kind of like an OSF/1 system, but we'll see..."
3274         echo exit 0 >osf1
3275 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3276         xxx=`./loc addbib blurfl $pth`
3277         if $test -f $xxx; then
3278         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3279                 echo exit 0 >bsd
3280                 echo exit 0 >usg
3281         else
3282                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3283                         echo "Looks kind of like an extended USG system, but we'll see..."
3284                 else
3285                         echo "Looks kind of like a USG system, but we'll see..."
3286                 fi
3287                 echo exit 0 >usg
3288         fi
3289 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3290         echo "Looks kind of like a BSD system, but we'll see..."
3291         d_bsd="$define"
3292         echo exit 0 >bsd
3293 else
3294         echo "Looks kind of like a Version 7 system, but we'll see..."
3295         echo exit 0 >v7
3296 fi
3297 case "$eunicefix" in
3298 *unixtovms*)
3299         $cat <<'EOI'
3300 There is, however, a strange, musty smell in the air that reminds me of
3301 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3302 EOI
3303         echo exit 0 >eunice
3304         d_eunice="$define"
3305 : it so happens the Eunice I know will not run shell scripts in Unix format
3306         ;;
3307 *)
3308         echo " "
3309         echo "Congratulations.  You aren't running Eunice."
3310         d_eunice="$undef"
3311         ;;
3312 esac
3313 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3314 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3315 : semicolon as a patch separator
3316 case "$p_" in
3317 :) ;;
3318 *)
3319         $cat <<'EOI'
3320 I have the feeling something is not exactly right, however...don't tell me...
3321 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3322 (Or you may be running DOS with DJGPP.)
3323 EOI
3324         echo exit 0 >os2
3325         ;;
3326 esac
3327 if test -f /xenix; then
3328         echo "Actually, this looks more like a XENIX system..."
3329         echo exit 0 >xenix
3330         d_xenix="$define"
3331 else
3332         echo " "
3333         echo "It's not Xenix..."
3334         d_xenix="$undef"
3335 fi
3336 chmod +x xenix
3337 $eunicefix xenix
3338 if test -f /venix; then
3339         echo "Actually, this looks more like a VENIX system..."
3340         echo exit 0 >venix
3341 else
3342         echo " "
3343         if ./xenix; then
3344                 : null
3345         else
3346                 echo "Nor is it Venix..."
3347         fi
3348 fi
3349 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3350 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3351 $rm -f foo
3352
3353 case "$cc" in
3354 '') dflt=cc;;
3355 *) dflt="$cc";;
3356 esac
3357 rp="Use which C compiler?"
3358 . ./myread
3359 cc="$ans"
3360 : Look for a hint-file generated 'call-back-unit'.  Now that the
3361 : user has specified the compiler, we may need to set or change some
3362 : other defaults.
3363 if $test -f cc.cbu; then
3364     . ./cc.cbu
3365 fi
3366 . ./checkcc
3367
3368 echo " "
3369 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3370 $cat >try.c <<EOM
3371 #include <stdio.h>
3372 int main() {
3373 #ifdef __GNUC__
3374 #ifdef __VERSION__
3375         printf("%s\n", __VERSION__);
3376 #else
3377         printf("%s\n", "1");
3378 #endif
3379 #endif
3380         exit(0);
3381 }
3382 EOM
3383 if $cc -o try $ccflags $ldflags try.c; then
3384         gccversion=`$run ./try`
3385         case "$gccversion" in
3386         '') echo "You are not using GNU cc." ;;
3387         *)  echo "You are using GNU cc $gccversion."
3388             ccname=gcc  
3389             ;;
3390         esac
3391 else
3392         echo " "
3393         echo "*** WHOA THERE!!! ***" >&4
3394         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3395         case "$knowitall" in
3396         '')
3397         echo "    You'd better start hunting for one and let me know about it." >&4
3398                 exit 1
3399                 ;;
3400         esac
3401 fi
3402 $rm -f try try.*
3403 case "$gccversion" in
3404 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3405 esac
3406 case "$gccversion" in
3407 '') gccosandvers='' ;;
3408 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3409    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3410    gccshortvers=''
3411    case "$gccosandvers" in
3412    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3413    $osname$osvers) ;; # looking good
3414    $osname*) cat <<EOM >&4
3415
3416 *** WHOA THERE!!! ***
3417
3418     Your gcc has not been compiled for the exact release of
3419     your operating system ($gccosandvers versus $osname$osvers).
3420
3421     In general it is a good idea to keep gcc synchronized with
3422     the operating system because otherwise serious problems
3423     may ensue when trying to compile software, like Perl.
3424
3425     I'm trying to be optimistic here, though, and will continue.
3426     If later during the configuration and build icky compilation
3427     problems appear (headerfile conflicts being the most common
3428     manifestation), I suggest reinstalling the gcc to match
3429     your operating system release.
3430
3431 EOM
3432       ;;
3433    *) gccosandvers='' ;; # failed to parse, better be silent
3434    esac
3435    ;;
3436 esac
3437 case "$ccname" in
3438 '') ccname="$cc" ;;
3439 esac
3440
3441 case "$gccversion" in
3442 '') ;;
3443 *)  case "$ccflags" in
3444     *-Wall*) ;;
3445     *) ccflags="$ccflags -Wall" ;;
3446     esac
3447     ;;
3448 esac
3449
3450 : see how we invoke the C preprocessor
3451 echo " "
3452 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3453 cat <<'EOT' >testcpp.c
3454 #define ABC abc
3455 #define XYZ xyz
3456 ABC.XYZ
3457 EOT
3458 cd ..
3459 if test ! -f cppstdin; then
3460         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3461                 # AIX cc -E doesn't show the absolute headerfile
3462                 # locations but we'll cheat by using the -M flag.
3463                 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
3464         else
3465                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3466         fi
3467 else
3468         echo "Keeping your $hint cppstdin wrapper."
3469 fi
3470 chmod 755 cppstdin
3471 wrapper=`pwd`/cppstdin
3472 ok='false'
3473 cd UU
3474
3475 if $test "X$cppstdin" != "X" && \
3476         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3477         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3478 then
3479         echo "You used to use $cppstdin $cppminus so we'll use that again."
3480         case "$cpprun" in
3481         '') echo "But let's see if we can live without a wrapper..." ;;
3482         *)
3483                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3484                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3485                 then
3486                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3487                         ok='true'
3488                 else
3489                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3490                 fi
3491                 ;;
3492         esac
3493 else
3494         case "$cppstdin" in
3495         '') ;;
3496         *)
3497                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3498                 ;;
3499         esac
3500 fi
3501
3502 if $ok; then
3503         : nothing
3504 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3505         $cc -E <testcpp.c >testcpp.out 2>&1; \
3506         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3507         echo "Yup, it does."
3508         x_cpp="$cc -E"
3509         x_minus='';
3510 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3511         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3512         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3513         echo "Yup, it does."
3514         x_cpp="$cc -E"
3515         x_minus='-';
3516 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3517         $cc -P <testcpp.c >testcpp.out 2>&1; \
3518         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3519         echo "Yipee, that works!"
3520         x_cpp="$cc -P"
3521         x_minus='';
3522 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3523         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3524         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3525         echo "At long last!"
3526         x_cpp="$cc -P"
3527         x_minus='-';
3528 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3529         $cpp <testcpp.c >testcpp.out 2>&1; \
3530         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3531         echo "It works!"
3532         x_cpp="$cpp"
3533         x_minus='';
3534 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3535         $cpp - <testcpp.c >testcpp.out 2>&1; \
3536         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3537         echo "Hooray, it works!  I was beginning to wonder."
3538         x_cpp="$cpp"
3539         x_minus='-';
3540 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3541         $wrapper <testcpp.c >testcpp.out 2>&1; \
3542         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3543         x_cpp="$wrapper"
3544         x_minus=''
3545         echo "Eureka!"
3546 else
3547         dflt=''
3548         rp="No dice.  I can't find a C preprocessor.  Name one:"
3549         . ./myread
3550         x_cpp="$ans"
3551         x_minus=''
3552         $x_cpp <testcpp.c >testcpp.out 2>&1
3553         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3554                 echo "OK, that will do." >&4
3555         else
3556 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3557                 exit 1
3558         fi
3559 fi
3560
3561 case "$ok" in
3562 false)
3563         cppstdin="$x_cpp"
3564         cppminus="$x_minus"
3565         cpprun="$x_cpp"
3566         cpplast="$x_minus"
3567         set X $x_cpp
3568         shift
3569         case "$1" in
3570         "$cpp")
3571                 echo "Perhaps can we force $cc -E using a wrapper..."
3572                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3573                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3574                 then
3575                         echo "Yup, we can."
3576                         cppstdin="$wrapper"
3577                         cppminus='';
3578                 else
3579                         echo "Nope, we'll have to live without it..."
3580                 fi
3581                 ;;
3582         esac
3583         case "$cpprun" in
3584         "$wrapper")
3585                 cpprun=''
3586                 cpplast=''
3587                 ;;
3588         esac
3589         ;;
3590 esac
3591
3592 case "$cppstdin" in
3593 "$wrapper"|'cppstdin') ;;
3594 *) $rm -f $wrapper;;
3595 esac
3596 $rm -f testcpp.c testcpp.out
3597
3598 : decide how portable to be.  Allow command line overrides.
3599 case "$d_portable" in
3600 "$undef") ;;
3601 *)      d_portable="$define" ;;
3602 esac
3603
3604 : set up shell script to do ~ expansion
3605 cat >filexp <<EOSS
3606 $startsh
3607 : expand filename
3608 case "\$1" in
3609  ~/*|~)
3610         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3611         ;;
3612  ~*)
3613         if $test -f /bin/csh; then
3614                 /bin/csh -f -c "glob \$1"
3615                 failed=\$?
3616                 echo ""
3617                 exit \$failed
3618         else
3619                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3620                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3621                 if $test ! -d "\$dir"; then
3622                         me=\`basename \$0\`
3623                         echo "\$me: can't locate home directory for: \$name" >&2
3624                         exit 1
3625                 fi
3626                 case "\$1" in
3627                 */*)
3628                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3629                         ;;
3630                 *)
3631                         echo \$dir
3632                         ;;
3633                 esac
3634         fi
3635         ;;
3636 *)
3637         echo \$1
3638         ;;
3639 esac
3640 EOSS
3641 chmod +x filexp
3642 $eunicefix filexp
3643
3644 : now set up to get a file name
3645 cat <<EOS >getfile
3646 $startsh
3647 EOS
3648 cat <<'EOSC' >>getfile
3649 tilde=''
3650 fullpath=''
3651 already=''
3652 skip=''
3653 none_ok=''
3654 exp_file=''
3655 nopath_ok=''
3656 orig_rp="$rp"
3657 orig_dflt="$dflt"
3658 case "$gfpth" in
3659 '') gfpth='.' ;;
3660 esac
3661
3662 case "$fn" in
3663 *\(*)
3664         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3665         fn=`echo $fn | sed 's/(.*)//'`
3666         ;;
3667 esac
3668
3669 case "$fn" in
3670 *:*)
3671         loc_file=`expr $fn : '.*:\(.*\)'`
3672         fn=`expr $fn : '\(.*\):.*'`
3673         ;;
3674 esac
3675
3676 case "$fn" in
3677 *~*) tilde=true;;
3678 esac
3679 case "$fn" in
3680 */*) fullpath=true;;
3681 esac
3682 case "$fn" in
3683 *+*) skip=true;;
3684 esac
3685 case "$fn" in
3686 *n*) none_ok=true;;
3687 esac
3688 case "$fn" in
3689 *e*) exp_file=true;;
3690 esac
3691 case "$fn" in
3692 *p*) nopath_ok=true;;
3693 esac
3694
3695 case "$fn" in
3696 *f*) type='File';;
3697 *d*) type='Directory';;
3698 *l*) type='Locate';;
3699 esac
3700
3701 what="$type"
3702 case "$what" in
3703 Locate) what='File';;
3704 esac
3705
3706 case "$exp_file" in
3707 '')
3708         case "$d_portable" in
3709         "$define") ;;
3710         *) exp_file=true;;
3711         esac
3712         ;;
3713 esac
3714
3715 cd ..
3716 while test "$type"; do
3717         redo=''
3718         rp="$orig_rp"
3719         dflt="$orig_dflt"
3720         case "$tilde" in
3721         true) rp="$rp (~name ok)";;
3722         esac
3723         . UU/myread
3724         if test -f UU/getfile.ok && \
3725                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3726         then
3727                 value="$ans"
3728                 ansexp="$ans"
3729                 break
3730         fi
3731         case "$ans" in
3732         none)
3733                 value=''
3734                 ansexp=''
3735                 case "$none_ok" in
3736                 true) type='';;
3737                 esac
3738                 ;;
3739         *)
3740                 case "$tilde" in
3741                 '') value="$ans"
3742                         ansexp="$ans";;
3743                 *)
3744                         value=`UU/filexp $ans`
3745                         case $? in
3746                         0)
3747                                 if test "$ans" != "$value"; then
3748                                         echo "(That expands to $value on this system.)"
3749                                 fi
3750                                 ;;
3751                         *) value="$ans";;
3752                         esac
3753                         ansexp="$value"
3754                         case "$exp_file" in
3755                         '') value="$ans";;
3756                         esac
3757                         ;;
3758                 esac
3759                 case "$fullpath" in
3760                 true)
3761                         case "$ansexp" in
3762                         /*) value="$ansexp" ;;
3763                         [a-zA-Z]:/*) value="$ansexp" ;;
3764                         *)
3765                                 redo=true
3766                                 case "$already" in
3767                                 true)
3768                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3769                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3770                                         ;;
3771                                 *)
3772                                 echo "Please give a full path name, starting with slash." >&4
3773                                         case "$tilde" in
3774                                         true)
3775                                 echo "Note that using ~name is ok provided it expands well." >&4
3776                                                 already=true
3777                                                 ;;
3778                                         esac
3779                                 esac
3780                                 ;;
3781                         esac
3782                         ;;
3783                 esac
3784                 case "$redo" in
3785                 '')
3786                         case "$type" in
3787                         File)
3788                                 for fp in $gfpth; do
3789                                         if test "X$fp" = X.; then
3790                                             pf="$ansexp"
3791                                         else    
3792                                             pf="$fp/$ansexp"
3793                                         fi
3794                                         if test -f "$pf"; then
3795                                                 type=''
3796                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3797                                         then
3798                                                 echo "($value is not a plain file, but that's ok.)"
3799                                                 type=''
3800                                         fi
3801                                         if test X"$type" = X; then
3802                                             value="$pf"
3803                                             break
3804                                         fi
3805                                 done
3806                                 ;;
3807                         Directory)
3808                                 for fp in $gfpth; do
3809                                         if test "X$fp" = X.; then
3810                                             dir="$ans"
3811                                             direxp="$ansexp"
3812                                         else    
3813                                             dir="$fp/$ansexp"
3814                                             direxp="$fp/$ansexp"
3815                                         fi
3816                                         if test -d "$direxp"; then
3817                                                 type=''
3818                                                 value="$dir"
3819                                                 break
3820                                         fi
3821                                 done
3822                                 ;;
3823                         Locate)
3824                                 if test -d "$ansexp"; then
3825                                         echo "(Looking for $loc_file in directory $value.)"
3826                                         value="$value/$loc_file"
3827                                         ansexp="$ansexp/$loc_file"
3828                                 fi
3829                                 if test -f "$ansexp"; then
3830                                         type=''
3831                                 fi
3832                                 case "$nopath_ok" in
3833                                 true)   case "$value" in
3834                                         */*) ;;
3835                                         *)      echo "Assuming $value will be in people's path."
3836                                                 type=''
3837                                                 ;;
3838                                         esac
3839                                         ;;
3840                                 esac
3841                                 ;;
3842                         esac
3843
3844                         case "$skip" in
3845                         true) type='';
3846                         esac
3847
3848                         case "$type" in
3849                         '') ;;
3850                         *)
3851                                 if test "$fastread" = yes; then
3852                                         dflt=y
3853                                 else
3854                                         dflt=n
3855                                 fi
3856                                 rp="$what $value doesn't exist.  Use that name anyway?"
3857                                 . UU/myread
3858                                 dflt=''
3859                                 case "$ans" in
3860                                 y*) type='';;
3861                                 *) echo " ";;
3862                                 esac
3863                                 ;;
3864                         esac
3865                         ;;
3866                 esac
3867                 ;;
3868         esac
3869 done
3870 cd UU
3871 ans="$value"
3872 rp="$orig_rp"
3873 dflt="$orig_dflt"
3874 rm -f getfile.ok
3875 test "X$gfpthkeep" != Xy && gfpth=""
3876 EOSC
3877
3878 : What should the include directory be ?
3879 echo " "
3880 $echo $n "Hmm...  $c"
3881 dflt='/usr/include'
3882 incpath=''
3883 mips_type=''
3884 if $test -f /bin/mips && /bin/mips; then
3885         echo "Looks like a MIPS system..."
3886         $cat >usr.c <<'EOCP'
3887 #ifdef SYSTYPE_BSD43
3888 /bsd43
3889 #endif
3890 EOCP
3891         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3892                 dflt='/bsd43/usr/include'
3893                 incpath='/bsd43'
3894                 mips_type='BSD 4.3'
3895         else
3896                 mips_type='System V'
3897         fi
3898         $rm -f usr.c usr.out
3899         echo "and you're compiling with the $mips_type compiler and libraries."
3900         xxx_prompt=y
3901         echo "exit 0" >mips
3902 else
3903         echo "Doesn't look like a MIPS system."
3904         xxx_prompt=n
3905         echo "exit 1" >mips
3906 fi
3907 chmod +x mips
3908 $eunicefix mips
3909 case "$usrinc" in
3910 '') ;;
3911 *) dflt="$usrinc";;
3912 esac
3913 case "$xxx_prompt" in
3914 y)      fn=d/
3915         echo " "
3916         rp='Where are the include files you want to use?'
3917         . ./getfile
3918         usrinc="$ans"
3919         ;;
3920 *)      usrinc="$dflt"
3921         ;;
3922 esac
3923
3924 : Set private lib path
3925 case "$plibpth" in
3926 '') if ./mips; then
3927                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3928         fi;;
3929 esac
3930 case "$libpth" in
3931 ' ') dlist='';;
3932 '') dlist="$loclibpth $plibpth $glibpth";;
3933 *) dlist="$libpth";;
3934 esac
3935
3936 : Now check and see which directories actually exist, avoiding duplicates
3937 libpth=''
3938 for xxx in $dlist
3939 do
3940     if $test -d $xxx; then
3941                 case " $libpth " in
3942                 *" $xxx "*) ;;
3943                 *) libpth="$libpth $xxx";;
3944                 esac
3945     fi
3946 done
3947 $cat <<'EOM'
3948
3949 Some systems have incompatible or broken versions of libraries.  Among
3950 the directories listed in the question below, please remove any you
3951 know not to be holding relevant libraries, and add any that are needed.
3952 Say "none" for none.
3953
3954 EOM
3955 case "$libpth" in
3956 '') dflt='none';;
3957 *)
3958         set X $libpth
3959         shift
3960         dflt=${1+"$@"}
3961         ;;
3962 esac
3963 rp="Directories to use for library searches?"
3964 . ./myread
3965 case "$ans" in
3966 none) libpth=' ';;
3967 *) libpth="$ans";;
3968 esac
3969
3970 : compute shared library extension
3971 case "$so" in
3972 '')
3973         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3974                 dflt='sl'
3975         else
3976                 dflt='so'
3977         fi
3978         ;;
3979 *) dflt="$so";;
3980 esac
3981 $cat <<EOM
3982
3983 On some systems, shared libraries may be available.  Answer 'none' if
3984 you want to suppress searching of shared libraries for the remainder
3985 of this configuration.
3986
3987 EOM
3988 rp='What is the file extension used for shared libraries?'
3989 . ./myread
3990 so="$ans"
3991
3992 : Define several unixisms.
3993 : Hints files or command line option can be used to override them.
3994 : The convoluted testing is in case hints files set either the old
3995 : or the new name.
3996 case "$_exe" in
3997 '')     case "$exe_ext" in
3998     '') ;;
3999         *)      _exe="$exe_ext" ;;
4000         esac
4001         ;;
4002 esac
4003 case "$_a" in
4004 '')     case "$lib_ext" in
4005     '') _a='.a';;
4006         *)      _a="$lib_ext" ;;
4007         esac
4008         ;;
4009 esac
4010 case "$_o" in
4011 '') case "$obj_ext" in
4012         '')     _o='.o';;
4013         *)      _o="$obj_ext";;
4014         esac
4015         ;;
4016 esac
4017 case "$p_" in
4018 '') case "$path_sep" in
4019         '')     p_=':';;
4020         *)      p_="$path_sep";;
4021         esac
4022         ;;
4023 esac
4024 exe_ext=$_exe
4025 lib_ext=$_a
4026 obj_ext=$_o
4027 path_sep=$p_
4028
4029 : Which makefile gets called first.  This is used by make depend.
4030 case "$firstmakefile" in
4031 '') firstmakefile='makefile';;
4032 esac
4033
4034 case "$usesocks" in
4035 $define|true|[yY]*)     dflt='y';;
4036 *) dflt='n';;
4037 esac
4038 cat <<EOM
4039
4040 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4041 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4042 to use the PerlIO abstraction layer, this will be implicitly selected.
4043
4044 If this doesn't make any sense to you, just accept the default '$dflt'.
4045 EOM
4046 rp='Build Perl for SOCKS?'
4047 . ./myread
4048 case "$ans" in
4049 y|Y)    val="$define" ;;     
4050 *)      val="$undef" ;;
4051 esac
4052 set usesocks
4053 eval $setvar
4054
4055 case "$usesocks" in
4056 $define|true|[yY]*) useperlio="$define";;
4057 esac
4058
4059 : Looking for optional libraries
4060 echo " "
4061 echo "Checking for optional libraries..." >&4
4062 case "$libs" in
4063 ' '|'') dflt='';;
4064 *) dflt="$libs";;
4065 esac
4066 case "$libswanted" in
4067 '') libswanted='c_s';;
4068 esac
4069 case "$usesocks" in
4070 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4071 esac
4072 libsfound=''
4073 libsfiles=''
4074 libsdirs=''
4075 libspath=''
4076 for thisdir in $libpth $xlibpth; do
4077   test -d $thisdir && libspath="$libspath $thisdir"
4078 done
4079 for thislib in $libswanted; do
4080         for thisdir in $libspath; do
4081             xxx=''
4082             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4083                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4084                 $test -f "$xxx" && eval $libscheck
4085                 $test -f "$xxx" && libstyle=shared
4086             fi
4087             if test ! -f "$xxx"; then
4088                 xxx=$thisdir/lib$thislib.$so
4089                 $test -f "$xxx" && eval $libscheck
4090                 $test -f "$xxx" && libstyle=shared
4091             fi  
4092             if test ! -f "$xxx"; then
4093                 xxx=$thisdir/lib$thislib$_a
4094                 $test -f "$xxx" && eval $libscheck
4095                 $test -f "$xxx" && libstyle=static
4096             fi
4097             if test ! -f "$xxx"; then
4098                 xxx=$thisdir/$thislib$_a
4099                 $test -f "$xxx" && eval $libscheck
4100                 $test -f "$xxx" && libstyle=static
4101             fi
4102             if test ! -f "$xxx"; then
4103                 xxx=$thisdir/lib${thislib}_s$_a
4104                 $test -f "$xxx" && eval $libscheck
4105                 $test -f "$xxx" && libstyle=static
4106                 $test -f "$xxx" && thislib=${thislib}_s
4107             fi
4108             if test ! -f "$xxx"; then
4109                 xxx=$thisdir/Slib$thislib$_a
4110                 $test -f "$xxx" && eval $libscheck
4111                 $test -f "$xxx" && libstyle=static
4112             fi
4113             if $test -f "$xxx"; then
4114                 case "$libstyle" in
4115                 shared) echo "Found -l$thislib (shared)." ;;
4116                 static) echo "Found -l$thislib." ;;
4117                 *)      echo "Found -l$thislib ($libstyle)." ;;
4118                 esac
4119                 case " $dflt " in
4120                 *"-l$thislib "*);;
4121                 *) dflt="$dflt -l$thislib"
4122                    libsfound="$libsfound $xxx"
4123                    yyy=`basename $xxx`
4124                    libsfiles="$libsfiles $yyy"
4125                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4126                    case " $libsdirs " in
4127                    *" $yyy "*) ;;
4128                    *) libsdirs="$libsdirs $yyy" ;;
4129                    esac
4130                    ;;
4131                 esac
4132                 break
4133             fi  
4134         done
4135         if $test ! -f "$xxx"; then
4136             echo "No -l$thislib."
4137         fi
4138 done
4139 set X $dflt
4140 shift
4141 dflt="$*"
4142 case "$libs" in
4143 '') dflt="$dflt";;
4144 *) dflt="$libs";;
4145 esac
4146 case "$dflt" in
4147 ' '|'') dflt='none';;
4148 esac
4149
4150 $cat <<EOM
4151
4152 In order to compile $package on your machine, a number of libraries
4153 are usually needed.  Include any other special libraries here as well.
4154 Say "none" for none.  The default list is almost always right.
4155 EOM
4156
4157 echo " "
4158 rp="What libraries to use?"
4159 . ./myread
4160 case "$ans" in
4161 none) libs=' ';;
4162 *) libs="$ans";;
4163 esac
4164
4165 : determine optimization, if desired, or use for debug flag also
4166 case "$optimize" in
4167 ' '|$undef) dflt='none';;
4168 '') dflt='-O';;
4169 *) dflt="$optimize";;
4170 esac
4171 $cat <<EOH
4172
4173 By default, $package compiles with the -O flag to use the optimizer.
4174 Alternately, you might want to use the symbolic debugger, which uses
4175 the -g flag (on traditional Unix systems).  Either flag can be
4176 specified here.  To use neither flag, specify the word "none".
4177
4178 EOH
4179 rp="What optimizer/debugger flag should be used?"
4180 . ./myread
4181 optimize="$ans"
4182 case "$optimize" in
4183 'none') optimize=" ";;
4184 esac
4185
4186 dflt=''
4187 : We will not override a previous value, but we might want to
4188 : augment a hint file
4189 case "$hint" in
4190 default|recommended)
4191         case "$gccversion" in
4192         1*) dflt='-fpcc-struct-return' ;;
4193         esac
4194         case "$optimize" in
4195         *-g*) dflt="$dflt -DDEBUGGING";;
4196         esac
4197         case "$gccversion" in
4198         2*) if test -d /etc/conf/kconfig.d &&
4199                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4200                 then
4201                         dflt="$dflt -posix"
4202                 fi
4203                 ;;
4204         esac
4205         case "$gccversion" in
4206         1*) ;;
4207         2.[0-8]*) ;;
4208         ?*)     echo " "
4209                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4210                 echo 'int main(void) { return 0; }' > gcctest.c
4211                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4212                         echo "Yes, it does." 2>&1
4213                         case "$ccflags" in
4214                         *strict-aliasing*) 
4215                                 echo "Leaving current flags $ccflags alone." 2>&1
4216                                 ;;
4217                         *) dflt="$dflt -fno-strict-aliasing" ;;
4218                         esac
4219                 else
4220                         echo "Nope, it doesn't, but that's ok." 2>&1
4221                 fi
4222                 ;;
4223         esac
4224         ;;
4225 esac
4226
4227 case "$mips_type" in
4228 *BSD*|'') inclwanted="$locincpth $usrinc";;
4229 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4230 esac
4231 for thisincl in $inclwanted; do
4232         if $test -d $thisincl; then
4233                 if $test x$thisincl != x$usrinc; then
4234                         case "$dflt" in
4235                         *" -I$thisincl "*);;
4236                         *) dflt="$dflt -I$thisincl ";;
4237                         esac
4238                 fi
4239         fi
4240 done
4241
4242 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4243         xxx=true;
4244 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4245         xxx=true;
4246 else
4247         xxx=false;
4248 fi;
4249 if $xxx; then
4250         case "$dflt" in
4251         *$2*);;
4252         *) dflt="$dflt -D$2";;
4253         esac;
4254 fi'
4255
4256 set signal.h LANGUAGE_C; eval $inctest
4257
4258 case "$usesocks" in
4259 $define)
4260         ccflags="$ccflags -DSOCKS"
4261         ;;
4262 esac
4263
4264 case "$hint" in
4265 default|recommended) dflt="$ccflags $dflt" ;;
4266 *) dflt="$ccflags";;
4267 esac
4268
4269 case "$dflt" in
4270 ''|' ') dflt=none;;
4271 esac
4272
4273 $cat <<EOH
4274
4275 Your C compiler may want other flags.  For this question you should include
4276 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4277 but you should NOT include libraries or ld flags like -lwhatever.  If you
4278 want $package to honor its debug switch, you should include -DDEBUGGING here.
4279 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4280
4281 To use no flags, specify the word "none".
4282
4283 EOH
4284 set X $dflt
4285 shift
4286 dflt=${1+"$@"}
4287 rp="Any additional cc flags?"
4288 . ./myread
4289 case "$ans" in
4290 none) ccflags='';;
4291 *) ccflags="$ans";;
4292 esac
4293
4294 : the following weeds options from ccflags that are of no interest to cpp
4295 case "$cppflags" in
4296 '') cppflags="$ccflags" ;;
4297 *)  cppflags="$cppflags $ccflags" ;;
4298 esac
4299 case "$gccversion" in
4300 1*) cppflags="$cppflags -D__GNUC__"
4301 esac
4302 case "$mips_type" in
4303 '');;
4304 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4305 esac
4306 case "$cppflags" in
4307 '');;
4308 *)
4309         echo " "
4310         echo "Let me guess what the preprocessor flags are..." >&4
4311         set X $cppflags
4312         shift
4313         cppflags=''
4314         $cat >cpp.c <<'EOM'
4315 #define BLURFL foo
4316
4317 BLURFL xx LFRULB
4318 EOM
4319         previous=''
4320         for flag in $*
4321         do
4322                 case "$flag" in
4323                 -*) ftry="$flag";;
4324                 *) ftry="$previous $flag";;
4325                 esac
4326                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4327                         >cpp1.out 2>/dev/null && \
4328                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4329                         >cpp2.out 2>/dev/null && \
4330                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4331                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4332                 then
4333                         cppflags="$cppflags $ftry"
4334                         previous=''
4335                 else
4336                         previous="$flag"
4337                 fi
4338         done
4339         set X $cppflags
4340         shift
4341         cppflags=${1+"$@"}
4342         case "$cppflags" in
4343         *-*)  echo "They appear to be: $cppflags";;
4344         esac
4345         $rm -f cpp.c cpp?.out
4346         ;;
4347 esac
4348
4349 : flags used in final linking phase
4350 case "$ldflags" in
4351 '') if ./venix; then
4352                 dflt='-i -z'
4353         else
4354                 dflt=''
4355         fi
4356         case "$ccflags" in
4357         *-posix*) dflt="$dflt -posix" ;;
4358         esac
4359         ;;
4360 *) dflt="$ldflags";;
4361 esac
4362
4363 : Try to guess additional flags to pick up local libraries.
4364 for thislibdir in $libpth; do
4365         case " $loclibpth " in
4366         *" $thislibdir "*)
4367                 case "$dflt " in 
4368                 *"-L$thislibdir "*) ;;
4369                 *)  dflt="$dflt -L$thislibdir" ;;
4370                 esac
4371                 ;;
4372         esac
4373 done
4374
4375 case "$dflt" in
4376 '') dflt='none' ;;
4377 esac
4378
4379 $cat <<EOH
4380
4381 Your C linker may need flags.  For this question you should
4382 include -L/whatever and any other flags used by the C linker, but you
4383 should NOT include libraries like -lwhatever.
4384
4385 Make sure you include the appropriate -L/path flags if your C linker
4386 does not normally search all of the directories you specified above,
4387 namely
4388         $libpth
4389 To use no flags, specify the word "none".
4390
4391 EOH
4392
4393 rp="Any additional ld flags (NOT including libraries)?"
4394 . ./myread
4395 case "$ans" in
4396 none) ldflags='';;
4397 *) ldflags="$ans";;
4398 esac
4399 rmlist="$rmlist pdp11"
4400
4401 : coherency check
4402 echo " "
4403 echo "Checking your choice of C compiler and flags for coherency..." >&4
4404 $cat > try.c <<'EOF'
4405 #include <stdio.h>
4406 int main() { printf("Ok\n"); exit(0); }
4407 EOF
4408 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4409 shift
4410 $cat >try.msg <<'EOM'
4411 I've tried to compile and run the following simple program:
4412
4413 EOM
4414 $cat try.c >> try.msg
4415
4416 $cat >> try.msg <<EOM
4417
4418 I used the command:
4419
4420         $*
4421         $run ./try
4422
4423 and I got the following output:
4424
4425 EOM
4426 dflt=y
4427 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4428         if $sh -c "$run ./try" >>try.msg 2>&1; then
4429                 xxx=`$run ./try`
4430                 case "$xxx" in
4431                 "Ok") dflt=n ;;
4432                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4433                         case " $libs " in
4434                         *" -lsfio "*)
4435                                 cat >> try.msg <<'EOQS'
4436 If $libs contains -lsfio, and sfio is mis-configured, then it
4437 sometimes (apparently) runs and exits with a 0 status, but with no
4438 output!  It may have to do with sfio's use of _exit vs. exit.
4439
4440 EOQS
4441                                 rp="You have a big problem.  Shall I abort Configure"
4442                                 dflt=y
4443                                 ;;
4444                         esac
4445                         ;;
4446                 esac
4447         else
4448                 echo "The program compiled OK, but exited with status $?." >>try.msg
4449                 rp="You have a problem.  Shall I abort Configure"
4450                 dflt=y
4451         fi
4452 else
4453         echo "I can't compile the test program." >>try.msg
4454         rp="You have a BIG problem.  Shall I abort Configure"
4455         dflt=y
4456 fi
4457 case "$dflt" in
4458 y)
4459         $cat try.msg >&4
4460         case "$knowitall" in
4461         '')
4462                 echo "(The supplied flags or libraries might be incorrect.)"
4463                 ;;
4464         *) dflt=n;;
4465         esac
4466         echo " "
4467         . ./myread
4468         case "$ans" in
4469         n*|N*) ;;
4470         *)      echo "Ok.  Stopping Configure." >&4
4471                 exit 1
4472                 ;;
4473         esac
4474         ;;
4475 n) echo "OK, that should do.";;
4476 esac
4477 $rm -f try try.* core
4478
4479 : define an is-a-typedef? function
4480 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4481 case "$inclist" in
4482 "") inclist="sys/types.h";;
4483 esac;
4484 eval "varval=\$$var";
4485 case "$varval" in
4486 "")
4487         $rm -f temp.c;
4488         for inc in $inclist; do
4489                 echo "#include <$inc>" >>temp.c;
4490         done;
4491         echo "#ifdef $type" >> temp.c;
4492         echo "printf(\"We have $type\");" >> temp.c;
4493         echo "#endif" >> temp.c;
4494         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4495         if $contains $type temp.E >/dev/null 2>&1; then
4496                 eval "$var=\$type";
4497         else
4498                 eval "$var=\$def";
4499         fi;
4500         $rm -f temp.?;;
4501 *) eval "$var=\$varval";;
4502 esac'
4503
4504 : define an is-a-typedef? function that prompts if the type is not available.
4505 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4506 case "$inclist" in
4507 "") inclist="sys/types.h";;
4508 esac;
4509 eval "varval=\$$var";
4510 case "$varval" in
4511 "")
4512         $rm -f temp.c;
4513         for inc in $inclist; do
4514                 echo "#include <$inc>" >>temp.c;
4515         done;
4516         echo "#ifdef $type" >> temp.c;
4517         echo "printf(\"We have $type\");" >> temp.c;
4518         echo "#endif" >> temp.c;
4519         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4520         echo " " ;
4521         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4522         if $contains $type temp.E >/dev/null 2>&1; then
4523                 echo "$type found." >&4;
4524                 eval "$var=\$type";
4525         else
4526                 echo "$type NOT found." >&4;
4527                 dflt="$def";
4528                 . ./myread ;
4529                 eval "$var=\$ans";
4530         fi;
4531         $rm -f temp.?;;
4532 *) eval "$var=\$varval";;
4533 esac'
4534
4535 : define a shorthand compile call
4536 compile='
4537 mc_file=$1;
4538 shift;
4539 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4540 : define a shorthand compile call for compilations that should be ok.
4541 compile_ok='
4542 mc_file=$1;
4543 shift;
4544 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4545
4546 : check for lengths of integral types
4547 echo " "
4548 case "$intsize" in
4549 '')
4550         echo "Checking to see how big your integers are..." >&4
4551         $cat >try.c <<'EOCP'
4552 #include <stdio.h>
4553 int main()
4554 {
4555         printf("intsize=%d;\n", (int)sizeof(int));
4556         printf("longsize=%d;\n", (int)sizeof(long));
4557         printf("shortsize=%d;\n", (int)sizeof(short));
4558         exit(0);
4559 }
4560 EOCP
4561         set try
4562         if eval $compile_ok && $run ./try > /dev/null; then
4563                 eval `$run ./try`
4564                 echo "Your integers are $intsize bytes long."
4565                 echo "Your long integers are $longsize bytes long."
4566                 echo "Your short integers are $shortsize bytes long."
4567         else
4568                 $cat >&4 <<EOM
4569 !
4570 Help! I can't compile and run the intsize test program: please enlighten me!
4571 (This is probably a misconfiguration in your system or libraries, and
4572 you really ought to fix it.  Still, I'll try anyway.)
4573 !
4574 EOM
4575                 dflt=4
4576                 rp="What is the size of an integer (in bytes)?"
4577                 . ./myread
4578                 intsize="$ans"
4579                 dflt=$intsize
4580                 rp="What is the size of a long integer (in bytes)?"
4581                 . ./myread
4582                 longsize="$ans"
4583                 dflt=2
4584                 rp="What is the size of a short integer (in bytes)?"
4585                 . ./myread
4586                 shortsize="$ans"
4587         fi
4588         ;;
4589 esac
4590 $rm -f try try.*
4591
4592 : see what type lseek is declared as in the kernel
4593 rp="What is the type used for lseek's offset on this system?"
4594 set off_t lseektype long stdio.h sys/types.h
4595 eval $typedef_ask
4596
4597 echo " "
4598 echo "Checking to see how big your file offsets are..." >&4
4599 $cat >try.c <<EOCP
4600 #include <sys/types.h>
4601 #include <stdio.h>
4602 int main()
4603 {
4604     printf("%d\n", (int)sizeof($lseektype));
4605     return(0); 
4606 }
4607 EOCP
4608 set try
4609 if eval $compile_ok; then
4610         lseeksize=`$run ./try`
4611         echo "Your file offsets are $lseeksize bytes long."
4612 else
4613         dflt=$longsize
4614         echo " "
4615         echo "(I can't seem to compile the test program.  Guessing...)"
4616         rp="What is the size of your file offsets (in bytes)?"
4617         . ./myread
4618         lseeksize="$ans"
4619 fi
4620 $rm -f try.c try
4621
4622 : see what type file positions are declared as in the library
4623 rp="What is the type for file position used by fsetpos()?"
4624 set fpos_t fpostype long stdio.h sys/types.h
4625 eval $typedef_ask
4626
4627 echo " "
4628 case "$fpostype" in
4629 *_t) zzz="$fpostype"    ;;
4630 *)   zzz="fpos_t"       ;;
4631 esac
4632 echo "Checking the size of $zzz..." >&4 
4633 cat > try.c <<EOCP
4634 #include <sys/types.h>
4635 #include <stdio.h>
4636 int main() {
4637     printf("%d\n", (int)sizeof($fpostype));
4638     exit(0);
4639 }
4640 EOCP
4641 set try
4642 if eval $compile_ok; then
4643         yyy=`$run ./try`
4644         case "$yyy" in
4645         '')     fpossize=4
4646                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4647                 ;;
4648         *)      fpossize=$yyy
4649                 echo "Your $zzz is $fpossize bytes long."
4650                 ;;
4651         esac
4652 else
4653         dflt="$longsize"
4654         echo " " >&4
4655         echo "(I can't compile the test program.  Guessing...)" >&4
4656         rp="What is the size of your file positions (in bytes)?"
4657         . ./myread
4658         fpossize="$ans"
4659 fi
4660
4661
4662
4663 # Backward compatibility (uselfs is deprecated).
4664 case "$uselfs" in
4665 "$define"|true|[yY]*)
4666         cat <<EOM >&4
4667
4668 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4669 EOM
4670         uselargefiles="$define"
4671         ;;
4672 esac                          
4673
4674 case "$lseeksize:$fpossize" in
4675 8:8) cat <<EOM
4676
4677 You can have files larger than 2 gigabytes.
4678 EOM
4679    val="$define" ;;
4680 *)    case "$uselargefiles" in
4681    "$undef"|false|[nN]*) dflt='n' ;;
4682    *)   dflt='y' ;;
4683    esac
4684    cat <<EOM
4685
4686 Perl can be built to understand large files (files larger than 2 gigabytes)
4687 on some systems.  To do so, Configure can be run with -Duselargefiles.
4688
4689 If this doesn't make any sense to you, just accept the default '$dflt'.
4690 EOM
4691    rp='Try to understand large files, if available?'
4692    . ./myread
4693    case "$ans" in
4694    y|Y)         val="$define" ;;
4695    *)           val="$undef"  ;;
4696    esac
4697    ;;
4698 esac
4699 set uselargefiles
4700 eval $setvar
4701 case "$uselargefiles" in
4702 "$define")
4703 : Look for a hint-file generated 'call-back-unit'.  If the
4704 : user has specified that a large files perl is to be built,
4705 : we may need to set or change some other defaults.
4706         if $test -f uselargefiles.cbu; then
4707                 echo "Your platform has some specific hints for large file builds, using them..."
4708                 . ./uselargefiles.cbu
4709                 echo " "
4710                 echo "Rechecking to see how big your file offsets are..." >&4
4711                 $cat >try.c <<EOCP
4712 #include <sys/types.h>
4713 #include <stdio.h>
4714 int main()
4715 {
4716     printf("%d\n", (int)sizeof($lseektype));
4717     return(0); 
4718 }
4719 EOCP
4720                 set try
4721                 if eval $compile_ok; then
4722                         lseeksize=`$run ./try`
4723                         $echo "Your file offsets are now $lseeksize bytes long."
4724                 else
4725                         dflt="$lseeksize"
4726                         echo " "
4727                         echo "(I can't seem to compile the test program.  Guessing...)"
4728                         rp="What is the size of your file offsets (in bytes)?"
4729                         . ./myread
4730                         lseeksize="$ans"
4731                 fi
4732                 case "$fpostype" in
4733                 *_t) zzz="$fpostype"    ;;
4734                 *)   zzz="fpos_t"       ;;
4735                 esac
4736                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4737                 $cat > try.c <<EOCP
4738 #include <sys/types.h>
4739 #include <stdio.h>
4740 int main() {
4741     printf("%d\n", (int)sizeof($fpostype));
4742     exit(0);
4743 }
4744 EOCP
4745                 set try
4746                 if eval $compile_ok; then
4747                         yyy=`$run ./try`
4748                         dflt="$lseeksize"
4749                         case "$yyy" in
4750                         '')     echo " "
4751                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4752                                 ;;
4753                         *)      fpossize=$yyy
4754                                 echo " $fpossize bytes." >&4
4755                                 ;;
4756                         esac
4757                 else
4758                         dflt="$fpossize"
4759                         echo " "
4760                         echo "(I can't compile the test program.  Guessing...)" >&4
4761                         rp="What is the size of your file positions (in bytes)?"
4762                         . ./myread
4763                         fpossize="$ans"
4764                 fi
4765                 $rm -f try.c try
4766         fi
4767         ;;
4768 esac
4769
4770
4771 case "$usemorebits" in
4772 "$define"|true|[yY]*)
4773         use64bitint="$define"
4774         uselongdouble="$define"
4775         usemorebits="$define"
4776         ;;
4777 *)      usemorebits="$undef"
4778         ;;
4779 esac
4780
4781 : check for void type
4782 echo " "
4783 echo "Checking to see how well your C compiler groks the void type..." >&4
4784 case "$voidflags" in
4785 '')
4786         $cat >try.c <<'EOCP'
4787 #if TRY & 1
4788 void sub() {
4789 #else
4790 sub() {
4791 #endif
4792         extern void moo();      /* function returning void */
4793         void (*goo)();          /* ptr to func returning void */
4794 #if TRY & 8
4795         void *hue;              /* generic ptr */
4796 #endif
4797 #if TRY & 2
4798         void (*foo[10])();
4799 #endif
4800
4801 #if TRY & 4
4802         if(goo == moo) {
4803                 exit(0);
4804         }
4805 #endif
4806         exit(0);
4807 }
4808 int main() { sub(); }
4809 EOCP
4810         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4811                 voidflags=$defvoidused
4812         echo "Good.  It appears to support void to the level $package wants.">&4
4813                 if $contains warning .out >/dev/null 2>&1; then
4814                         echo "However, you might get some warnings that look like this:"
4815                         $cat .out
4816                 fi
4817         else
4818 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4819                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4820                         echo "It supports 1..."
4821                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4822                                 echo "It also supports 2..."
4823                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4824                                         voidflags=7
4825                                         echo "And it supports 4 but not 8 definitely."
4826                                 else
4827                                         echo "It doesn't support 4..."
4828                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4829                                                 voidflags=11
4830                                                 echo "But it supports 8."
4831                                         else
4832                                                 voidflags=3
4833                                                 echo "Neither does it support 8."
4834                                         fi
4835                                 fi
4836                         else
4837                                 echo "It does not support 2..."
4838                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4839                                         voidflags=13
4840                                         echo "But it supports 4 and 8."
4841                                 else
4842                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4843                                                 voidflags=5
4844                                                 echo "And it supports 4 but has not heard about 8."
4845                                         else
4846                                                 echo "However it supports 8 but not 4."
4847                                         fi
4848                                 fi
4849                         fi
4850                 else
4851                         echo "There is no support at all for void."
4852                         voidflags=0
4853                 fi
4854         fi
4855 esac
4856 case "$voidflags" in
4857 "$defvoidused") ;;
4858 *)      $cat >&4 <<'EOM'
4859   Support flag bits are:
4860     1: basic void declarations.
4861     2: arrays of pointers to functions returning void.
4862     4: operations between pointers to and addresses of void functions.
4863     8: generic void pointers.
4864 EOM
4865         dflt="$voidflags";
4866         rp="Your void support flags add up to what?"
4867         . ./myread
4868         voidflags="$ans"
4869         ;;
4870 esac
4871 $rm -f try.* .out
4872
4873 : check for length of pointer
4874 echo " "
4875 case "$ptrsize" in
4876 '')
4877         echo "Checking to see how big your pointers are..." >&4
4878         if test "$voidflags" -gt 7; then
4879                 echo '#define VOID_PTR char *' > try.c
4880         else
4881                 echo '#define VOID_PTR void *' > try.c
4882         fi
4883         $cat >>try.c <<'EOCP'
4884 #include <stdio.h>
4885 int main()
4886 {
4887     printf("%d\n", (int)sizeof(VOID_PTR));
4888     exit(0);
4889 }
4890 EOCP
4891         set try
4892         if eval $compile_ok; then
4893                 ptrsize=`$run ./try`
4894                 echo "Your pointers are $ptrsize bytes long."
4895         else
4896                 dflt='4'
4897                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
4898                 rp="What is the size of a pointer (in bytes)?"
4899                 . ./myread
4900                 ptrsize="$ans"
4901         fi
4902         ;;
4903 esac
4904 $rm -f try.c try
4905
4906 : check for long long
4907 echo " "
4908 echo "Checking to see if you have long long..." >&4
4909 echo 'int main() { long long x = 7; return 0; }' > try.c
4910 set try
4911 if eval $compile; then
4912         val="$define"
4913         echo "You have long long."
4914 else
4915         val="$undef"
4916         echo "You do not have long long."
4917 fi
4918 $rm try.*
4919 set d_longlong
4920 eval $setvar
4921
4922 : check for length of long long
4923 case "${d_longlong}${longlongsize}" in
4924 $define)
4925         echo " "
4926         echo "Checking to see how big your long longs are..." >&4
4927         $cat >try.c <<'EOCP'
4928 #include <stdio.h>
4929 int main()
4930 {
4931     printf("%d\n", (int)sizeof(long long));
4932     return(0);
4933 }
4934 EOCP
4935         set try
4936         if eval $compile_ok; then
4937                 longlongsize=`$run ./try`
4938                 echo "Your long longs are $longlongsize bytes long."
4939         else
4940                 dflt='8'
4941                 echo " "
4942                 echo "(I can't seem to compile the test program.  Guessing...)"
4943                 rp="What is the size of a long long (in bytes)?"
4944                 . ./myread
4945                 longlongsize="$ans"
4946         fi
4947         if $test "X$longsize" = "X$longlongsize"; then
4948                 echo "(That isn't any different from an ordinary long.)"
4949         fi      
4950         ;;
4951 esac
4952 $rm -f try.* try
4953
4954 : determine filename position in cpp output
4955 echo " "
4956 echo "Computing filename position in cpp output for #include directives..." >&4
4957 echo '#include <stdio.h>' > foo.c
4958 $cat >fieldn <<EOF
4959 $startsh
4960 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4961 $grep '^[       ]*#.*stdio\.h' | \
4962 while read cline; do
4963         pos=1
4964         set \$cline
4965         while $test \$# -gt 0; do
4966                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4967                         echo "\$pos"
4968                         exit 0
4969                 fi
4970                 shift
4971                 pos=\`expr \$pos + 1\`
4972         done
4973 done
4974 EOF
4975 chmod +x fieldn
4976 fieldn=`./fieldn`
4977 $rm -f foo.c fieldn
4978 case $fieldn in
4979 '') pos='???';;
4980 1) pos=first;;
4981 2) pos=second;;
4982 3) pos=third;;
4983 *) pos="${fieldn}th";;
4984 esac
4985 echo "Your cpp writes the filename in the $pos field of the line."
4986
4987 : locate header file
4988 $cat >findhdr <<EOF
4989 $startsh
4990 wanted=\$1
4991 name=''
4992 for usrincdir in $usrinc
4993 do
4994         if test -f \$usrincdir/\$wanted; then
4995                 echo "\$usrincdir/\$wanted"
4996                 exit 0
4997         fi
4998 done
4999 awkprg='{ print \$$fieldn }'
5000 echo "#include <\$wanted>" > foo\$\$.c
5001 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5002 $grep "^[       ]*#.*\$wanted" | \
5003 while read cline; do
5004         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5005         case "\$name" in
5006         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5007         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5008         *) exit 2;;
5009         esac;
5010 done;
5011 #
5012 # status = 0: grep returned 0 lines, case statement not executed
5013 # status = 1: headerfile found
5014 # status = 2: while loop executed, no headerfile found
5015 #
5016 status=\$?
5017 $rm -f foo\$\$.c;
5018 if test \$status -eq 1; then
5019         exit 0;
5020 fi
5021 exit 1
5022 EOF
5023 chmod +x findhdr
5024
5025 : define an alternate in-header-list? function
5026 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5027 cont=true; xxf="echo \"<\$1> found.\" >&4";
5028 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5029 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5030 esac;
5031 case $# in 4) instead=instead;; *) instead="at last";; esac;
5032 while $test "$cont"; do
5033         xxx=`./findhdr $1`
5034         var=$2; eval "was=\$$2";
5035         if $test "$xxx" && $test -r "$xxx";
5036         then eval $xxf;
5037         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5038                 cont="";
5039         else eval $xxnf;
5040         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5041         set $yyy; shift; shift; yyy=$@;
5042         case $# in 0) cont="";;
5043         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5044                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5045         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5046                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5047         esac;
5048 done;
5049 while $test "$yyy";
5050 do set $yyy; var=$2; eval "was=\$$2";
5051         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5052         set $yyy; shift; shift; yyy=$@;
5053 done'
5054
5055 : see if inttypes.h is available
5056 : we want a real compile instead of Inhdr because some systems
5057 : have an inttypes.h which includes non-existent headers
5058 echo " "
5059 $cat >try.c <<EOCP
5060 #include <inttypes.h>
5061 int main() {
5062         static int32_t foo32 = 0x12345678;
5063 }
5064 EOCP
5065 set try
5066 if eval $compile; then
5067         echo "<inttypes.h> found." >&4
5068         val="$define"
5069 else
5070         echo "<inttypes.h> NOT found." >&4
5071         val="$undef"
5072 fi
5073 $rm -f try.c try
5074 set i_inttypes
5075 eval $setvar
5076
5077 : check for int64_t
5078 echo " "
5079 echo "Checking to see if you have int64_t..." >&4
5080 $cat >try.c <<EOCP
5081 #include <sys/types.h>
5082 #$i_inttypes I_INTTYPES
5083 #ifdef I_INTTYPES
5084 #include <inttypes.h>
5085 #endif
5086 int main() { int64_t x = 7; }
5087 EOCP
5088 set try
5089 if eval $compile; then
5090         val="$define"
5091         echo "You have int64_t."
5092 else
5093         val="$undef"
5094         echo "You do not have int64_t."
5095 fi
5096 $rm -f try try.*
5097 set d_int64_t
5098 eval $setvar
5099
5100
5101 echo " "
5102 echo "Checking which 64-bit integer type we could use..." >&4
5103
5104 case "$intsize" in
5105 8) val=int
5106    set quadtype
5107    eval $setvar
5108    val='"unsigned int"'
5109    set uquadtype
5110    eval $setvar
5111    quadkind=1
5112    ;;
5113 *) case "$longsize" in
5114    8) val=long
5115       set quadtype
5116       eval $setvar
5117       val='"unsigned long"'
5118       set uquadtype
5119       eval $setvar
5120       quadkind=2
5121       ;;
5122    *) case "$d_longlong:$longlongsize" in
5123       define:8)
5124         val='"long long"'
5125         set quadtype
5126         eval $setvar
5127         val='"unsigned long long"'
5128         set uquadtype
5129         eval $setvar
5130         quadkind=3
5131         ;;
5132       *) case "$d_int64_t" in
5133          define)
5134            val=int64_t
5135            set quadtype
5136            eval $setvar
5137            val=uint64_t
5138            set uquadtype
5139            eval $setvar
5140            quadkind=4
5141            ;;
5142          esac
5143          ;;
5144       esac
5145       ;;
5146    esac
5147    ;;
5148 esac
5149
5150 case "$quadtype" in
5151 '')     echo "Alas, no 64-bit integer types in sight." >&4
5152         d_quad="$undef"
5153         ;;
5154 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5155         d_quad="$define"
5156         ;;
5157 esac
5158
5159
5160 case "$uselonglong" in
5161 "$define"|true|[yY]*)
5162         cat <<EOM >&4
5163
5164 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5165 EOM
5166         use64bitint="$define"
5167         ;;
5168 esac                          
5169 case "$use64bits" in
5170 "$define"|true|[yY]*)
5171         cat <<EOM >&4
5172
5173 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5174 EOM
5175         use64bitint="$define"
5176         ;;
5177 esac                          
5178 case "$use64bitints" in
5179 "$define"|true|[yY]*)
5180         cat <<EOM >&4
5181
5182 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5183 EOM
5184         use64bitint="$define"
5185         ;;
5186 esac                          
5187 case "$use64bitsint" in
5188 "$define"|true|[yY]*)
5189         cat <<EOM >&4
5190
5191 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5192 EOM
5193         use64bitint="$define"
5194         ;;
5195 esac                          
5196 case "$uselonglongs" in
5197 "$define"|true|[yY]*)
5198         cat <<EOM >&4
5199
5200 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5201 EOM
5202         use64bitint="$define"
5203         ;;
5204 esac                          
5205 case "$use64bitsall" in
5206 "$define"|true|[yY]*)
5207         cat <<EOM >&4
5208
5209 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5210 EOM
5211         use64bitall="$define"
5212         ;;
5213 esac                          
5214
5215 case "$ccflags" in
5216 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5217 esac
5218 case "$use64bitall" in
5219 "$define"|true|[yY]*) use64bitint="$define" ;;
5220 esac
5221
5222 case "$longsize" in
5223 8) cat <<EOM
5224
5225 You have natively 64-bit long integers.
5226 EOM
5227    val="$define"
5228    ;;
5229 *) case "$use64bitint" in
5230    "$define"|true|[yY]*) dflt='y';;
5231    *) dflt='n';;
5232    esac
5233    case "$d_quad" in
5234    "$define") ;;
5235    *) dflt='n' ;;
5236    esac
5237    cat <<EOM
5238
5239 Perl can be built to take advantage of 64-bit integer types
5240 on some systems.  To do so, Configure can be run with -Duse64bitint.
5241 Choosing this option will most probably introduce binary incompatibilities.
5242
5243 If this doesn't make any sense to you, just accept the default '$dflt'.
5244 (The default has been chosen based on your configuration.)
5245 EOM
5246    rp='Try to use 64-bit integers, if available?'
5247    . ./myread
5248    case "$ans" in
5249    [yY]*) val="$define" ;;
5250    *)     val="$undef"  ;;
5251    esac
5252    ;;
5253 esac
5254 set use64bitint
5255 eval $setvar
5256
5257 case "$use64bitall" in
5258 "$define"|true|[yY]*) dflt='y' ;;
5259 *) case "$longsize" in
5260    8) dflt='y' ;;
5261    *) dflt='n' ;;
5262    esac
5263    ;;
5264 esac    
5265 cat <<EOM
5266
5267 You may also choose to try maximal 64-bitness.  It means using as much
5268 64-bitness as possible on the platform.  This in turn means even more
5269 binary incompatibilities.  On the other hand, your platform may not
5270 have any more 64-bitness available than what you already have chosen.
5271
5272 If this doesn't make any sense to you, just accept the default '$dflt'.
5273 (The default has been chosen based on your configuration.)
5274 EOM
5275 rp='Try to use maximal 64-bit support, if available?'
5276 . ./myread
5277 case "$ans" in
5278 [yY]*) val="$define" ;;
5279 *)     val="$undef"  ;;
5280 esac
5281 set use64bitall
5282 eval $setvar
5283 case "$use64bitall" in
5284 "$define")
5285         case "$use64bitint" in
5286         "$undef")
5287                 cat <<EOM
5288
5289 Since you have chosen a maximally 64-bit build, I'm also turning on
5290 the use of 64-bit integers.
5291 EOM
5292                 use64bitint="$define" ;;
5293         esac
5294         ;;
5295 esac
5296
5297 case "$use64bitall" in
5298 "$define"|true|[yY]*)
5299         case "$ptrsize" in
5300         4)      cat <<EOM >&4
5301
5302 *** You have chosen a maximally 64-bit build, but your pointers
5303 *** are only 4 bytes wide, disabling maximal 64-bitness.
5304
5305 EOM
5306                 use64bitall="$undef"
5307                 case "$use64bitint" in
5308                 "$define"|true|[yY]*) ;;
5309                 *)      cat <<EOM >&4
5310
5311 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5312
5313 EOM
5314                         use64bitint="$define"
5315                         ;;
5316                 esac
5317                 ;;
5318         esac
5319         ;;
5320 esac
5321
5322 case "$use64bitint" in
5323 "$define"|true|[yY]*)
5324 : Look for a hint-file generated 'call-back-unit'.  If the
5325 : user has specified that a 64-bit perl is to be built,
5326 : we may need to set or change some other defaults.
5327         if $test -f use64bitint.cbu; then
5328                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5329                 . ./use64bitint.cbu
5330         fi
5331         case "$longsize" in
5332         4) case "$archname64" in
5333            '') archname64=64int ;;
5334            esac
5335            ;;
5336         esac
5337         ;;
5338 esac
5339
5340 case "$use64bitall" in
5341 "$define"|true|[yY]*)
5342 : Look for a hint-file generated 'call-back-unit'.  If the
5343 : user has specified that a maximally 64-bit perl is to be built,
5344 : we may need to set or change some other defaults.
5345         if $test -f use64bitall.cbu; then
5346                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5347                 . ./use64bitall.cbu
5348         fi
5349         case "$longsize" in
5350         4) case "$archname64" in
5351            ''|64int) archname64=64all ;;
5352            esac
5353            ;;
5354         esac
5355         ;;
5356 esac
5357
5358 echo " "
5359 echo "Checking for GNU C Library..." >&4
5360 cat >try.c <<EOM
5361 #include <stdio.h>
5362 int main()
5363 {
5364 #ifdef __GLIBC__
5365     exit(0);
5366 #else
5367     exit(1);
5368 #endif
5369 }
5370 EOM
5371 set try
5372 if eval $compile_ok && $run ./try; then
5373         val="$define"
5374         echo "You are using the GNU C Library"
5375 else
5376         val="$undef"
5377         echo "You are not using the GNU C Library"
5378 fi
5379 $rm -f try try.*
5380 set d_gnulibc
5381 eval $setvar
5382
5383 : see if nm is to be used to determine whether a symbol is defined or not
5384 case "$usenm" in
5385 '')
5386         dflt=''
5387         case "$d_gnulibc" in
5388         "$define")
5389                 echo " "
5390                 echo "nm probably won't work on the GNU C Library." >&4
5391                 dflt=n
5392                 ;;
5393         esac
5394         case "$dflt" in
5395         '') 
5396                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5397                         echo " "
5398                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5399                         echo "'nm' won't be sufficient on this sytem." >&4
5400                         dflt=n
5401                 fi
5402                 ;;
5403         esac
5404         case "$dflt" in
5405         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5406                 if $test $dflt -gt 20; then
5407                         dflt=y
5408                 else
5409                         dflt=n
5410                 fi
5411                 ;;
5412         esac
5413         ;;
5414 *)
5415         case "$usenm" in
5416         true|$define) dflt=y;;
5417         *) dflt=n;;
5418         esac
5419         ;;
5420 esac
5421 $cat <<EOM
5422
5423 I can use $nm to extract the symbols from your C libraries. This
5424 is a time consuming task which may generate huge output on the disk (up
5425 to 3 megabytes) but that should make the symbols extraction faster. The
5426 alternative is to skip the 'nm' extraction part and to compile a small
5427 test program instead to determine whether each symbol is present. If
5428 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5429 this may be the best solution.
5430
5431 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5432
5433 EOM
5434 rp="Shall I use $nm to extract C symbols from the libraries?"
5435 . ./myread
5436 case "$ans" in
5437 [Nn]*) usenm=false;;
5438 *) usenm=true;;
5439 esac
5440
5441 runnm=$usenm
5442 case "$reuseval" in
5443 true) runnm=false;;
5444 esac
5445
5446 : nm options which may be necessary
5447 case "$nm_opt" in
5448 '') if $test -f /mach_boot; then
5449                 nm_opt=''       # Mach
5450         elif $test -d /usr/ccs/lib; then
5451                 nm_opt='-p'     # Solaris (and SunOS?)
5452         elif $test -f /dgux; then
5453                 nm_opt='-p'     # DG-UX
5454         elif $test -f /lib64/rld; then
5455                 nm_opt='-p'     # 64-bit Irix
5456         else
5457                 nm_opt=''
5458         fi;;
5459 esac
5460
5461 : nm options which may be necessary for shared libraries but illegal
5462 : for archive libraries.  Thank you, Linux.
5463 case "$nm_so_opt" in
5464 '')     case "$myuname" in
5465         *linux*)
5466                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5467                         nm_so_opt='--dynamic'
5468                 fi
5469                 ;;
5470         esac
5471         ;;
5472 esac
5473
5474 case "$runnm" in
5475 true)
5476 : get list of predefined functions in a handy place
5477 echo " "
5478 case "$libc" in
5479 '') libc=unknown
5480         case "$libs" in
5481         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5482         esac
5483         ;;
5484 esac
5485 case "$libs" in
5486 '') ;;
5487 *)  for thislib in $libs; do
5488         case "$thislib" in
5489         -lc|-lc_s)
5490                 : Handle C library specially below.
5491                 ;;
5492         -l*)
5493                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5494                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5495                         :
5496                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5497                         :
5498                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5499                         :
5500                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5501                         :
5502                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5503                         :
5504                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5505                         :
5506                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5507                         :
5508                 else
5509                         try=''
5510                 fi
5511                 libnames="$libnames $try"
5512                 ;;
5513         *) libnames="$libnames $thislib" ;;
5514         esac
5515         done
5516         ;;
5517 esac
5518 xxx=normal
5519 case "$libc" in
5520 unknown)
5521         set /lib/libc.$so
5522         for xxx in $libpth; do
5523                 $test -r $1 || set $xxx/libc.$so
5524                 : The messy sed command sorts on library version numbers.
5525                 $test -r $1 || \
5526                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5527                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5528                                 h
5529                                 s/[0-9][0-9]*/0000&/g
5530                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5531                                 G
5532                                 s/\n/ /' | \
5533                          $sort | $sed -e 's/^.* //'`
5534                 eval set \$$#
5535         done
5536         $test -r $1 || set /usr/ccs/lib/libc.$so
5537         $test -r $1 || set /lib/libsys_s$_a
5538         ;;
5539 *)
5540         set blurfl
5541         ;;
5542 esac
5543 if $test -r "$1"; then
5544         echo "Your (shared) C library seems to be in $1."
5545         libc="$1"
5546 elif $test -r /lib/libc && $test -r /lib/clib; then
5547         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5548         xxx=apollo
5549         libc='/lib/clib /lib/libc'
5550         if $test -r /lib/syslib; then
5551                 echo "(Your math library is in /lib/syslib.)"
5552                 libc="$libc /lib/syslib"
5553         fi
5554 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5555         echo "Your C library seems to be in $libc, as you said before."
5556 elif $test -r $incpath/usr/lib/libc$_a; then
5557         libc=$incpath/usr/lib/libc$_a;
5558         echo "Your C library seems to be in $libc.  That's fine."
5559 elif $test -r /lib/libc$_a; then
5560         libc=/lib/libc$_a;
5561         echo "Your C library seems to be in $libc.  You're normal."
5562 else
5563         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5564                 :
5565         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5566                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5567         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5568                 :
5569         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5570                 :
5571         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5572                 :
5573         else
5574                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5575         fi
5576         if $test -r "$tans"; then
5577                 echo "Your C library seems to be in $tans, of all places."
5578                 libc=$tans
5579         else
5580                 libc='blurfl'
5581         fi
5582 fi
5583 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5584         dflt="$libc"
5585         cat <<EOM
5586
5587 If the guess above is wrong (which it might be if you're using a strange
5588 compiler, or your machine supports multiple models), you can override it here.
5589
5590 EOM
5591 else
5592         dflt=''
5593         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5594         cat >&4 <<EOM
5595 I can't seem to find your C library.  I've looked in the following places:
5596
5597 EOM
5598         $sed 's/^/      /' libpath
5599         cat <<EOM
5600
5601 None of these seems to contain your C library. I need to get its name...
5602
5603 EOM
5604 fi
5605 fn=f
5606 rp='Where is your C library?'
5607 . ./getfile
5608 libc="$ans"
5609
5610 echo " "
5611 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5612 set X `cat libnames`
5613 shift
5614 xxx=files
5615 case $# in 1) xxx=file; esac
5616 echo "Extracting names from the following $xxx for later perusal:" >&4
5617 echo " "
5618 $sed 's/^/      /' libnames >&4
5619 echo " "
5620 $echo $n "This may take a while...$c" >&4
5621
5622 for file in $*; do
5623         case $file in
5624         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5625         *) $nm $nm_opt $file 2>/dev/null;;
5626         esac
5627 done >libc.tmp
5628
5629 $echo $n ".$c"
5630 $grep fprintf libc.tmp > libc.ptf
5631 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5632 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5633 xxx='[ADTSIW]'
5634 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5635         eval $xscan;\
5636         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5637                 eval $xrun
5638 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5639         eval $xscan;\
5640         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5641                 eval $xrun
5642 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5643         eval $xscan;\
5644         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5645                 eval $xrun
5646 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5647         eval $xscan;\
5648         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5649                 eval $xrun
5650 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5651         eval $xscan;\
5652         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5653                 eval $xrun
5654 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5655         eval $xscan;\
5656         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5657                 eval $xrun
5658 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5659                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5660         eval $xscan;\
5661         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5662                 eval $xrun
5663 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5664         eval $xscan;\
5665         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5666                 eval $xrun
5667 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5668         eval $xscan;\
5669         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5670                 eval $xrun
5671 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5672         eval $xscan;\
5673         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5674                 eval $xrun
5675 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5676         eval $xscan;\
5677         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5678                 eval $xrun
5679 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5680         eval $xscan;\
5681         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5682                 eval $xrun
5683 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5684         eval $xscan;\
5685         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5686                 eval $xrun
5687 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5688         eval $xscan;\
5689         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5690                 eval $xrun
5691 else
5692         $nm -p $* 2>/dev/null >libc.tmp
5693         $grep fprintf libc.tmp > libc.ptf
5694         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5695                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5696         then
5697                 nm_opt='-p'
5698                 eval $xrun
5699         else
5700                 echo " "
5701                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5702                 com=''
5703                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5704                         for thisname in $libnames $libc; do
5705                                 $ar t $thisname >>libc.tmp
5706                         done
5707                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5708                         echo "Ok." >&4
5709                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5710                         # Repeat libc to extract forwarders to DLL entries too
5711                         for thisname in $libnames $libc; do
5712                                 $ar tv $thisname >>libc.tmp
5713                                 # Revision 50 of EMX has bug in $ar.
5714                                 # it will not extract forwarders to DLL entries
5715                                 # Use emximp which will extract exactly them.
5716                                 emximp -o tmp.imp $thisname \
5717                                     2>/dev/null && \
5718                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5719                                     < tmp.imp >>libc.tmp
5720                                 $rm tmp.imp
5721                         done
5722                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5723                         echo "Ok." >&4
5724                 else
5725                         echo "$ar didn't seem to work right." >&4
5726                         echo "Maybe this is a Cray...trying bld instead..." >&4
5727                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5728                         then
5729                                 for thisname in $libnames; do
5730                                         bld t $libnames | \
5731                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5732                                         $ar t $thisname >>libc.tmp
5733                                 done
5734                                 echo "Ok." >&4
5735                         else
5736                                 echo "That didn't work either.  Giving up." >&4
5737                                 exit 1
5738                         fi
5739                 fi
5740         fi
5741 fi
5742 nm_extract="$com"
5743 if $test -f /lib/syscalls.exp; then
5744         echo " "
5745         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5746         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5747 fi
5748 ;;
5749 esac
5750 $rm -f libnames libpath
5751
5752 : is a C symbol defined?
5753 csym='tlook=$1;
5754 case "$3" in
5755 -v) tf=libc.tmp; tc=""; tdc="";;
5756 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5757 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5758 esac;
5759 tx=yes;
5760 case "$reuseval-$4" in
5761 true-) ;;
5762 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5763 esac;
5764 case "$tx" in
5765 yes)
5766         case "$runnm" in
5767         true)
5768                 if $contains $tlook $tf >/dev/null 2>&1;
5769                 then tval=true;
5770                 else tval=false;
5771                 fi;;
5772         *)
5773                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5774                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5775                 then tval=true;
5776                 else tval=false;
5777                 fi;
5778                 $rm -f t t.c;;
5779         esac;;
5780 *)
5781         case "$tval" in
5782         $define) tval=true;;
5783         *) tval=false;;
5784         esac;;
5785 esac;
5786 eval "$2=$tval"'
5787
5788 : define an is-in-libc? function
5789 inlibc='echo " "; td=$define; tu=$undef;
5790 sym=$1; var=$2; eval "was=\$$2";
5791 tx=yes;
5792 case "$reuseval$was" in
5793 true) ;;
5794 true*) tx=no;;
5795 esac;
5796 case "$tx" in
5797 yes)
5798         set $sym tres -f;
5799         eval $csym;
5800         case "$tres" in
5801         true)
5802                 echo "$sym() found." >&4;
5803                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5804         *)
5805                 echo "$sym() NOT found." >&4;
5806                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5807         esac;;
5808 *)
5809         case "$was" in
5810         $define) echo "$sym() found." >&4;;
5811         *) echo "$sym() NOT found." >&4;;
5812         esac;;
5813 esac'
5814
5815 : see if sqrtl exists
5816 set sqrtl d_sqrtl
5817 eval $inlibc
5818
5819 case "$ccflags" in
5820 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5821 esac
5822
5823 case "$uselongdouble" in
5824 $define|true|[yY]*)     dflt='y';;
5825 *) dflt='n';;
5826 esac
5827 cat <<EOM
5828
5829 Perl can be built to take advantage of long doubles which
5830 (if available) may give more accuracy and range for floating point numbers.
5831
5832 If this doesn't make any sense to you, just accept the default '$dflt'.
5833 EOM
5834 rp='Try to use long doubles if available?'
5835 . ./myread
5836 case "$ans" in
5837 y|Y)    val="$define"   ;;
5838 *)      val="$undef"    ;;
5839 esac
5840 set uselongdouble
5841 eval $setvar
5842
5843 case "$uselongdouble" in
5844 true|[yY]*) uselongdouble="$define" ;;
5845 esac
5846
5847 case "$uselongdouble" in
5848 $define)
5849 : Look for a hint-file generated 'call-back-unit'.  If the
5850 : user has specified that long doubles should be used,
5851 : we may need to set or change some other defaults.
5852         if $test -f uselongdouble.cbu; then
5853                 echo "Your platform has some specific hints for long doubles, using them..."
5854                 . ./uselongdouble.cbu
5855         else
5856                 $cat <<EOM
5857 (Your platform doesn't have any specific hints for long doubles.)
5858 EOM
5859         fi
5860         ;;
5861 esac
5862
5863 case "$uselongdouble:$d_sqrtl" in
5864 $define:$undef)
5865                 $cat <<EOM >&4
5866
5867 *** You requested the use of long doubles but you do not seem to have
5868 *** the mathematic functions for long doubles.  I'm disabling the use
5869 *** of long doubles.
5870
5871 EOM
5872         uselongdouble=$undef
5873         ;;
5874 esac
5875
5876 : check for length of double
5877 echo " "
5878 case "$doublesize" in
5879 '')
5880         echo "Checking to see how big your double precision numbers are..." >&4
5881         $cat >try.c <<'EOCP'
5882 #include <stdio.h>
5883 int main()
5884 {
5885     printf("%d\n", (int)sizeof(double));
5886     exit(0);
5887 }
5888 EOCP
5889         set try
5890         if eval $compile_ok; then
5891                 doublesize=`$run ./try`
5892                 echo "Your double is $doublesize bytes long."
5893         else
5894                 dflt='8'
5895                 echo "(I can't seem to compile the test program.  Guessing...)"
5896                 rp="What is the size of a double precision number (in bytes)?"
5897                 . ./myread
5898                 doublesize="$ans"
5899         fi
5900         ;;
5901 esac
5902 $rm -f try.c try
5903
5904 : check for long doubles
5905 echo " "
5906 echo "Checking to see if you have long double..." >&4
5907 echo 'int main() { long double x = 7.0; }' > try.c
5908 set try
5909 if eval $compile; then
5910         val="$define"
5911         echo "You have long double."
5912 else
5913         val="$undef"
5914         echo "You do not have long double."
5915 fi
5916 $rm try.*
5917 set d_longdbl
5918 eval $setvar
5919
5920 : check for length of long double
5921 case "${d_longdbl}${longdblsize}" in
5922 $define)
5923         echo " "
5924         echo "Checking to see how big your long doubles are..." >&4
5925         $cat >try.c <<'EOCP'
5926 #include <stdio.h>
5927 int main()
5928 {
5929         printf("%d\n", sizeof(long double));
5930 }
5931 EOCP
5932         set try
5933         set try
5934         if eval $compile; then
5935                 longdblsize=`$run ./try`
5936                 echo "Your long doubles are $longdblsize bytes long."
5937         else
5938                 dflt='8'
5939                 echo " "
5940                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5941                 rp="What is the size of a long double (in bytes)?"
5942                 . ./myread
5943                 longdblsize="$ans"
5944         fi
5945         if $test "X$doublesize" = "X$longdblsize"; then
5946                 echo "(That isn't any different from an ordinary double.)"
5947         fi      
5948         ;;
5949 esac
5950 $rm -f try.* try
5951
5952 case "$useperlio" in
5953 $define|true|[yY]*|'')  dflt='y';;
5954 *) dflt='n';;
5955 esac
5956 cat <<EOM
5957
5958 Previous version of $package used the standard IO mechanisms as
5959 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
5960 alternate IO mechanisms via the PerlIO abstraction layer, but the
5961 stdio mechanism is still available if needed.  The abstraction layer
5962 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
5963 Using PerlIO with sfio may cause problems with some extension modules.
5964
5965 If this doesn't make any sense to you, just accept the default '$dflt'.
5966 EOM
5967 rp='Use the PerlIO abstraction layer?'
5968 . ./myread
5969 case "$ans" in
5970 y|Y) 
5971         val="$define"
5972         ;;
5973 *)      
5974         echo "Ok, doing things the stdio way."
5975         val="$undef"
5976         ;;
5977 esac
5978 set useperlio
5979 eval $setvar 
5980
5981 case "$usesocks" in
5982 $define|true|[yY]*)
5983         case "$useperlio" in
5984         $define|true|[yY]*) ;;
5985         *)      cat >&4 <<EOM
5986
5987 You are using the SOCKS proxy protocol library which means that you
5988 should also use the PerlIO layer.  You may be headed for trouble.
5989
5990 EOM
5991                 ;;
5992         esac
5993         ;;
5994 esac
5995
5996         
5997 : determine the architecture name
5998 echo " "
5999 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
6000         tarch=`arch`"-$osname"
6001 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
6002         if uname -m > tmparch 2>&1 ; then
6003                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
6004                         -e 's/$/'"-$osname/" tmparch`
6005         else
6006                 tarch="$osname"
6007         fi
6008         $rm -f tmparch
6009 else
6010         tarch="$osname"
6011 fi
6012 case "$myarchname" in
6013 ''|"$tarch") ;;
6014 *)
6015         echo "(Your architecture name used to be $myarchname.)"
6016         archname=''
6017         ;;
6018 esac
6019 case "$targetarch" in
6020 '') ;;
6021 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
6022 esac
6023 myarchname="$tarch"
6024 case "$archname" in
6025 '') dflt="$tarch";;
6026 *) dflt="$archname";;
6027 esac
6028 rp='What is your architecture name'
6029 . ./myread
6030 archname="$ans"
6031 case "$usethreads" in
6032 $define)
6033         echo "Threads selected." >&4
6034         case "$archname" in
6035         *-thread*) echo "...and architecture name already has -thread." >&4
6036                 ;;
6037         *)      archname="$archname-thread"
6038                 echo "...setting architecture name to $archname." >&4
6039                 ;;
6040         esac
6041         ;;
6042 esac
6043 case "$usemultiplicity" in
6044 $define)
6045         echo "Multiplicity selected." >&4
6046         case "$archname" in
6047         *-multi*) echo "...and architecture name already has -multi." >&4
6048                 ;;
6049         *)      archname="$archname-multi"
6050                 echo "...setting architecture name to $archname." >&4
6051                 ;;
6052         esac
6053         ;;
6054 esac
6055 case "$use64bitint$use64bitall" in
6056 *"$define"*)
6057         case "$archname64" in
6058         '')
6059                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6060                 ;;
6061         *)
6062                 case "$use64bitint" in
6063                 "$define") echo "64 bit integers selected." >&4 ;;
6064                 esac
6065                 case "$use64bitall" in
6066                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6067                 esac
6068                 case "$archname" in
6069                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6070                         ;;
6071                 *)      archname="$archname-$archname64"
6072                         echo "...setting architecture name to $archname." >&4
6073                         ;;
6074                 esac
6075                 ;;
6076         esac
6077 esac
6078 case "$uselongdouble" in
6079 $define)
6080         echo "Long doubles selected." >&4
6081         case "$longdblsize" in
6082         $doublesize)
6083                 "...but long doubles are equal to doubles, not changing architecture name." >&4
6084                 ;;
6085         *)
6086                 case "$archname" in
6087                 *-ld*) echo "...and architecture name already has -ld." >&4
6088                         ;;
6089                 *)      archname="$archname-ld"
6090                         echo "...setting architecture name to $archname." >&4
6091                         ;;
6092                 esac
6093                 ;;
6094         esac
6095         ;;
6096 esac
6097 case "$useperlio" in
6098 $define)
6099         echo "Perlio selected." >&4
6100         ;;
6101 *)
6102         echo "Perlio not selected, using stdio." >&4
6103         case "$archname" in
6104         *-stdio*) echo "...and architecture name already has -stdio." >&4
6105                 ;;
6106         *)      archname="$archname-stdio"
6107                 echo "...setting architecture name to $archname." >&4
6108                 ;;
6109         esac
6110         ;;
6111 esac
6112
6113 : determine root of directory hierarchy where package will be installed.
6114 case "$prefix" in
6115 '')
6116         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
6117         ;;
6118 *)
6119         dflt="$prefix"
6120         ;;
6121 esac
6122 $cat <<EOM
6123
6124 By default, $package will be installed in $dflt/bin, manual pages
6125 under $dflt/man, etc..., i.e. with $dflt as prefix for all
6126 installation directories. Typically this is something like /usr/local.
6127 If you wish to have binaries under /usr/bin but other parts of the
6128 installation under /usr/local, that's ok: you will be prompted
6129 separately for each of the installation directories, the prefix being
6130 only used to set the defaults.
6131
6132 EOM
6133 fn=d~
6134 rp='Installation prefix to use?'
6135 . ./getfile
6136 oldprefix=''
6137 case "$prefix" in
6138 '') ;;
6139 *)
6140         case "$ans" in
6141         "$prefix") ;;
6142         *) oldprefix="$prefix";;
6143         esac
6144         ;;
6145 esac
6146 prefix="$ans"
6147 prefixexp="$ansexp"
6148
6149 case "$afsroot" in
6150 '')     afsroot=/afs ;;
6151 *)      afsroot=$afsroot ;;
6152 esac
6153
6154 : is AFS running?
6155 echo " "
6156 case "$afs" in
6157 $define|true)   afs=true ;;
6158 $undef|false)   afs=false ;;
6159 *)      if test -d $afsroot; then
6160                 afs=true
6161         else
6162                 afs=false
6163         fi
6164         ;;
6165 esac
6166 if $afs; then
6167         echo "AFS may be running... I'll be extra cautious then..." >&4
6168 else
6169         echo "AFS does not seem to be running..." >&4
6170 fi
6171
6172 : determine installation prefix for where package is to be installed.
6173 if $afs; then 
6174 $cat <<EOM
6175
6176 Since you are running AFS, I need to distinguish the directory in which
6177 files will reside from the directory in which they are installed (and from
6178 which they are presumably copied to the former directory by occult means).
6179
6180 EOM
6181         case "$installprefix" in
6182         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6183         *) dflt="$installprefix";;
6184         esac
6185 else
6186 $cat <<EOM
6187
6188 In some special cases, particularly when building $package for distribution,
6189 it is convenient to distinguish between the directory in which files should 
6190 be installed from the directory ($prefix) in which they 
6191 will eventually reside.  For most users, these two directories are the same.
6192
6193 EOM
6194         case "$installprefix" in
6195         '') dflt=$prefix ;;
6196         *) dflt=$installprefix;;
6197         esac
6198 fi
6199 fn=d~
6200 rp='What installation prefix should I use for installing files?'
6201 . ./getfile
6202 installprefix="$ans"
6203 installprefixexp="$ansexp"
6204
6205 : set the prefixit variable, to compute a suitable default value
6206 prefixit='case "$3" in
6207 ""|none)
6208         case "$oldprefix" in
6209         "") eval "$1=\"\$$2\"";;
6210         *)
6211                 case "$3" in
6212                 "") eval "$1=";;
6213                 none)
6214                         eval "tp=\"\$$2\"";
6215                         case "$tp" in
6216                         ""|" ") eval "$1=\"\$$2\"";;
6217                         *) eval "$1=";;
6218                         esac;;
6219                 esac;;
6220         esac;;
6221 *)
6222         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6223         case "$tp" in
6224         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6225         /*-$oldprefix/*|\~*-$oldprefix/*)
6226                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6227         *) eval "$1=\"\$$2\"";;
6228         esac;;
6229 esac'
6230
6231
6232 : get the patchlevel
6233 echo " "
6234 echo "Getting the current patchlevel..." >&4
6235 if $test -r $rsrc/patchlevel.h;then
6236         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6237         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6238         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6239         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6240         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6241         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6242        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6243 else
6244         revision=0
6245         patchlevel=0
6246         subversion=0
6247         api_revision=0
6248         api_version=0
6249         api_subversion=0
6250         perl_patchlevel=0
6251         $echo "(You do not have patchlevel.h.  Eek.)"
6252 fi
6253 if $test -r $rsrc/.patch ; then  
6254         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6255                 perl_patchlevel=`cat $rsrc/.patch`
6256         fi
6257 fi
6258 case "$perl_patchlevel" in
6259 0)  ;;
6260 '') $echo "(You have $package version $patchlevel subversion $subversion.)" ;;
6261 *)  $echo "(You have $package version $patchlevel subversion $subversion patchlevel $perl_patchlevel.)" ;;
6262 esac
6263 case "$osname" in
6264 dos|vms)
6265         : XXX Should be a Configure test for double-dots in filenames.
6266         version=`echo $revision $patchlevel $subversion | \
6267                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6268         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6269                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6270         ;;
6271 *)
6272         version=`echo $revision $patchlevel $subversion | \
6273                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6274         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6275                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6276         ;;
6277 esac
6278 : Special case the 5.005_xx maintenance series, which used 5.005
6279 : without any subversion label as a subdirectory in $sitelib
6280 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6281         api_versionstring='5.005'
6282 fi
6283
6284 : determine installation style
6285 : For now, try to deduce it from prefix unless it is already set.
6286 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6287 case "$installstyle" in
6288 '')     case "$prefix" in
6289                 *perl*) dflt='lib';;
6290                 *) dflt='lib/perl5' ;;
6291         esac
6292         ;;
6293 *)      dflt="$installstyle" ;;
6294 esac
6295 : Probably not worth prompting for this since we prompt for all
6296 : the directories individually, and the prompt would be too long and
6297 : confusing anyway.
6298 installstyle=$dflt
6299
6300 : determine where private library files go
6301 : Usual default is /usr/local/lib/perl5/$version.
6302 : Also allow things like /opt/perl/lib/$version, since 
6303 : /opt/perl/lib/perl5... would be redundant.
6304 : The default "style" setting is made in installstyle.U
6305 case "$installstyle" in
6306 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6307 *)       set dflt privlib lib/$version ;;
6308 esac
6309 eval $prefixit
6310 $cat <<EOM
6311
6312 There are some auxiliary files for $package that need to be put into a
6313 private library directory that is accessible by everyone.
6314
6315 EOM
6316 fn=d~+
6317 rp='Pathname where the private library files will reside?'
6318 . ./getfile
6319 privlib="$ans"
6320 privlibexp="$ansexp"
6321 : Change installation prefix, if necessary.
6322 if $test X"$prefix" != X"$installprefix"; then
6323         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6324 else
6325         installprivlib="$privlibexp"
6326 fi
6327
6328 : set the prefixup variable, to restore leading tilda escape
6329 prefixup='case "$prefixexp" in
6330 "$prefix") ;;
6331 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6332 esac'
6333
6334 : determine where public architecture dependent libraries go
6335 set archlib archlib
6336 eval $prefixit
6337 : privlib default is /usr/local/lib/$package/$version
6338 : archlib default is /usr/local/lib/$package/$version/$archname
6339 : privlib may have an optional trailing /share.
6340 tdflt=`echo $privlib | $sed 's,/share$,,'`
6341 tdflt=$tdflt/$archname
6342 case "$archlib" in
6343 '')     dflt=$tdflt
6344         ;;
6345 *)      dflt="$archlib"
6346     ;;
6347 esac
6348 $cat <<EOM
6349
6350 $spackage contains architecture-dependent library files.  If you are
6351 sharing libraries in a heterogeneous environment, you might store
6352 these files in a separate location.  Otherwise, you can just include
6353 them with the rest of the public library files.
6354
6355 EOM
6356 fn=d+~
6357 rp='Where do you want to put the public architecture-dependent libraries?'
6358 . ./getfile
6359 archlib="$ans"
6360 archlibexp="$ansexp"
6361 if $test X"$archlib" = X"$privlib"; then
6362         d_archlib="$undef"
6363 else
6364         d_archlib="$define"
6365 fi
6366 : Change installation prefix, if necessary.
6367 if $test X"$prefix" != X"$installprefix"; then
6368         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6369 else
6370         installarchlib="$archlibexp"
6371 fi
6372
6373
6374 : Binary compatibility with 5.005 is not possible for builds
6375 : with advanced features
6376 case "$usethreads$usemultiplicity" in
6377 *define*)
6378         bincompat5005="$undef"
6379         d_bincompat5005="$undef"
6380         ;;
6381 *)      $cat <<EOM
6382
6383 This version of Perl can be compiled for binary compatibility with 5.005.
6384 If you decide to do so, you will be able to continue using most of the
6385 extensions that were compiled for Perl 5.005.
6386
6387 EOM
6388         case "$bincompat5005$d_bincompat5005" in
6389         *"$undef"*) dflt=n ;;
6390         *) dflt=y ;;
6391         esac
6392         rp='Binary compatibility with Perl 5.005?'
6393         . ./myread
6394         case "$ans" in
6395         y*) val="$define" ;;
6396         *)  val="$undef" ;;
6397         esac
6398         set d_bincompat5005
6399         eval $setvar
6400         case "$d_bincompat5005" in
6401         "$define")
6402                 bincompat5005="$define"
6403                 ;;
6404         *)      bincompat5005="$undef"
6405                 d_bincompat5005="$undef"
6406                 ;;
6407         esac
6408         ;;
6409 esac
6410
6411
6412 : see if setuid scripts can be secure
6413 $cat <<EOM
6414
6415 Some kernels have a bug that prevents setuid #! scripts from being
6416 secure.  Some sites have disabled setuid #! scripts because of this.
6417
6418 First let's decide if your kernel supports secure setuid #! scripts.
6419 (If setuid #! scripts would be secure but have been disabled anyway,
6420 don't say that they are secure if asked.)
6421
6422 EOM
6423
6424 val="$undef"
6425 if $test -d /dev/fd; then
6426         echo "#!$ls" >reflect
6427         chmod +x,u+s reflect
6428         ./reflect >flect 2>&1
6429         if $contains "/dev/fd" flect >/dev/null; then
6430                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6431                 val="$define"
6432         else
6433                 $cat <<EOM
6434 If you are not sure if they are secure, I can check but I'll need a
6435 username and password different from the one you are using right now.
6436 If you don't have such a username or don't want me to test, simply
6437 enter 'none'.
6438
6439 EOM
6440                 rp='Other username to test security of setuid scripts with?'
6441                 dflt='none'
6442                 . ./myread
6443                 case "$ans" in
6444                 n|none)
6445                         case "$d_suidsafe" in
6446                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6447                                 dflt=n;;
6448                         "$undef")
6449                                 echo "Well, the $hint value is *not* secure." >&4
6450                                 dflt=n;;
6451                         *)      echo "Well, the $hint value *is* secure." >&4
6452                                 dflt=y;;
6453                         esac
6454                         ;;
6455                 *)
6456                         $rm -f reflect flect
6457                         echo "#!$ls" >reflect
6458                         chmod +x,u+s reflect
6459                         echo >flect
6460                         chmod a+w flect
6461                         echo '"su" will (probably) prompt you for '"$ans's password."
6462                         su $ans -c './reflect >flect'
6463                         if $contains "/dev/fd" flect >/dev/null; then
6464                                 echo "Okay, it looks like setuid scripts are secure." >&4
6465                                 dflt=y
6466                         else
6467                                 echo "I don't think setuid scripts are secure." >&4
6468                                 dflt=n
6469                         fi
6470                         ;;
6471                 esac
6472                 rp='Does your kernel have *secure* setuid scripts?'
6473                 . ./myread
6474                 case "$ans" in
6475                 [yY]*)  val="$define";;
6476                 *)      val="$undef";;
6477                 esac
6478         fi
6479 else
6480         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6481         echo "(That's for file descriptors, not floppy disks.)"
6482         val="$undef"
6483 fi
6484 set d_suidsafe
6485 eval $setvar
6486
6487 $rm -f reflect flect
6488
6489 : now see if they want to do setuid emulation
6490 echo " "
6491 val="$undef"
6492 case "$d_suidsafe" in
6493 "$define")
6494         val="$undef"
6495         echo "No need to emulate SUID scripts since they are secure here." >& 4
6496         ;;
6497 *)
6498         $cat <<EOM
6499 Some systems have disabled setuid scripts, especially systems where
6500 setuid scripts cannot be secure.  On systems where setuid scripts have
6501 been disabled, the setuid/setgid bits on scripts are currently
6502 useless.  It is possible for $package to detect those bits and emulate
6503 setuid/setgid in a secure fashion.  This emulation will only work if
6504 setuid scripts have been disabled in your kernel.
6505
6506 EOM
6507         case "$d_dosuid" in
6508         "$define") dflt=y ;;
6509         *) dflt=n ;;
6510         esac
6511         rp="Do you want to do setuid/setgid emulation?"
6512         . ./myread
6513         case "$ans" in
6514         [yY]*)  val="$define";;
6515         *)      val="$undef";;
6516         esac
6517         ;;
6518 esac
6519 set d_dosuid
6520 eval $setvar
6521
6522 : see if this is a malloc.h system
6523 set malloc.h i_malloc
6524 eval $inhdr
6525
6526 : see if stdlib is available
6527 set stdlib.h i_stdlib
6528 eval $inhdr
6529
6530 : determine which malloc to compile in
6531 echo " "
6532 case "$usemymalloc" in
6533 [yY]*|true|$define)     dflt='y' ;;
6534 [nN]*|false|$undef)     dflt='n' ;;
6535 *)      case "$ptrsize" in
6536         4) dflt='y' ;;
6537         *) dflt='n' ;;
6538         esac
6539         ;;
6540 esac
6541 rp="Do you wish to attempt to use the malloc that comes with $package?"
6542 . ./myread
6543 usemymalloc="$ans"
6544 case "$ans" in
6545 y*|true)
6546         usemymalloc='y'
6547         mallocsrc='malloc.c'
6548         mallocobj="malloc$_o"
6549         d_mymalloc="$define"
6550         case "$libs" in
6551         *-lmalloc*)
6552                 : Remove malloc from list of libraries to use
6553                 echo "Removing unneeded -lmalloc from library list" >&4
6554                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6555                 shift
6556                 libs="$*"
6557                 echo "libs = $libs" >&4
6558                 ;;
6559         esac
6560         ;;
6561 *)
6562         usemymalloc='n'
6563         mallocsrc=''
6564         mallocobj=''
6565         d_mymalloc="$undef"
6566         ;;
6567 esac
6568
6569 : compute the return types of malloc and free
6570 echo " "
6571 $cat >malloc.c <<END
6572 #$i_malloc I_MALLOC
6573 #$i_stdlib I_STDLIB
6574 #include <stdio.h>
6575 #include <sys/types.h>
6576 #ifdef I_MALLOC
6577 #include <malloc.h>
6578 #endif
6579 #ifdef I_STDLIB
6580 #include <stdlib.h>
6581 #endif
6582 #ifdef TRY_MALLOC
6583 void *malloc();
6584 #endif
6585 #ifdef TRY_FREE
6586 void free();
6587 #endif
6588 END
6589 case "$malloctype" in
6590 '')
6591         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6592                 malloctype='void *'
6593         else
6594                 malloctype='char *'
6595         fi
6596         ;;
6597 esac
6598 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6599
6600 case "$freetype" in
6601 '')
6602         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6603                 freetype='void'
6604         else
6605                 freetype='int'
6606         fi
6607         ;;
6608 esac
6609 echo "Your system uses $freetype free(), it would seem." >&4
6610 $rm -f malloc.[co]
6611 $cat <<EOM
6612
6613 After $package is installed, you may wish to install various
6614 add-on modules and utilities.  Typically, these add-ons will
6615 be installed under $prefix with the rest
6616 of this package.  However, you may wish to install such add-ons
6617 elsewhere under a different prefix.
6618
6619 If you do not wish to put everything under a single prefix, that's
6620 ok.  You will be prompted for the individual locations; this siteprefix
6621 is only used to suggest the defaults.
6622
6623 The default should be fine for most people.
6624
6625 EOM
6626 fn=d~+
6627 rp='Installation prefix to use for add-on modules and utilities?'
6628 : XXX Here might be another good place for an installstyle setting.
6629 case "$siteprefix" in
6630 '') dflt=$prefix ;;
6631 *)  dflt=$siteprefix ;;
6632 esac
6633 . ./getfile
6634 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6635 oldsiteprefix=''
6636 case "$siteprefix" in
6637 '') ;;
6638 *)      case "$ans" in
6639         "$prefix") ;;
6640         *) oldsiteprefix="$prefix";;
6641         esac
6642         ;;
6643 esac
6644 siteprefix="$ans"
6645 siteprefixexp="$ansexp"
6646
6647 : determine where site specific libraries go.
6648 : Usual default is /usr/local/lib/perl5/site_perl/$version
6649 : The default "style" setting is made in installstyle.U
6650 : XXX No longer works with Prefixit stuff.
6651 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6652 case "$sitelib" in
6653 '') case "$installstyle" in
6654         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6655         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6656         esac
6657         ;;
6658 *)      dflt="$sitelib"
6659         ;;
6660 esac
6661 $cat <<EOM
6662
6663 The installation process will create a directory for
6664 site-specific extensions and modules.  Most users find it convenient
6665 to place all site-specific files in this directory rather than in the
6666 main distribution directory.
6667
6668 EOM
6669 fn=d~+
6670 rp='Pathname for the site-specific library files?'
6671 . ./getfile
6672 sitelib="$ans"
6673 sitelibexp="$ansexp"
6674 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6675 : Change installation prefix, if necessary.
6676 if $test X"$prefix" != X"$installprefix"; then
6677         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6678 else
6679         installsitelib="$sitelibexp"
6680 fi
6681
6682 : determine where site specific architecture-dependent libraries go.
6683 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6684 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6685 : sitelib may have an optional trailing /share.
6686 case "$sitearch" in
6687 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6688         dflt="$dflt/$archname"
6689         ;;
6690 *)      dflt="$sitearch"
6691         ;;
6692 esac
6693 set sitearch sitearch none
6694 eval $prefixit
6695 $cat <<EOM
6696
6697 The installation process will also create a directory for
6698 architecture-dependent site-specific extensions and modules.
6699
6700 EOM
6701 fn=d~+
6702 rp='Pathname for the site-specific architecture-dependent library files?'
6703 . ./getfile
6704 sitearch="$ans"
6705 sitearchexp="$ansexp"
6706 : Change installation prefix, if necessary.
6707 if $test X"$prefix" != X"$installprefix"; then
6708         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6709 else
6710         installsitearch="$sitearchexp"
6711 fi
6712
6713 $cat <<EOM
6714
6715 The installation process will also create a directory for
6716 vendor-supplied add-ons.  Vendors who supply perl with their system
6717 may find it convenient to place all vendor-supplied files in this
6718 directory rather than in the main distribution directory.  This will
6719 ease upgrades between binary-compatible maintenance versions of perl.
6720
6721 Of course you may also use these directories in whatever way you see
6722 fit.  For example, you might use them to access modules shared over a
6723 company-wide network.
6724
6725 The default answer should be fine for most people.
6726 This causes further questions about vendor add-ons to be skipped
6727 and no vendor-specific directories will be configured for perl.
6728
6729 EOM
6730 rp='Do you want to configure vendor-specific add-on directories?'
6731 case "$usevendorprefix" in
6732 define|true|[yY]*) dflt=y ;;
6733 *)      : User may have set vendorprefix directly on Configure command line.
6734         case "$vendorprefix" in
6735         ''|' ') dflt=n ;;
6736         *)      dflt=y ;;
6737         esac
6738         ;;
6739 esac
6740 . ./myread
6741 case "$ans" in
6742 [yY]*)  fn=d~+
6743         rp='Installation prefix to use for vendor-supplied add-ons?'
6744         case "$vendorprefix" in
6745         '') dflt='' ;;
6746         *)  dflt=$vendorprefix ;;
6747         esac
6748         . ./getfile
6749         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6750         oldvendorprefix=''
6751         case "$vendorprefix" in
6752         '') ;;
6753         *)      case "$ans" in
6754                 "$prefix") ;;
6755                 *) oldvendorprefix="$prefix";;
6756                 esac
6757                 ;;
6758         esac
6759         usevendorprefix="$define"
6760         vendorprefix="$ans"
6761         vendorprefixexp="$ansexp"
6762         ;;
6763 *)      usevendorprefix="$undef"
6764         vendorprefix=''
6765         vendorprefixexp=''
6766         ;;
6767 esac
6768
6769 case "$vendorprefix" in
6770 '')     d_vendorlib="$undef"
6771         vendorlib=''
6772         vendorlibexp=''
6773         ;;
6774 *)      d_vendorlib="$define"
6775         : determine where vendor-supplied modules go.
6776         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6777         case "$vendorlib" in
6778         '')
6779                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6780                 case "$installstyle" in
6781                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6782                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6783                 esac
6784                 ;;
6785         *)      dflt="$vendorlib"
6786                 ;;
6787         esac
6788         fn=d~+
6789         rp='Pathname for the vendor-supplied library files?'
6790         . ./getfile
6791         vendorlib="$ans"
6792         vendorlibexp="$ansexp"
6793         ;;
6794 esac
6795 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6796 : Change installation prefix, if necessary.
6797 if $test X"$prefix" != X"$installprefix"; then
6798         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6799 else
6800         installvendorlib="$vendorlibexp"
6801 fi
6802
6803 case "$vendorprefix" in
6804 '')     d_vendorarch="$undef"
6805         vendorarch=''
6806         vendorarchexp=''
6807         ;;
6808 *)      d_vendorarch="$define"
6809         : determine where vendor-supplied architecture-dependent libraries go.
6810         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6811         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6812         : vendorlib may have an optional trailing /share.
6813         case "$vendorarch" in
6814         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6815                 dflt="$dflt/$archname"
6816                 ;;
6817         *)      dflt="$vendorarch" ;;
6818         esac
6819         fn=d~+
6820         rp='Pathname for vendor-supplied architecture-dependent files?'
6821         . ./getfile
6822         vendorarch="$ans"
6823         vendorarchexp="$ansexp"
6824         ;;
6825 esac
6826 : Change installation prefix, if necessary.
6827 if $test X"$prefix" != X"$installprefix"; then
6828         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6829 else
6830         installvendorarch="$vendorarchexp"
6831 fi
6832
6833 : Final catch-all directories to search
6834 $cat <<EOM
6835
6836 Lastly, you can have perl look in other directories for extensions and
6837 modules in addition to those already specified.
6838 These directories will be searched after 
6839         $sitearch 
6840         $sitelib 
6841 EOM
6842 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6843 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6844 echo ' '
6845 case "$otherlibdirs" in
6846 ''|' ') dflt='none' ;;
6847 *)      dflt="$otherlibdirs" ;;
6848 esac
6849 $cat <<EOM
6850 Enter a colon-separated set of extra paths to include in perl's @INC
6851 search path, or enter 'none' for no extra paths.
6852
6853 EOM
6854
6855 rp='Colon-separated list of additional directories for perl to search?'
6856 . ./myread
6857 case "$ans" in
6858 ' '|''|none)    otherlibdirs=' ' ;;     
6859 *)      otherlibdirs="$ans" ;;
6860 esac
6861 case "$otherlibdirs" in
6862 ' ') val=$undef ;;
6863 *)      val=$define ;;
6864 esac
6865 set d_perl_otherlibdirs
6866 eval $setvar
6867
6868 : Cruising for prototypes
6869 echo " "
6870 echo "Checking out function prototypes..." >&4
6871 $cat >prototype.c <<'EOCP'
6872 int main(int argc, char *argv[]) {
6873         exit(0);}
6874 EOCP
6875 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6876         echo "Your C compiler appears to support function prototypes."
6877         val="$define"
6878 else
6879         echo "Your C compiler doesn't seem to understand function prototypes."
6880         val="$undef"
6881 fi
6882 set prototype
6883 eval $setvar
6884 $rm -f prototype*
6885
6886 case "$prototype" in
6887 "$define") ;;
6888 *)      ansi2knr='ansi2knr'
6889         echo " "
6890         cat <<EOM >&4
6891
6892 $me:  FATAL ERROR:
6893 This version of $package can only be compiled by a compiler that 
6894 understands function prototypes.  Unfortunately, your C compiler 
6895         $cc $ccflags
6896 doesn't seem to understand them.  Sorry about that.
6897
6898 If GNU cc is available for your system, perhaps you could try that instead.  
6899
6900 Eventually, we hope to support building Perl with pre-ANSI compilers.
6901 If you would like to help in that effort, please contact <perlbug@perl.org>.
6902
6903 Aborting Configure now.
6904 EOM
6905         exit 2
6906         ;;
6907 esac
6908
6909 : determine where public executables go
6910 echo " "
6911 set dflt bin bin
6912 eval $prefixit
6913 fn=d~
6914 rp='Pathname where the public executables will reside?'
6915 . ./getfile
6916 if $test "X$ansexp" != "X$binexp"; then
6917         installbin=''
6918 fi
6919 bin="$ans"
6920 binexp="$ansexp"
6921 : Change installation prefix, if necessary.
6922 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6923 if $test X"$prefix" != X"$installprefix"; then
6924         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6925 else
6926         installbin="$binexp"
6927 fi
6928
6929 : Find perl5.005 or later.
6930 echo "Looking for a previously installed perl5.005 or later... "
6931 case "$perl5" in
6932 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6933                 : Check if this perl is recent and can load a simple module
6934                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6935                         perl5=$tdir/perl
6936                         break;
6937                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6938                         perl5=$tdir/perl5
6939                         break;
6940                 fi
6941         done
6942         ;;
6943 *)      perl5="$perl5"
6944         ;;
6945 esac
6946 case "$perl5" in
6947 '')     echo "None found.  That's ok.";;
6948 *)      echo "Using $perl5." ;;
6949 esac
6950
6951 : Determine list of previous versions to include in @INC
6952 $cat > getverlist <<EOPL
6953 #!$perl5 -w
6954 use File::Basename;
6955 \$api_versionstring = "$api_versionstring";
6956 \$version = "$version";
6957 \$stem = "$sitelib_stem";
6958 \$archname = "$archname";
6959 EOPL
6960         $cat >> getverlist <<'EOPL'
6961 # Can't have leading @ because metaconfig interprets it as a command!
6962 ;@inc_version_list=();
6963 # XXX Redo to do opendir/readdir? 
6964 if (-d $stem) {
6965     chdir($stem);
6966     ;@candidates = glob("5.*");
6967 }
6968 else {
6969     ;@candidates = ();
6970 }
6971
6972 # XXX ToDo:  These comparisons must be reworked when two-digit
6973 # subversions come along, so that 5.7.10 compares as greater than
6974 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6975 # widespread that we can use the built-in version vectors rather
6976 # than reinventing them here.  For 5.6.0, however, we must
6977 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6978 foreach $d (@candidates) {
6979     if ($d lt $version) {
6980         if ($d ge $api_versionstring) {
6981             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6982         }
6983         elsif ($d ge "5.005") {
6984             unshift(@inc_version_list, grep { -d } $d);
6985         }
6986     }
6987     else {
6988         # Skip newer version.  I.e. don't look in
6989         # 5.7.0 if we're installing 5.6.1.
6990     }
6991 }
6992
6993 if (@inc_version_list) {
6994     print join(' ', @inc_version_list);
6995 }
6996 else {
6997     # Blank space to preserve value for next Configure run.
6998     print " ";
6999 }
7000 EOPL
7001 chmod +x getverlist
7002 case "$inc_version_list" in
7003 '')     if test -x "$perl5$exe_ext"; then
7004                 dflt=`$perl5 getverlist`
7005         else
7006                 dflt='none'
7007         fi
7008         ;;
7009 $undef) dflt='none' ;;
7010 *)  eval dflt=\"$inc_version_list\" ;;
7011 esac
7012 case "$dflt" in
7013 ''|' ') dflt=none ;;
7014 esac
7015 case "$dflt" in
7016 5.005) case "$bincompat5005" in
7017        $define|true|[yY]*) ;;
7018        *) dflt=none ;;
7019        esac
7020        ;;
7021 esac
7022 $cat <<'EOM'
7023
7024 In order to ease the process of upgrading, this version of perl 
7025 can be configured to use modules built and installed with earlier 
7026 versions of perl that were installed under $prefix.  Specify here
7027 the list of earlier versions that this version of perl should check.
7028 If Configure detected no earlier versions of perl installed under
7029 $prefix, then the list will be empty.  Answer 'none' to tell perl
7030 to not search earlier versions.
7031
7032 The default should almost always be sensible, so if you're not sure,
7033 just accept the default.
7034 EOM
7035
7036 rp='List of earlier versions to include in @INC?'
7037 . ./myread
7038 case "$ans" in
7039 [Nn]one|''|' ') inc_version_list=' ' ;;
7040 *) inc_version_list="$ans" ;;
7041 esac
7042 case "$inc_version_list" in
7043 ''|' ') 
7044         inc_version_list_init='0';;
7045 *)      inc_version_list_init=`echo $inc_version_list |
7046                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
7047         ;;
7048 esac
7049 $rm -f getverlist
7050
7051 : determine whether to install perl also as /usr/bin/perl
7052
7053 echo " "
7054 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7055         $cat <<EOM
7056 Many scripts expect perl to be installed as /usr/bin/perl.
7057 I can install the perl you are about to compile also as /usr/bin/perl
7058 (in addition to $installbin/perl).
7059 EOM
7060         case "$installusrbinperl" in
7061         "$undef"|[nN]*) dflt='n';;
7062         *)              dflt='y';;
7063         esac
7064         rp="Do you want to install perl as /usr/bin/perl?"
7065         . ./myread
7066         case "$ans" in
7067         [yY]*)  val="$define";;
7068         *)      val="$undef" ;;
7069         esac
7070 else
7071         val="$undef"
7072 fi
7073 set installusrbinperl
7074 eval $setvar
7075
7076 : see if dld is available
7077 set dld.h i_dld
7078 eval $inhdr
7079
7080 : see if dlopen exists
7081 xxx_runnm="$runnm"
7082 runnm=false
7083 set dlopen d_dlopen
7084 eval $inlibc
7085 runnm="$xxx_runnm"
7086
7087 : determine which dynamic loading, if any, to compile in
7088 echo " "
7089 dldir="ext/DynaLoader"
7090 case "$usedl" in
7091 $define|y|true)
7092         dflt='y'
7093         usedl="$define"
7094         ;;
7095 $undef|n|false)
7096         dflt='n'
7097         usedl="$undef"
7098         ;;
7099 *) 
7100         dflt='n'
7101         case "$d_dlopen" in
7102             $define) dflt='y' ;;
7103         esac
7104         case "$i_dld" in
7105             $define) dflt='y' ;;
7106         esac
7107         : Does a dl_xxx.xs file exist for this operating system
7108         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7109         ;;
7110 esac
7111 rp="Do you wish to use dynamic loading?"
7112 . ./myread
7113 usedl="$ans"
7114 case "$ans" in
7115 y*) usedl="$define"
7116         case "$dlsrc" in
7117         '')
7118                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7119                         dflt="$dldir/dl_${osname}.xs"
7120                 elif $test "$d_dlopen" = "$define" ; then
7121                         dflt="$dldir/dl_dlopen.xs"
7122                 elif $test "$i_dld" = "$define" ; then
7123                         dflt="$dldir/dl_dld.xs"
7124                 else
7125                         dflt=''
7126                 fi
7127                 ;;
7128         *)      dflt="$dldir/$dlsrc"
7129                 ;;
7130         esac
7131     echo "The following dynamic loading files are available:"
7132         : Can not go over to $dldir because getfile has path hard-coded in.
7133         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
7134         rp="Source file to use for dynamic loading"
7135         fn="fne"
7136         gfpth="$src"
7137         . ./getfile
7138         usedl="$define"
7139         : emulate basename
7140         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7141
7142         $cat << EOM
7143
7144 Some systems may require passing special flags to $cc -c to
7145 compile modules that will be used to create a shared library.
7146 To use no flags, say "none".
7147
7148 EOM
7149     case "$cccdlflags" in
7150     '') case "$gccversion" in
7151                 '') case "$osname" in
7152                         hpux)   dflt='+z' ;;
7153                         next)   dflt='none' ;;
7154                         irix*)  dflt='-KPIC' ;;
7155                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7156                         sunos)  dflt='-pic' ;;
7157                         *)      dflt='none' ;;
7158                     esac
7159                         ;;
7160                 *)  case "$osname" in
7161                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7162                         *)      dflt='-fpic' ;;
7163                     esac ;;
7164             esac ;;
7165         ' ') dflt='none' ;;
7166     *)  dflt="$cccdlflags" ;;
7167     esac
7168     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7169     . ./myread
7170     case "$ans" in
7171     none) cccdlflags=' ' ;;
7172     *) cccdlflags="$ans" ;;
7173     esac
7174
7175     cat << EOM
7176
7177 Some systems use ld to create libraries that can be dynamically loaded,
7178 while other systems (such as those using ELF) use $cc.
7179
7180 EOM
7181         case "$ld" in
7182         '')     $cat >try.c <<'EOM'
7183 /* Test for whether ELF binaries are produced */
7184 #include <fcntl.h>
7185 #include <stdlib.h>
7186 int main() {
7187         char b[4];
7188         int i = open("a.out",O_RDONLY);
7189         if(i == -1) 
7190                 exit(1); /* fail */
7191         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7192                 exit(0); /* succeed (yes, it's ELF) */
7193         else
7194                 exit(1); /* fail */
7195 }
7196 EOM
7197                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7198                         cat <<EOM
7199 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7200 EOM
7201                         dflt="$cc"
7202                 else
7203                         echo "I'll use ld to build dynamic libraries."
7204                         dflt='ld'
7205                 fi
7206                 rm -f try.c a.out
7207                 ;;
7208         *)      dflt="$ld"
7209                 ;;
7210         esac
7211
7212     rp="What command should be used to create dynamic libraries?"
7213     . ./myread
7214         ld="$ans"
7215
7216     cat << EOM
7217
7218 Some systems may require passing special flags to $ld to create a
7219 library that can be dynamically loaded.  If your ld flags include
7220 -L/other/path options to locate libraries outside your loader's normal
7221 search path, you may need to specify those -L options here as well.  To
7222 use no flags, say "none".
7223
7224 EOM
7225     case "$lddlflags" in
7226     '') case "$osname" in
7227                         beos) dflt='-nostart' ;;
7228                         hpux) dflt='-b';
7229                               case "$gccversion" in
7230                               '') dflt="$dflt +vnocompatwarnings" ;;
7231                               esac
7232                               ;;        
7233                         linux|irix*)    dflt='-shared' ;;
7234                         next)  dflt='none' ;;
7235                         solaris) dflt='-G' ;;
7236                         sunos) dflt='-assert nodefinitions' ;;
7237                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7238                 *)     dflt='none' ;;
7239                         esac
7240                         ;;
7241     *) dflt="$lddlflags" ;;
7242     esac
7243
7244         : Try to guess additional flags to pick up local libraries.
7245         : Be careful not to append to a plain 'none'
7246         case "$dflt" in
7247         none) dflt='' ;;
7248         esac
7249         for thisflag in $ldflags; do
7250                 case "$thisflag" in
7251                 -L*|-R*)
7252                         case " $dflt " in
7253                         *" $thisflag "*) ;;
7254                         *) dflt="$dflt $thisflag" ;;
7255                         esac
7256                         ;;
7257                 esac
7258         done
7259
7260         case "$dflt" in
7261         ''|' ') dflt='none' ;;
7262         esac
7263
7264     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7265     . ./myread
7266     case "$ans" in
7267     none) lddlflags=' ' ;;
7268     *) lddlflags="$ans" ;;
7269     esac
7270
7271         cat <<EOM
7272
7273 Some systems may require passing special flags to $cc to indicate that
7274 the resulting executable will use dynamic linking.  To use no flags,
7275 say "none".
7276
7277 EOM
7278     case "$ccdlflags" in
7279     '') case "$osname" in
7280                 hpux)   dflt='-Wl,-E' ;;
7281                 linux)  dflt='-rdynamic' ;;
7282                 next)   dflt='none' ;;
7283                 sunos)  dflt='none' ;;
7284                 *)      dflt='none' ;;
7285             esac ;;
7286     ' ')  dflt='none' ;;
7287     *)  dflt="$ccdlflags" ;;
7288     esac
7289     rp="Any special flags to pass to $cc to use dynamic linking?"
7290     . ./myread
7291     case "$ans" in
7292     none) ccdlflags=' ' ;;
7293     *) ccdlflags="$ans" ;;
7294     esac
7295     ;;
7296 *)  usedl="$undef"
7297         ld='ld'
7298     dlsrc='dl_none.xs'
7299     lddlflags=''
7300     ccdlflags=''
7301     ;;
7302 esac
7303
7304 also=''
7305 case "$usedl" in
7306 $undef)
7307         # No dynamic loading being used, so don't bother even to prompt.
7308         useshrplib='false'
7309         ;;
7310 *)      case "$useshrplib" in
7311         '')     case "$osname" in
7312                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7313                         dflt=y
7314                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7315                         ;;
7316                 next*)
7317                         case "$osvers" in
7318                         4*)     dflt=y
7319                                 also='Building a shared libperl is needed for MAB support.'
7320                                 ;;
7321                         *)      dflt=n
7322                                 ;;
7323                         esac
7324                         ;;
7325                 *)      dflt=n
7326                         ;;
7327                 esac
7328                 ;;
7329         $define|true|[Yy]*)
7330                 dflt=y
7331                 ;;
7332         *)      dflt=n
7333                 ;;
7334         esac
7335         $cat << EOM
7336
7337 The perl executable is normally obtained by linking perlmain.c with
7338 libperl${_a}, any static extensions (usually just DynaLoader), and
7339 any other libraries needed on this system (such as -lm, etc.).  Since
7340 your system supports dynamic loading, it is probably possible to build
7341 a shared libperl.$so.  If you will have more than one executable linked
7342 to libperl.$so, this will significantly reduce the size of each
7343 executable, but it may have a noticeable affect on performance.  The
7344 default is probably sensible for your system.
7345 $also
7346
7347 EOM
7348         rp="Build a shared libperl.$so (y/n)"
7349         . ./myread
7350         case "$ans" in
7351         true|$define|[Yy]*)
7352                 useshrplib='true'  ;;
7353         *)      useshrplib='false' ;;
7354         esac
7355         ;;
7356 esac
7357
7358 case "$useshrplib" in
7359 true)
7360         case "$libperl" in
7361         '')
7362                 # Figure out a good name for libperl.so.  Since it gets stored in
7363                 # a version-specific architecture-dependent library, the version
7364                 # number isn't really that important, except for making cc/ld happy.
7365                 #
7366                 # A name such as libperl.so.3.1
7367                 majmin="libperl.$so.$patchlevel.$subversion"
7368                 # A name such as libperl.so.301
7369                 majonly=`echo $patchlevel $subversion |
7370                         $awk '{printf "%d%02d", $1, $2}'`
7371                 majonly=libperl.$so.$majonly
7372                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7373                 # rely on figuring it out from the naming of libc.
7374                 case "${osname}${osvers}" in
7375                 next4*)
7376                         dflt=libperl.5.$so
7377                         # XXX How handle the --version stuff for MAB?
7378                         ;;
7379                 linux*)  # ld won't link with a bare -lperl otherwise.
7380                         dflt=libperl.$so
7381                         ;;
7382                 cygwin*) # include version
7383                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7384                         ;;
7385                 *)      # Try to guess based on whether libc has major.minor.
7386                         case "$libc" in
7387                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7388                         *libc.$so.[0-9]*) dflt=$majonly ;;
7389                         *)      dflt=libperl.$so ;;
7390                         esac
7391                         ;;
7392                 esac
7393                 ;;
7394         *)      dflt=$libperl
7395                 ;;
7396         esac
7397         cat << EOM
7398
7399 I need to select a good name for the shared libperl.  If your system uses
7400 library names with major and minor numbers, then you might want something
7401 like $majmin.  Alternatively, if your system uses a single version
7402 number for shared libraries, then you might want to use $majonly.
7403 Or, your system might be quite happy with a simple libperl.$so.
7404
7405 Since the shared libperl will get installed into a version-specific
7406 architecture-dependent directory, the version number of the shared perl
7407 library probably isn't important, so the default should be o.k.
7408
7409 EOM
7410         rp='What name do you want to give to the shared libperl?'
7411         . ./myread
7412         libperl=$ans
7413         echo "Ok, I'll use $libperl"
7414         ;;
7415 *)
7416         libperl="libperl${_a}"
7417         ;;
7418 esac
7419
7420 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7421 case "$shrpdir" in
7422 '') ;;
7423 *)      $cat >&4 <<EOM
7424 WARNING:  Use of the shrpdir variable for the installation location of
7425 the shared $libperl is not supported.  It was never documented and
7426 will not work in this version.  Let me (perlbug@perl.org)
7427 know of any problems this may cause.
7428
7429 EOM
7430         case "$shrpdir" in
7431         "$archlibexp/CORE")
7432                 $cat >&4 <<EOM
7433 But your current setting of $shrpdir is
7434 the default anyway, so it's harmless.
7435 EOM
7436                 ;;
7437         *)
7438                 $cat >&4 <<EOM
7439 Further, your current attempted setting of $shrpdir
7440 conflicts with the value of $archlibexp/CORE
7441 that installperl will use.
7442 EOM
7443                 ;;
7444         esac
7445         ;;
7446 esac
7447
7448 # How will the perl executable find the installed shared $libperl?
7449 # Add $xxx to ccdlflags.
7450 # If we can't figure out a command-line option, use $shrpenv to
7451 # set env LD_RUN_PATH.  The main perl makefile uses this.
7452 shrpdir=$archlibexp/CORE
7453 xxx=''
7454 tmp_shrpenv=''
7455 if "$useshrplib"; then
7456     case "$osname" in 
7457         aix)
7458                 # We'll set it in Makefile.SH...
7459                 ;;
7460         solaris|netbsd)
7461                 xxx="-R $shrpdir"
7462                 ;;
7463         freebsd)
7464                 xxx="-Wl,-R$shrpdir"
7465                 ;;
7466         linux|irix*|dec_osf)
7467                 xxx="-Wl,-rpath,$shrpdir"
7468                 ;;
7469         next)
7470                 # next doesn't like the default...
7471                 ;;
7472         beos)
7473                 # beos doesn't like the default, either.
7474                 ;;
7475         hpux*)
7476                 # hpux doesn't like the default, either.
7477                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7478                 ;;
7479         *)
7480                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7481                 ;;
7482         esac
7483         case "$xxx" in
7484         '') ;;
7485         *)      
7486                 # Only add $xxx if it isn't already in ccdlflags.
7487                 case " $ccdlflags " in
7488                 *" $xxx "*)     ;;
7489                 *)      ccdlflags="$ccdlflags $xxx"
7490                         cat <<EOM >&4
7491
7492 Adding $xxx to the flags
7493 passed to $ld so that the perl executable will find the 
7494 installed shared $libperl.
7495
7496 EOM
7497                         ;;
7498                 esac
7499                 ;;
7500         esac
7501 fi
7502 # Fix ccdlflags in AIX for building external extensions.
7503 # (For building Perl itself bare -bE:perl.exp is needed,
7504 #  Makefile.SH takes care of this.)
7505 case "$osname" in
7506 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7507 esac
7508 # Respect a hint or command-line value.
7509 case "$shrpenv" in
7510 '') shrpenv="$tmp_shrpenv" ;;
7511 esac
7512 case "$ldlibpthname" in
7513 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7514 none)   ldlibpthname='' ;;
7515 esac
7516
7517 : determine where manual pages are on this system
7518 echo " "
7519 case "$sysman" in
7520 '') 
7521         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
7522         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
7523         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7524         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7525         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7526         sysman=`./loc . /usr/man/man1 $syspath`
7527         ;;
7528 esac
7529 if $test -d "$sysman"; then
7530         echo "System manual is in $sysman." >&4
7531 else
7532         echo "Could not find manual pages in source form." >&4
7533 fi
7534
7535 : determine where manual pages go
7536 set man1dir man1dir none
7537 eval $prefixit
7538 $cat <<EOM
7539
7540 $spackage has manual pages available in source form.
7541 EOM
7542 case "$nroff" in
7543 nroff)
7544         echo "However, you don't have nroff, so they're probably useless to you."
7545         case "$man1dir" in
7546         '') man1dir="none";;
7547         esac;;
7548 esac
7549 echo "If you don't want the manual sources installed, answer 'none'."
7550 case "$man1dir" in
7551 ' ') dflt=none
7552         ;;
7553 '')
7554         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
7555         lookpath="$lookpath $prefixexp/man/p_man/man1"
7556         lookpath="$lookpath $prefixexp/man/u_man/man1"
7557         lookpath="$lookpath $prefixexp/man/man.1"
7558         case "$sysman" in
7559         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7560         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7561         esac
7562         set dflt
7563         eval $prefixup
7564         ;;
7565 *)  dflt="$man1dir"
7566         ;;
7567 esac
7568 echo " "
7569 fn=dn+~
7570 rp="Where do the main $spackage manual pages (source) go?"
7571 . ./getfile
7572 if $test "X$man1direxp" != "X$ansexp"; then
7573         installman1dir=''
7574 fi
7575 man1dir="$ans"
7576 man1direxp="$ansexp"
7577 case "$man1dir" in
7578 '')     man1dir=' '
7579         installman1dir='';;
7580 esac
7581
7582 : Change installation prefix, if necessary.
7583 if $test X"$prefix" != X"$installprefix"; then
7584         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7585 else
7586         installman1dir="$man1direxp"
7587 fi
7588
7589 : What suffix to use on installed man pages
7590
7591 case "$man1dir" in
7592 ' ')
7593         man1ext='0'
7594         ;;
7595 *)
7596         rp="What suffix should be used for the main $spackage man pages?"
7597         case "$man1ext" in
7598         '')     case "$man1dir" in
7599                 *1)  dflt=1 ;;
7600                 *1p) dflt=1p ;;
7601                 *1pm) dflt=1pm ;;
7602                 *l) dflt=l;;
7603                 *n) dflt=n;;
7604                 *o) dflt=o;;
7605                 *p) dflt=p;;
7606                 *C) dflt=C;;
7607                 *L) dflt=L;;
7608                 *L1) dflt=L1;;
7609                 *) dflt=1;;
7610                 esac
7611                 ;;
7612         *)      dflt="$man1ext";;
7613         esac
7614         . ./myread
7615         man1ext="$ans"
7616         ;;
7617 esac
7618
7619 : see if we can have long filenames
7620 echo " "
7621 first=123456789abcdef
7622 $rm -f $first
7623 if (echo hi >$first) 2>/dev/null; then
7624         if $test -f 123456789abcde; then
7625                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7626                 val="$undef"
7627         else
7628                 echo 'You can have filenames longer than 14 characters.'>&4
7629                 val="$define"
7630         fi
7631 else
7632         $cat <<'EOM'
7633 You can't have filenames longer than 14 chars.
7634 You can't even think about them!
7635 EOM
7636         val="$undef"
7637 fi 
7638 set d_flexfnam
7639 eval $setvar
7640 $rm -rf 123456789abcde*
7641
7642 : determine where library module manual pages go
7643 set man3dir man3dir none
7644 eval $prefixit
7645 $cat <<EOM
7646
7647 $spackage has manual pages for many of the library modules.
7648 EOM
7649
7650 case "$nroff" in
7651 nroff)
7652         $cat <<'EOM'
7653 However, you don't have nroff, so they're probably useless to you.
7654 EOM
7655         case "$man3dir" in
7656         '') man3dir="none";;
7657         esac;;
7658 esac
7659
7660 case "$d_flexfnam" in
7661 undef)
7662         $cat <<'EOM'
7663 However, your system can't handle the long file names like File::Basename.3. 
7664 EOM
7665         case "$man3dir" in
7666         '') man3dir="none";;
7667         esac;;
7668 esac
7669
7670 echo "If you don't want the manual sources installed, answer 'none'."
7671 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7672 case "$man3dir" in
7673 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7674         if $test -d "$privlib/man/man3"; then
7675                 cat <<EOM >&4
7676
7677 WARNING:  Previous versions of perl installed man3 pages into
7678 $privlib/man/man3.  This version will suggest a 
7679 new default of $dflt.  
7680 EOM
7681                 tdflt=$dflt
7682                 dflt='n'
7683                 rp='Do you wish to preserve the old behavior?(y/n)'
7684                 . ./myread
7685                 case "$ans" in
7686                 y*) dflt="$privlib/man/man3" ;;
7687                 *)  dflt=$tdflt ;;
7688                 esac
7689     fi
7690         ;;
7691 *)      dflt="$man3dir" ;;
7692 esac
7693 case "$dflt" in
7694 ' ') dflt=none ;;
7695 esac
7696 echo " "
7697 fn=dn+~
7698 rp="Where do the $package library man pages (source) go?"
7699 . ./getfile
7700 man3dir="$ans"
7701 man3direxp="$ansexp"
7702 case "$man3dir" in
7703 '')     man3dir=' '
7704         installman3dir='';;
7705 esac
7706
7707 : Change installation prefix, if necessary.
7708 if $test X"$prefix" != X"$installprefix"; then
7709         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7710 else
7711         installman3dir="$man3direxp"
7712 fi
7713
7714 : What suffix to use on installed man pages
7715 case "$man3dir" in
7716 ' ')
7717         man3ext='0'
7718         ;;
7719 *)
7720         rp="What suffix should be used for the $package library man pages?"
7721         case "$man3ext" in
7722         '')     case "$man3dir" in
7723                 *3)  dflt=3 ;;
7724                 *3p) dflt=3p ;;
7725                 *3pm) dflt=3pm ;;
7726                 *l) dflt=l;;
7727                 *n) dflt=n;;
7728                 *o) dflt=o;;
7729                 *p) dflt=p;;
7730                 *C) dflt=C;;
7731                 *L) dflt=L;;
7732                 *L3) dflt=L3;;
7733                 *) dflt=3;;
7734                 esac
7735                 ;;
7736         *)      dflt="$man3ext";;
7737         esac
7738         . ./myread
7739         man3ext="$ans"
7740         ;;
7741 esac
7742
7743 : see if we have to deal with yellow pages, now NIS.
7744 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7745         if $test -f /usr/etc/nibindd; then
7746                 echo " "
7747                 echo "I'm fairly confident you're on a NeXT."
7748                 echo " "
7749                 rp='Do you get the hosts file via NetInfo?'
7750                 dflt=y
7751                 case "$hostcat" in
7752                 nidump*) ;;
7753                 '') ;;
7754                 *) dflt=n;;
7755                 esac
7756                 . ./myread
7757                 case "$ans" in
7758                 y*) hostcat='nidump hosts .';;
7759                 *)      case "$hostcat" in
7760                         nidump*) hostcat='';;
7761                         esac
7762                         ;;
7763                 esac
7764         fi
7765         case "$hostcat" in
7766         nidump*) ;;
7767         *)
7768                 case "$hostcat" in
7769                 *ypcat*) dflt=y;;
7770                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7771                                 dflt=y
7772                         else
7773                                 dflt=n
7774                         fi;;
7775                 *) dflt=n;;
7776                 esac
7777                 echo " "
7778                 rp='Are you getting the hosts file via yellow pages?'
7779                 . ./myread
7780                 case "$ans" in
7781                 y*) hostcat='ypcat hosts';;
7782                 *) hostcat='cat /etc/hosts';;
7783                 esac
7784                 ;;
7785         esac
7786 fi
7787 case "$hostcat" in
7788 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7789 esac
7790 case "$groupcat" in
7791 '') test -f /etc/group && groupcat='cat /etc/group';;
7792 esac
7793 case "$passcat" in
7794 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7795 esac
7796
7797 : now get the host name
7798 echo " "
7799 echo "Figuring out host name..." >&4
7800 case "$myhostname" in
7801 '') cont=true
7802         echo 'Maybe "hostname" will work...'
7803         if tans=`sh -c hostname 2>&1` ; then
7804                 myhostname=$tans
7805                 phostname=hostname
7806                 cont=''
7807         fi
7808         ;;
7809 *) cont='';;
7810 esac
7811 if $test "$cont"; then
7812         if ./xenix; then
7813                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7814                 if tans=`cat /etc/systemid 2>&1` ; then
7815                         myhostname=$tans
7816                         phostname='cat /etc/systemid'
7817                         echo "Whadyaknow.  Xenix always was a bit strange..."
7818                         cont=''
7819                 fi
7820         elif $test -r /etc/systemid; then
7821                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7822         fi
7823 fi
7824 if $test "$cont"; then
7825         echo 'No, maybe "uuname -l" will work...'
7826         if tans=`sh -c 'uuname -l' 2>&1` ; then
7827                 myhostname=$tans
7828                 phostname='uuname -l'
7829         else
7830                 echo 'Strange.  Maybe "uname -n" will work...'
7831                 if tans=`sh -c 'uname -n' 2>&1` ; then
7832                         myhostname=$tans
7833                         phostname='uname -n'
7834                 else
7835                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7836                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7837                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7838                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7839                         else
7840                                 case "$myhostname" in
7841                                 '') echo "Does this machine have an identity crisis or something?"
7842                                         phostname='';;
7843                                 *)
7844                                         echo "Well, you said $myhostname before..."
7845                                         phostname='echo $myhostname';;
7846                                 esac
7847                         fi
7848                 fi
7849         fi
7850 fi
7851 : you do not want to know about this
7852 set $myhostname
7853 myhostname=$1
7854
7855 : verify guess
7856 if $test "$myhostname" ; then
7857         dflt=y
7858         rp='Your host name appears to be "'$myhostname'".'" Right?"
7859         . ./myread
7860         case "$ans" in
7861         y*) ;;
7862         *) myhostname='';;
7863         esac
7864 fi
7865
7866 : bad guess or no guess
7867 while $test "X$myhostname" = X ; do
7868         dflt=''
7869         rp="Please type the (one word) name of your host:"
7870         . ./myread
7871         myhostname="$ans"
7872 done
7873
7874 : translate upper to lower if necessary
7875 case "$myhostname" in
7876 *[A-Z]*)
7877         echo "(Normalizing case in your host name)"
7878         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7879         ;;
7880 esac
7881
7882 case "$myhostname" in
7883 *.*)
7884         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7885         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7886         echo "(Trimming domain name from host name--host name is now $myhostname)"
7887         ;;
7888 *) case "$mydomain" in
7889         '')
7890                 {
7891                         test "X$hostcat" = "Xypcat hosts" &&
7892                         ypmatch "$myhostname" hosts 2>/dev/null |\
7893                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7894                         $test -s hosts
7895                 } || {
7896                         test "X$hostcat" != "X" &&
7897                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7898                                         /[       ]$myhostname[  . ]/p" > hosts
7899                 }
7900                 tmp_re="[       . ]"
7901                 if $test -f hosts; then
7902                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7903                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7904                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7905                                 hosts | $sort | $uniq | \
7906                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7907                         case `$echo X$dflt` in
7908                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7909                                 dflt=.
7910                                 ;;
7911                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7912                                 ;;
7913                         esac
7914                 else
7915                         echo "(I cannot locate a hosts database anywhere)"
7916                         dflt=.
7917                 fi
7918                 case "$dflt" in
7919                 .)
7920                         tans=`./loc resolv.conf X /etc /usr/etc`
7921                         if $test -f "$tans"; then
7922                                 echo "(Attempting domain name extraction from $tans)"
7923                                 dflt=.`$sed -n -e 's/   / /g' \
7924                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7925                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7926                                 case "$dflt" in
7927                                 .) dflt=.`$sed -n -e 's/        / /g' \
7928                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7929                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7930                                         ;;
7931                                 esac
7932                         fi
7933                         ;;
7934                 esac
7935                 case "$dflt" in
7936                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7937                         dflt=.`sh -c domainname 2>/dev/null`
7938                         case "$dflt" in
7939                         '') dflt='.';;
7940                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7941                         esac
7942                         ;;
7943                 esac
7944                 case "$dflt$osname" in
7945                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7946                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7947                         ;;
7948                 esac
7949                 case "$dflt" in
7950                 .) echo "(Lost all hope -- silly guess then)"
7951                         dflt='.uucp'
7952                         ;;
7953                 esac
7954                 $rm -f hosts
7955                 ;;
7956         *) dflt="$mydomain";;
7957         esac;;
7958 esac
7959 echo " "
7960 rp="What is your domain name?"
7961 . ./myread
7962 tans="$ans"
7963 case "$ans" in
7964 '') ;;
7965 .*) ;;
7966 *) tans=".$tans";;
7967 esac
7968 mydomain="$tans"
7969
7970 : translate upper to lower if necessary
7971 case "$mydomain" in
7972 *[A-Z]*)
7973         echo "(Normalizing case in your domain name)"
7974         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7975         ;;
7976 esac
7977
7978 : a little sanity check here
7979 case "$phostname" in
7980 '') ;;
7981 *)
7982         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7983         $myhostname$mydomain|$myhostname) ;;
7984         *)
7985                 case "$phostname" in
7986                 sed*)
7987                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7988                         ;;
7989                 *)
7990                         echo "(That doesn't agree with your $phostname command, by the way.)"
7991                         ;;
7992                 esac
7993         ;;
7994         esac
7995         ;;
7996 esac
7997
7998 $cat <<EOM
7999
8000 I need to get your e-mail address in Internet format if possible, i.e.
8001 something like user@host.domain. Please answer accurately since I have
8002 no easy means to double check it. The default value provided below
8003 is most probably close to reality but may not be valid from outside
8004 your organization...
8005
8006 EOM
8007 cont=x
8008 while test "$cont"; do
8009         case "$cf_email" in
8010         '') dflt="$cf_by@$myhostname$mydomain";;
8011         *) dflt="$cf_email";;
8012         esac
8013         rp='What is your e-mail address?'
8014         . ./myread
8015         cf_email="$ans"
8016         case "$cf_email" in
8017         *@*.*) cont='' ;;
8018         *)
8019                 rp='Address does not look like an Internet one.  Use it anyway?'
8020                 case "$fastread" in
8021                 yes) dflt=y ;;
8022                 *) dflt=n ;;
8023                 esac
8024                 . ./myread
8025                 case "$ans" in
8026                 y*) cont='' ;;
8027                 *) echo " " ;;
8028                 esac
8029                 ;;
8030         esac
8031 done
8032
8033 $cat <<EOM
8034
8035 If you or somebody else will be maintaining perl at your site, please
8036 fill in the correct e-mail address here so that they may be contacted
8037 if necessary. Currently, the "perlbug" program included with perl
8038 will send mail to this address in addition to perlbug@perl.org. You may
8039 enter "none" for no administrator.
8040
8041 EOM
8042 case "$perladmin" in
8043 '') dflt="$cf_email";;
8044 *) dflt="$perladmin";;
8045 esac
8046 rp='Perl administrator e-mail address'
8047 . ./myread
8048 perladmin="$ans"
8049
8050 : determine whether to only install version-specific parts.
8051 echo " "
8052 $cat <<EOM
8053 Do you want to install only the version-specific parts of the perl
8054 distribution?  Usually you do *not* want to do this.
8055 EOM
8056 case "$versiononly" in
8057 "$define"|[Yy]*|true) dflt='y' ;;
8058 *) dflt='n';
8059 esac
8060 rp="Do you want to install only the version-specific parts of perl?"
8061 . ./myread
8062 case "$ans" in
8063 [yY]*)  val="$define";;
8064 *)      val="$undef" ;;
8065 esac
8066 set versiononly
8067 eval $setvar
8068
8069 : figure out how to guarantee perl startup
8070 case "$startperl" in
8071 '')
8072         case "$sharpbang" in
8073         *!)
8074                 $cat <<EOH
8075
8076 I can use the #! construct to start perl on your system. This will
8077 make startup of perl scripts faster, but may cause problems if you
8078 want to share those scripts and perl is not in a standard place
8079 ($binexp/perl) on all your platforms. The alternative is to force
8080 a shell by starting the script with a single ':' character.
8081
8082 EOH
8083                 case "$versiononly" in
8084                 "$define")      dflt="$binexp/perl$version";;  
8085                 *)              dflt="$binexp/perl";;
8086                 esac
8087                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8088                 . ./myread
8089                 case "$ans" in
8090                 none)   startperl=": # use perl";;
8091                 *)      startperl="#!$ans"
8092                         if $test 30 -lt `echo "$ans" | wc -c`; then
8093                                 $cat >&4 <<EOM
8094
8095 WARNING:  Some systems limit the #! command to 32 characters.
8096 If you experience difficulty running Perl scripts with #!, try
8097 installing Perl in a directory with a shorter pathname.
8098
8099 EOM
8100                         fi ;;
8101                 esac
8102                 ;;
8103         *) startperl=": # use perl"
8104                 ;;
8105         esac
8106         ;;
8107 esac
8108 echo "I'll use $startperl to start perl scripts."
8109
8110 : figure best path for perl in scripts
8111 case "$perlpath" in
8112 '')
8113         perlpath="$binexp/perl"
8114         case "$startperl" in
8115         *!*) ;;
8116         *)
8117                 $cat <<EOH
8118
8119 I will use the "eval 'exec'" idiom to start Perl on your system.
8120 I can use the full path of your Perl binary for this purpose, but
8121 doing so may cause problems if you want to share those scripts and
8122 Perl is not always in a standard place ($binexp/perl).
8123
8124 EOH
8125                 dflt="$binexp/perl"
8126                 rp="What path shall I use in \"eval 'exec'\"?"
8127                 . ./myread
8128                 perlpath="$ans"
8129                 ;;
8130         esac
8131         ;;
8132 esac
8133 case "$startperl" in
8134 *!*)    ;;
8135 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8136 esac
8137
8138 : determine where public executable scripts go
8139 set scriptdir scriptdir
8140 eval $prefixit
8141 case "$scriptdir" in
8142 '')
8143         dflt="$bin"
8144         : guess some guesses
8145         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8146         $test -d /usr/share/bin     && dflt=/usr/share/bin
8147         $test -d /usr/local/script  && dflt=/usr/local/script
8148         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8149         $test -d $prefixexp/script  && dflt=$prefixexp/script
8150         set dflt
8151         eval $prefixup
8152         ;;
8153 *)  dflt="$scriptdir"
8154         ;;
8155 esac
8156 $cat <<EOM
8157  
8158 Some installations have a separate directory just for executable scripts so
8159 that they can mount it across multiple architectures but keep the scripts in
8160 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8161 Or you might just lump your scripts in with all your other executables.
8162  
8163 EOM
8164 fn=d~
8165 rp='Where do you keep publicly executable scripts?'
8166 . ./getfile
8167 if $test "X$ansexp" != "X$scriptdirexp"; then
8168         installscript=''
8169 fi
8170 scriptdir="$ans"
8171 scriptdirexp="$ansexp"
8172 : Change installation prefix, if necessary.
8173 if $test X"$prefix" != X"$installprefix"; then
8174         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8175 else
8176         installscript="$scriptdirexp"
8177 fi
8178
8179 : determine where add-on public executables go
8180 case "$sitebin" in
8181 '')     dflt=$siteprefix/bin ;;
8182 *)      dflt=$sitebin ;;
8183 esac
8184 fn=d~
8185 rp='Pathname where the add-on public executables should be installed?'
8186 . ./getfile
8187 sitebin="$ans"
8188 sitebinexp="$ansexp"
8189 : Change installation prefix, if necessary.
8190 if $test X"$prefix" != X"$installprefix"; then
8191         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8192 else
8193         installsitebin="$sitebinexp"
8194 fi
8195
8196 case "$vendorprefix" in
8197 '')     d_vendorbin="$undef"
8198         vendorbin=''
8199         vendorbinexp=''
8200         ;;
8201 *)      d_vendorbin="$define"
8202         : determine where vendor-supplied executables go.
8203         case "$vendorbin" in
8204         '') dflt=$vendorprefix/bin ;;
8205         *)      dflt="$vendorbin" ;;
8206         esac
8207         fn=d~+
8208         rp='Pathname for the vendor-supplied executables directory?'
8209         . ./getfile
8210         vendorbin="$ans"
8211         vendorbinexp="$ansexp"
8212         ;;
8213 esac
8214 : Change installation prefix, if necessary.
8215 if $test X"$prefix" != X"$installprefix"; then
8216         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8217 else
8218         installvendorbin="$vendorbinexp"
8219 fi
8220
8221 : see if qgcvt exists
8222 set qgcvt d_qgcvt
8223 eval $inlibc
8224
8225 echo " "
8226
8227 if $test X"$d_longdbl" = X"$define"; then
8228
8229 echo "Checking how to print long doubles..." >&4
8230
8231 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8232         $cat >try.c <<'EOCP'
8233 #include <sys/types.h>
8234 #include <stdio.h>
8235 int main() {
8236   double d = 123.456;
8237   printf("%.3f\n", d);
8238 }
8239 EOCP
8240         set try
8241         if eval $compile; then
8242                 yyy=`$run ./try`
8243                 case "$yyy" in
8244                 123.456)
8245                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8246                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8247                         echo "We will use %f."
8248                         ;;
8249                 esac
8250         fi
8251 fi
8252
8253 if $test X"$sPRIfldbl" = X; then
8254         $cat >try.c <<'EOCP'
8255 #include <sys/types.h>
8256 #include <stdio.h>
8257 int main() {
8258   long double d = 123.456;
8259   printf("%.3Lf\n", d);
8260 }
8261 EOCP
8262         set try
8263         if eval $compile; then
8264                 yyy=`$run ./try`
8265                 case "$yyy" in
8266                 123.456)
8267                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8268                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8269                         echo "We will use %Lf."
8270                         ;;
8271                 esac
8272         fi
8273 fi
8274
8275 if $test X"$sPRIfldbl" = X; then
8276         $cat >try.c <<'EOCP'
8277 #include <sys/types.h>
8278 #include <stdio.h>
8279 int main() {
8280   long double d = 123.456;
8281   printf("%.3llf\n", d);
8282 }
8283 EOCP
8284         set try
8285         if eval $compile; then
8286                 yyy=`$run ./try`
8287                 case "$yyy" in
8288                 123.456)
8289                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8290                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8291                         echo "We will use %llf."
8292                         ;;
8293                 esac
8294         fi
8295 fi
8296
8297 if $test X"$sPRIfldbl" = X; then
8298         $cat >try.c <<'EOCP'
8299 #include <sys/types.h>
8300 #include <stdio.h>
8301 int main() {
8302   long double d = 123.456;
8303   printf("%.3lf\n", d);
8304 }
8305 EOCP
8306         set try
8307         if eval $compile; then
8308                 yyy=`$run ./try`
8309                 case "$yyy" in
8310                 123.456)
8311                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8312                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8313                         echo "We will use %lf."
8314                         ;;
8315                 esac
8316         fi
8317 fi
8318
8319 if $test X"$sPRIfldbl" = X; then
8320         echo "Cannot figure out how to print long doubles." >&4
8321 else
8322         sSCNfldbl=$sPRIfldbl    # expect consistency
8323 fi
8324
8325 $rm -f try try.*
8326
8327 fi # d_longdbl
8328
8329 case "$sPRIfldbl" in
8330 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
8331         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
8332         d_SCNfldbl="$undef";
8333         ;;
8334 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
8335         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
8336         d_SCNfldbl="$define";
8337         ;;
8338 esac
8339
8340 : Check how to convert floats to strings.
8341 echo " "
8342 echo "Checking for an efficient way to convert floats to strings."
8343 echo " " > try.c
8344 case "$uselongdouble" in
8345 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8346 esac
8347 case "$d_longdbl" in
8348 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8349 esac
8350 case "$d_PRIgldbl" in
8351 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
8352 esac
8353 $cat >>try.c <<EOP
8354 #ifdef TRY_gconvert
8355 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8356 char *myname = "gconvert";
8357 #endif
8358 #ifdef TRY_gcvt
8359 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8360 char *myname = "gcvt";
8361 #endif
8362 #ifdef TRY_qgcvt
8363 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8364 char *myname = "qgcvt";
8365 #define DOUBLETYPE long double
8366 #endif
8367 #ifdef TRY_sprintf
8368 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8369 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8370 #else
8371 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8372 #endif
8373 char *myname = "sprintf";
8374 #endif
8375
8376 #ifndef DOUBLETYPE
8377 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8378 #define DOUBLETYPE long double
8379 #else
8380 #define DOUBLETYPE double
8381 #endif
8382 #endif
8383
8384 #include <stdio.h>
8385
8386 #define I_STDLIB $i_stdlib
8387 #ifdef I_STDLIB
8388 #include <stdlib.h>
8389 #endif
8390
8391 int
8392 checkit(expect, got)
8393 char *expect;
8394 char *got;
8395 {
8396     if (strcmp(expect, got)) {
8397                 printf("%s oddity:  Expected %s, got %s\n",
8398                         myname, expect, got);
8399                 exit(1);
8400         }
8401 }
8402
8403 int main()
8404
8405         char buf[64]; 
8406         buf[63] = '\0';
8407
8408         /* This must be 1st test on (which?) platform */
8409         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8410         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8411         checkit("0.1", buf);
8412
8413         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
8414         checkit("1", buf);
8415
8416         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
8417         checkit("1.1", buf);
8418
8419         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
8420         checkit("1.01", buf);
8421
8422         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
8423         checkit("1.001", buf);
8424
8425         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
8426         checkit("1.0001", buf);
8427
8428         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
8429         checkit("1.00001", buf);
8430
8431         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
8432         checkit("1.000001", buf);
8433
8434         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
8435         checkit("0", buf);
8436
8437         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
8438         checkit("-1", buf);
8439
8440         /* Some Linux gcvt's give 1.e+5 here. */
8441         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
8442         checkit("100000", buf);
8443         
8444         /* Some Linux gcvt's give -1.e+5 here. */
8445         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
8446         checkit("-100000", buf);
8447
8448         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
8449         checkit("123.456", buf);
8450
8451         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8452         Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8453         if (strlen(buf) > 5)
8454             checkit("1e+030", buf); /* for Microsoft */
8455         else
8456             checkit("1e+30", buf);
8457
8458         exit(0);
8459 }
8460 EOP
8461 case "$d_Gconvert" in
8462 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8463 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8464 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8465 *) xxx_list='gconvert gcvt sprintf' ;;
8466 esac
8467
8468 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8469 "$define$define$define")
8470     # for long doubles prefer first qgcvt, then sprintf
8471     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
8472     xxx_list="sprintf $xxx_list"
8473     case "$d_qgcvt" in
8474     "$define") xxx_list="qgcvt $xxx_list" ;;
8475     esac
8476     ;;
8477 esac
8478
8479 for xxx_convert in $xxx_list; do
8480         echo "Trying $xxx_convert..."
8481         $rm -f try try$_o
8482         set try -DTRY_$xxx_convert
8483         if eval $compile; then
8484                 echo "$xxx_convert() found." >&4
8485                 if $run ./try; then
8486                         echo "I'll use $xxx_convert to convert floats into a string." >&4
8487                         break;
8488                 else
8489                         echo "...But $xxx_convert didn't work as I expected."
8490                 fi
8491         else
8492                 echo "$xxx_convert NOT found." >&4
8493         fi
8494 done
8495         
8496 case "$xxx_convert" in
8497 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8498 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8499 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8500 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8501    "$define$define$define")
8502       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8503    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8504    esac
8505    ;;  
8506 esac
8507
8508 : see if _fwalk exists
8509 set fwalk d__fwalk
8510 eval $inlibc
8511
8512 : Initialize h_fcntl
8513 h_fcntl=false
8514
8515 : Initialize h_sysfile
8516 h_sysfile=false
8517
8518 : access call always available on UNIX
8519 set access d_access
8520 eval $inlibc
8521
8522 : locate the flags for 'access()'
8523 case "$d_access" in
8524 "$define")
8525         echo " "
8526         $cat >access.c <<'EOCP'
8527 #include <sys/types.h>
8528 #ifdef I_FCNTL
8529 #include <fcntl.h>
8530 #endif
8531 #ifdef I_SYS_FILE
8532 #include <sys/file.h>
8533 #endif
8534 #ifdef I_UNISTD
8535 #include <unistd.h>
8536 #endif
8537 int main() {
8538         exit(R_OK);
8539 }
8540 EOCP
8541         : check sys/file.h first, no particular reason here
8542         if $test `./findhdr sys/file.h` && \
8543                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8544                 h_sysfile=true;
8545                 echo "<sys/file.h> defines the *_OK access constants." >&4
8546         elif $test `./findhdr fcntl.h` && \
8547                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8548                 h_fcntl=true;
8549                 echo "<fcntl.h> defines the *_OK access constants." >&4
8550         elif $test `./findhdr unistd.h` && \
8551                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8552                 echo "<unistd.h> defines the *_OK access constants." >&4
8553         else
8554                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8555         fi
8556         ;;
8557 esac
8558 $rm -f access*
8559
8560 : see if accessx exists
8561 set accessx d_accessx
8562 eval $inlibc
8563
8564 : see if alarm exists
8565 set alarm d_alarm
8566 eval $inlibc
8567
8568 : see if atolf exists
8569 set atolf d_atolf
8570 eval $inlibc
8571
8572 : see if atoll exists
8573 set atoll d_atoll
8574 eval $inlibc
8575
8576 : Look for GNU-cc style attribute checking
8577 echo " "
8578 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8579 $cat >attrib.c <<'EOCP'
8580 #include <stdio.h>
8581 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8582 EOCP
8583 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8584         if $contains 'warning' attrib.out >/dev/null 2>&1; then
8585                 echo "Your C compiler doesn't fully support __attribute__."
8586                 val="$undef"
8587         else
8588                 echo "Your C compiler supports __attribute__."
8589                 val="$define"
8590         fi
8591 else
8592         echo "Your C compiler doesn't seem to understand __attribute__ at all."
8593         val="$undef"
8594 fi
8595 set d_attribut
8596 eval $setvar
8597 $rm -f attrib*
8598
8599 : see if bcmp exists
8600 set bcmp d_bcmp
8601 eval $inlibc
8602
8603 : see if bcopy exists
8604 set bcopy d_bcopy
8605 eval $inlibc
8606
8607 : see if this is a unistd.h system
8608 set unistd.h i_unistd
8609 eval $inhdr
8610
8611 : see if getpgrp exists
8612 set getpgrp d_getpgrp
8613 eval $inlibc
8614
8615 case "$d_getpgrp" in
8616 "$define")
8617         echo " "
8618         echo "Checking to see which flavor of getpgrp is in use..."
8619         $cat >try.c <<EOP
8620 #$i_unistd I_UNISTD
8621 #include <sys/types.h>
8622 #ifdef I_UNISTD
8623 #  include <unistd.h>
8624 #endif
8625 int main()
8626 {
8627         if (getuid() == 0) {
8628                 printf("(I see you are running Configure as super-user...)\n");
8629                 setuid(1);
8630         }
8631 #ifdef TRY_BSD_PGRP
8632         if (getpgrp(1) == 0)
8633                 exit(0);
8634 #else
8635         if (getpgrp() > 0)
8636                 exit(0);
8637 #endif
8638         exit(1);
8639 }
8640 EOP
8641         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8642                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8643                 val="$define"
8644         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8645                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8646                 val="$undef"
8647         else
8648                 echo "I can't seem to compile and run the test program."
8649                 if ./usg; then
8650                         xxx="a USG one, i.e. you use getpgrp()."
8651                 else
8652                         # SVR4 systems can appear rather BSD-ish.
8653                         case "$i_unistd" in
8654                         $undef)
8655                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8656                                 val="$define"
8657                                 ;;
8658                         $define)
8659                                 xxx="probably a USG one, i.e. you use getpgrp()."
8660                                 val="$undef"
8661                                 ;;
8662                         esac
8663                 fi
8664                 echo "Assuming your getpgrp is $xxx" >&4
8665         fi
8666         ;;
8667 *) val="$undef";;
8668 esac
8669 set d_bsdgetpgrp
8670 eval $setvar
8671 $rm -f try try.*
8672
8673 : see if setpgrp exists
8674 set setpgrp d_setpgrp
8675 eval $inlibc
8676
8677 case "$d_setpgrp" in
8678 "$define")
8679         echo " "
8680         echo "Checking to see which flavor of setpgrp is in use..."
8681         $cat >try.c <<EOP
8682 #$i_unistd I_UNISTD
8683 #include <sys/types.h>
8684 #ifdef I_UNISTD
8685 #  include <unistd.h>
8686 #endif
8687 int main()
8688 {
8689         if (getuid() == 0) {
8690                 printf("(I see you are running Configure as super-user...)\n");
8691                 setuid(1);
8692         }
8693 #ifdef TRY_BSD_PGRP
8694         if (-1 == setpgrp(1, 1))
8695                 exit(0);
8696 #else
8697         if (setpgrp() != -1)
8698                 exit(0);
8699 #endif
8700         exit(1);
8701 }
8702 EOP
8703         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8704                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8705                 val="$define"
8706         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8707                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8708                 val="$undef"
8709         else
8710                 echo "(I can't seem to compile and run the test program.)"
8711                 if ./usg; then
8712                         xxx="a USG one, i.e. you use setpgrp()."
8713                 else
8714                         # SVR4 systems can appear rather BSD-ish.
8715                         case "$i_unistd" in
8716                         $undef)
8717                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8718                                 val="$define"
8719                                 ;;
8720                         $define)
8721                                 xxx="probably a USG one, i.e. you use setpgrp()."
8722                                 val="$undef"
8723                                 ;;
8724                         esac
8725                 fi
8726                 echo "Assuming your setpgrp is $xxx" >&4
8727         fi
8728         ;;
8729 *) val="$undef";;
8730 esac
8731 set d_bsdsetpgrp
8732 eval $setvar
8733 $rm -f try try.*
8734 : see if bzero exists
8735 set bzero d_bzero
8736 eval $inlibc
8737
8738 : see if signal is declared as pointer to function returning int or void
8739 echo " "
8740 xxx=`./findhdr signal.h`
8741 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8742 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8743         echo "You have int (*signal())() instead of void." >&4
8744         val="$undef"
8745 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8746         echo "You have void (*signal())()." >&4
8747         val="$define"
8748 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8749         echo "You have int (*signal())() instead of void." >&4
8750         val="$undef"
8751 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8752         echo "You have void (*signal())()." >&4
8753         val="$define"
8754 else
8755         case "$d_voidsig" in
8756         '')
8757         echo "I can't determine whether signal handler returns void or int..." >&4
8758                 dflt=void
8759                 rp="What type does your signal handler return?"
8760                 . ./myread
8761                 case "$ans" in
8762                 v*) val="$define";;
8763                 *) val="$undef";;
8764                 esac;;
8765         "$define")
8766                 echo "As you already told me, signal handler returns void." >&4
8767                 val="$define"
8768                 ;;
8769         *)      echo "As you already told me, signal handler returns int." >&4
8770                 val="$undef"
8771                 ;;
8772         esac
8773 fi
8774 set d_voidsig
8775 eval $setvar
8776 case "$d_voidsig" in
8777 "$define") signal_t="void";;
8778 *) signal_t="int";;
8779 esac
8780 $rm -f $$.tmp
8781
8782 : check for ability to cast large floats to 32-bit ints.
8783 echo " "
8784 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8785 if $test "$intsize" -ge 4; then
8786         xxx=int
8787 else
8788         xxx=long
8789 fi
8790 $cat >try.c <<EOCP
8791 #include <stdio.h>
8792 #include <sys/types.h>
8793 #include <signal.h>
8794 $signal_t blech(s) int s; { exit(3); }
8795 int main()
8796 {
8797         $xxx i32;
8798         double f, g;
8799         int result = 0;
8800         char str[16];
8801         signal(SIGFPE, blech);
8802
8803         /* Don't let compiler optimize the test away.  Store the number 
8804            in a writable string for gcc to pass to sscanf under HP/UX.
8805         */
8806         sprintf(str, "2147483647");
8807         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8808         g = 10 * f;
8809         i32  = ($xxx) g;
8810
8811         /* x86 processors will probably give 0x8000 0000, which is a
8812        sign change.  We don't want that.  We want to mimic SPARC
8813            behavior here, which is to preserve the sign and give
8814            back 0x7fff ffff.
8815         */
8816         if (i32 != ($xxx) f)
8817                 result |= 1;
8818         exit(result);
8819 }
8820 EOCP
8821 set try
8822 if eval $compile_ok; then
8823         $run ./try
8824         yyy=$?
8825 else
8826         echo "(I can't seem to compile the test program--assuming it can't)"
8827         yyy=1
8828 fi
8829 case "$yyy" in
8830 0)      val="$define"
8831         echo "Yup, it can."
8832         ;;
8833 *)      val="$undef"
8834         echo "Nope, it can't."
8835         ;;
8836 esac
8837 set d_casti32
8838 eval $setvar
8839 $rm -f try try.*
8840
8841 : check for ability to cast negative floats to unsigned
8842 echo " "
8843 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8844 $cat >try.c <<EOCP
8845 #include <stdio.h>
8846 #include <sys/types.h>
8847 #include <signal.h>
8848 $signal_t blech(s) int s; { exit(7); }
8849 $signal_t blech_in_list(s) int s; { exit(4); }
8850 unsigned long dummy_long(p) unsigned long p; { return p; }
8851 unsigned int dummy_int(p) unsigned int p; { return p; }
8852 unsigned short dummy_short(p) unsigned short p; { return p; }
8853 int main()
8854 {
8855         double f;
8856         unsigned long along;
8857         unsigned int aint;
8858         unsigned short ashort;
8859         int result = 0;
8860         char str[16];
8861         
8862         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8863            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8864            optimized the whole file away
8865         */
8866         /* Store the number in a writable string for gcc to pass to 
8867            sscanf under HP/UX.
8868         */
8869         sprintf(str, "-123");
8870         sscanf(str, "%lf", &f);  /* f = -123.; */
8871
8872         signal(SIGFPE, blech);
8873         along = (unsigned long)f;
8874         aint = (unsigned int)f;
8875         ashort = (unsigned short)f;
8876         if (along != (unsigned long)-123)
8877                 result |= 1;
8878         if (aint != (unsigned int)-123)
8879                 result |= 1;
8880         if (ashort != (unsigned short)-123)
8881                 result |= 1;
8882         sprintf(str, "1073741824.");
8883         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8884         f = f + f;
8885         along = 0;
8886         along = (unsigned long)f;
8887         if (along != 0x80000000)
8888                 result |= 2;
8889         f -= 1.;
8890         along = 0;
8891         along = (unsigned long)f;
8892         if (along != 0x7fffffff)
8893                 result |= 1;
8894         f += 2.;
8895         along = 0;
8896         along = (unsigned long)f;
8897         if (along != 0x80000001)
8898                 result |= 2;
8899         if (result)
8900                 exit(result);
8901         signal(SIGFPE, blech_in_list);
8902         sprintf(str, "123.");
8903         sscanf(str, "%lf", &f);  /* f = 123.; */
8904         along = dummy_long((unsigned long)f);
8905         aint = dummy_int((unsigned int)f);
8906         ashort = dummy_short((unsigned short)f);
8907         if (along != (unsigned long)123)
8908                 result |= 4;
8909         if (aint != (unsigned int)123)
8910                 result |= 4;
8911         if (ashort != (unsigned short)123)
8912                 result |= 4;
8913         exit(result);
8914
8915 }
8916 EOCP
8917 set try
8918 if eval $compile_ok; then
8919         $run ./try
8920         castflags=$?
8921 else
8922         echo "(I can't seem to compile the test program--assuming it can't)"
8923         castflags=7
8924 fi
8925 case "$castflags" in
8926 0)      val="$define"
8927         echo "Yup, it can."
8928         ;;
8929 *)      val="$undef"
8930         echo "Nope, it can't."
8931         ;;
8932 esac
8933 set d_castneg
8934 eval $setvar
8935 $rm -f try.*
8936
8937 : see if vprintf exists
8938 echo " "
8939 if set vprintf val -f d_vprintf; eval $csym; $val; then
8940         echo 'vprintf() found.' >&4
8941         val="$define"
8942         $cat >try.c <<'EOF'
8943 #include <varargs.h>
8944
8945 int main() { xxx("foo"); }
8946
8947 xxx(va_alist)
8948 va_dcl
8949 {
8950         va_list args;
8951         char buf[10];
8952
8953         va_start(args);
8954         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8955 }
8956 EOF
8957         set try
8958         if eval $compile && $run ./try; then
8959                 echo "Your vsprintf() returns (int)." >&4
8960                 val2="$undef"
8961         else
8962                 echo "Your vsprintf() returns (char*)." >&4
8963                 val2="$define"
8964         fi
8965 else
8966         echo 'vprintf() NOT found.' >&4
8967                 val="$undef"
8968                 val2="$undef"
8969 fi
8970 $rm -f try try.*
8971 set d_vprintf
8972 eval $setvar
8973 val=$val2
8974 set d_charvspr
8975 eval $setvar
8976
8977 : see if chown exists
8978 set chown d_chown
8979 eval $inlibc
8980
8981 : see if chroot exists
8982 set chroot d_chroot
8983 eval $inlibc
8984
8985 : see if chsize exists
8986 set chsize d_chsize
8987 eval $inlibc
8988
8989 hasstruct='varname=$1; struct=$2; shift; shift;
8990 while $test $# -ge 2; do
8991         case "$1" in
8992         $define) echo "#include <$2>";;
8993         esac ;
8994     shift 2;
8995 done > try.c;
8996 echo "int main () { struct $struct foo; }" >> try.c;
8997 set try;
8998 if eval $compile; then
8999         val="$define";
9000 else
9001         val="$undef";
9002 fi;
9003 set $varname;
9004 eval $setvar;
9005 $rm -f try.c try.o'
9006
9007 : see if sys/types.h has to be included
9008 set sys/types.h i_systypes
9009 eval $inhdr
9010
9011 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9012 while $test $# -ge 2; do
9013         case "$1" in
9014         $define) echo "#include <$2>";;
9015         esac ;
9016     shift 2;
9017 done > try.c;
9018 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9019 set try;
9020 if eval $compile; then
9021         val="$define";
9022 else
9023         val="$undef";
9024 fi;
9025 set $varname;
9026 eval $setvar;
9027 $rm -f try.c try.o'
9028
9029 socketlib=''
9030 sockethdr=''
9031 : see whether socket exists
9032 echo " "
9033 $echo $n "Hmm... $c" >&4
9034 if set socket val -f d_socket; eval $csym; $val; then
9035         echo "Looks like you have Berkeley networking support." >&4
9036         d_socket="$define"
9037         if set setsockopt val -f; eval $csym; $val; then
9038                 d_oldsock="$undef"
9039         else
9040                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9041                 d_oldsock="$define"
9042         fi
9043 else
9044         if $contains socklib libc.list >/dev/null 2>&1; then
9045                 echo "Looks like you have Berkeley networking support." >&4
9046                 d_socket="$define"
9047                 : we will have to assume that it supports the 4.2 BSD interface
9048                 d_oldsock="$undef"
9049         else
9050                 echo "You don't have Berkeley networking in libc$_a..." >&4
9051                 if test "X$d_socket" = "X$define"; then
9052                    echo "...but you seem to believe that you have sockets." >&4
9053                 else
9054                         for net in net socket
9055                         do
9056                                 if test -f /usr/lib/lib$net$_a; then
9057                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9058                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9059                                         if $contains socket libc.list >/dev/null 2>&1; then
9060                                                 d_socket="$define"
9061                                                 socketlib="-l$net"
9062                                                 case "$net" in
9063                                                 net)
9064                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9065                                                         sockethdr="-I/usr/netinclude"
9066                                                         ;;
9067                                                 esac
9068                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9069                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9070                                                         d_oldsock="$undef"
9071                                                 else
9072                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9073                                                         d_oldsock="$define"
9074                                                 fi
9075                                                 break
9076                                         fi
9077                                 fi
9078                         done
9079                         if test "X$d_socket" != "X$define"; then
9080                            echo "or anywhere else I see." >&4
9081                            d_socket="$undef"
9082                            d_oldsock="$undef"
9083                         fi
9084                 fi
9085         fi
9086 fi
9087
9088 : see if socketpair exists
9089 set socketpair d_sockpair
9090 eval $inlibc
9091
9092
9093 echo " "
9094 echo "Checking the availability of certain socket constants..." >& 4
9095 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9096         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9097         $cat >try.c <<EOF
9098 #include <sys/types.h>
9099 #include <sys/socket.h>
9100 int main() {
9101     int i = $ENUM;
9102 }
9103 EOF
9104         val="$undef"
9105         set try; if eval $compile; then
9106                 val="$define"
9107         fi
9108         set d_${enum}; eval $setvar
9109         $rm -f try.c try
9110 done
9111
9112 : see if this is a sys/uio.h system
9113 set sys/uio.h i_sysuio
9114 eval $inhdr
9115
9116
9117 echo " "
9118 echo "Checking to see if your system supports struct cmsghdr..." >&4
9119 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9120 eval $hasstruct
9121 case "$d_cmsghdr_s" in
9122 "$define")      echo "Yes, it does."   ;;
9123 *)              echo "No, it doesn't." ;;
9124 esac
9125
9126
9127 : check for const keyword
9128 echo " "
9129 echo 'Checking to see if your C compiler knows about "const"...' >&4
9130 $cat >const.c <<'EOCP'
9131 typedef struct spug { int drokk; } spug;
9132 int main()
9133 {
9134         const char *foo;
9135         const spug y;
9136 }
9137 EOCP
9138 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9139         val="$define"
9140         echo "Yup, it does."
9141 else
9142         val="$undef"
9143         echo "Nope, it doesn't."
9144 fi
9145 set d_const
9146 eval $setvar
9147
9148 : see if crypt exists
9149 echo " "
9150 if set crypt val -f d_crypt; eval $csym; $val; then
9151         echo 'crypt() found.' >&4
9152         val="$define"
9153         cryptlib=''
9154 else
9155         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9156         if $test -z "$cryptlib"; then
9157                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9158         else
9159                 cryptlib=-lcrypt
9160         fi
9161         if $test -z "$cryptlib"; then
9162                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9163         else
9164                 cryptlib=-lcrypt
9165         fi
9166         if $test -z "$cryptlib"; then
9167                 cryptlib=`./loc libcrypt$_a "" $libpth`
9168         else
9169                 cryptlib=-lcrypt
9170         fi
9171         if $test -z "$cryptlib"; then
9172                 echo 'crypt() NOT found.' >&4
9173                 val="$undef"
9174         else
9175                 val="$define"
9176         fi
9177 fi
9178 set d_crypt
9179 eval $setvar
9180
9181 : get csh whereabouts
9182 case "$csh" in
9183 'csh') val="$undef" ;;
9184 *) val="$define" ;;
9185 esac
9186 set d_csh
9187 eval $setvar
9188 : Respect a hint or command line value for full_csh.
9189 case "$full_csh" in
9190 '') full_csh=$csh ;;
9191 esac
9192
9193 : see if cuserid exists
9194 set cuserid d_cuserid
9195 eval $inlibc
9196
9197 : see if this is a limits.h system
9198 set limits.h i_limits
9199 eval $inhdr
9200
9201 : see if this is a float.h system
9202 set float.h i_float
9203 eval $inhdr
9204
9205 : See if number of significant digits in a double precision number is known
9206 echo " "
9207 $cat >dbl_dig.c <<EOM
9208 #$i_limits I_LIMITS
9209 #$i_float I_FLOAT
9210 #ifdef I_LIMITS
9211 #include <limits.h>
9212 #endif
9213 #ifdef I_FLOAT
9214 #include <float.h>
9215 #endif
9216 #ifdef DBL_DIG
9217 printf("Contains DBL_DIG");
9218 #endif
9219 EOM
9220 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9221 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9222         echo "DBL_DIG found." >&4
9223         val="$define"
9224 else
9225         echo "DBL_DIG NOT found." >&4
9226         val="$undef"
9227 fi
9228 $rm -f dbl_dig.?
9229 set d_dbl_dig
9230 eval $setvar
9231
9232 hasproto='varname=$1; func=$2; shift; shift;
9233 while $test $# -ge 2; do
9234         case "$1" in
9235         $define) echo "#include <$2>";;
9236         esac ;
9237     shift 2;
9238 done > try.c;
9239 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9240 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9241         echo "$func() prototype found.";
9242         val="$define";
9243 else
9244         echo "$func() prototype NOT found.";
9245         val="$undef";
9246 fi;
9247 set $varname;
9248 eval $setvar;
9249 $rm -f try.c tryout.c'
9250
9251 : see if dbm.h is available
9252 : see if dbmclose exists
9253 set dbmclose d_dbmclose
9254 eval $inlibc
9255
9256 case "$d_dbmclose" in
9257 $define)
9258         set dbm.h i_dbm
9259         eval $inhdr
9260         case "$i_dbm" in
9261         $define)
9262                 val="$undef"
9263                 set i_rpcsvcdbm
9264                 eval $setvar
9265                 ;;
9266         *)      set rpcsvc/dbm.h i_rpcsvcdbm
9267                 eval $inhdr
9268                 ;;
9269         esac
9270         ;;
9271 *)      echo "We won't be including <dbm.h>"
9272         val="$undef"
9273         set i_dbm
9274         eval $setvar
9275         val="$undef"
9276         set i_rpcsvcdbm
9277         eval $setvar
9278         ;;
9279 esac
9280
9281 : see if prototype for dbminit is available
9282 echo " "
9283 set d_dbminitproto dbminit $i_dbm dbm.h
9284 eval $hasproto
9285
9286 : see if difftime exists
9287 set difftime d_difftime
9288 eval $inlibc
9289
9290 : see if this is a dirent system
9291 echo " "
9292 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9293         val="$define"
9294         echo "<dirent.h> found." >&4
9295 else
9296         val="$undef"
9297         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9298                 echo "<sys/dir.h> found." >&4
9299                 echo " "
9300         else
9301                 xinc=`./findhdr sys/ndir.h`
9302         fi
9303         echo "<dirent.h> NOT found." >&4
9304 fi
9305 set i_dirent
9306 eval $setvar
9307
9308 : Look for type of directory structure.
9309 echo " "
9310 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9311
9312 case "$direntrytype" in
9313 ''|' ')
9314         case "$i_dirent" in
9315         $define) guess1='struct dirent' ;;
9316         *) guess1='struct direct'  ;;
9317         esac
9318         ;;
9319 *)      guess1="$direntrytype"
9320         ;;
9321 esac
9322
9323 case "$guess1" in
9324 'struct dirent') guess2='struct direct' ;;
9325 *) guess2='struct dirent' ;;
9326 esac
9327                 
9328 if $contains "$guess1" try.c >/dev/null 2>&1; then
9329         direntrytype="$guess1"
9330         echo "Your directory entries are $direntrytype." >&4
9331 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9332         direntrytype="$guess2"
9333         echo "Your directory entries seem to be $direntrytype." >&4
9334 else
9335         echo "I don't recognize your system's directory entries." >&4
9336         rp="What type is used for directory entries on this system?"
9337         dflt="$guess1"
9338         . ./myread
9339         direntrytype="$ans"
9340 fi
9341 $rm -f try.c
9342
9343
9344 : see if the directory entry stores field length
9345 echo " "
9346 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9347 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9348         echo "Good, your directory entry keeps length information in d_namlen." >&4
9349         val="$define"
9350 else
9351         echo "Your directory entry does not know about the d_namlen field." >&4
9352         val="$undef"
9353 fi
9354 set d_dirnamlen
9355 eval $setvar
9356 $rm -f try.c
9357
9358 : see if dlerror exists
9359 xxx_runnm="$runnm"
9360 runnm=false
9361 set dlerror d_dlerror
9362 eval $inlibc
9363 runnm="$xxx_runnm"
9364
9365 : see if dlfcn is available
9366 set dlfcn.h i_dlfcn
9367 eval $inhdr
9368
9369 case "$usedl" in
9370 $define|y|true)
9371         $cat << EOM
9372
9373 On a few systems, the dynamically loaded modules that perl generates and uses
9374 will need a different extension than shared libs. The default will probably
9375 be appropriate.
9376
9377 EOM
9378         case "$dlext" in
9379         '')     dflt="$so" ;;
9380         *)      dflt="$dlext" ;;
9381         esac
9382         rp='What is the extension of dynamically loaded modules'
9383         . ./myread
9384         dlext="$ans"
9385         ;;
9386 *)
9387         dlext="none"
9388         ;;
9389 esac
9390
9391 : Check if dlsym need a leading underscore
9392 echo " "
9393 val="$undef"
9394
9395 case "$dlsrc" in
9396 dl_dlopen.xs)
9397         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9398         $cat >dyna.c <<'EOM'
9399 fred () { }
9400 EOM
9401
9402 $cat >fred.c<<EOM
9403
9404 #include <stdio.h>
9405 #$i_dlfcn I_DLFCN
9406 #ifdef I_DLFCN
9407 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
9408 #else
9409 #include <sys/types.h>
9410 #include <nlist.h>
9411 #include <link.h>
9412 #endif
9413
9414 extern int fred() ;
9415
9416 int main()
9417 {
9418     void * handle ;
9419     void * symbol ;
9420 #ifndef RTLD_LAZY
9421     int mode = 1 ;
9422 #else
9423     int mode = RTLD_LAZY ;
9424 #endif
9425     handle = dlopen("./dyna.$dlext", mode) ;
9426     if (handle == NULL) {
9427         printf ("1\n") ;
9428         fflush (stdout) ;
9429         exit(0);
9430     }
9431     symbol = dlsym(handle, "fred") ;
9432     if (symbol == NULL) {
9433         /* try putting a leading underscore */
9434         symbol = dlsym(handle, "_fred") ;
9435         if (symbol == NULL) {
9436             printf ("2\n") ;
9437             fflush (stdout) ;
9438             exit(0);
9439         }
9440         printf ("3\n") ;
9441     }
9442     else
9443         printf ("4\n") ;
9444     fflush (stdout) ;
9445     exit(0);
9446 }
9447 EOM
9448         : Call the object file tmp-dyna.o in case dlext=o.
9449         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
9450                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
9451                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
9452                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9453                 xxx=`$run ./fred`
9454                 case $xxx in
9455                 1)      echo "Test program failed using dlopen." >&4
9456                         echo "Perhaps you should not use dynamic loading." >&4;;
9457                 2)      echo "Test program failed using dlsym." >&4
9458                         echo "Perhaps you should not use dynamic loading." >&4;;
9459                 3)      echo "dlsym needs a leading underscore" >&4
9460                         val="$define" ;;
9461                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
9462                 esac
9463         else
9464                 echo "I can't compile and run the test program." >&4
9465                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9466         fi
9467         ;;
9468 esac
9469                 
9470 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9471
9472 set d_dlsymun
9473 eval $setvar
9474
9475 : see if prototype for drand48 is available
9476 echo " "
9477 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9478 eval $hasproto
9479
9480 : see if dup2 exists
9481 set dup2 d_dup2
9482 eval $inlibc
9483
9484 : see if eaccess exists
9485 set eaccess d_eaccess
9486 eval $inlibc
9487
9488 : see if endgrent exists
9489 set endgrent d_endgrent
9490 eval $inlibc
9491
9492 : see if endhostent exists
9493 set endhostent d_endhent
9494 eval $inlibc
9495
9496 : see if endnetent exists
9497 set endnetent d_endnent
9498 eval $inlibc
9499
9500 : see if endprotoent exists
9501 set endprotoent d_endpent
9502 eval $inlibc
9503
9504 : see if endpwent exists
9505 set endpwent d_endpwent
9506 eval $inlibc
9507
9508 : see if endservent exists
9509 set endservent d_endsent
9510 eval $inlibc
9511
9512 : Locate the flags for 'open()'
9513 echo " "
9514 $cat >try.c <<'EOCP'
9515 #include <sys/types.h>
9516 #ifdef I_FCNTL
9517 #include <fcntl.h>
9518 #endif
9519 #ifdef I_SYS_FILE
9520 #include <sys/file.h>
9521 #endif
9522 int main() {
9523         if(O_RDONLY);
9524 #ifdef O_TRUNC
9525         exit(0);
9526 #else
9527         exit(1);
9528 #endif
9529 }
9530 EOCP
9531 : check sys/file.h first to get FREAD on Sun
9532 if $test `./findhdr sys/file.h` && \
9533                 set try -DI_SYS_FILE && eval $compile; then
9534         h_sysfile=true;
9535         echo "<sys/file.h> defines the O_* constants..." >&4
9536         if $run ./try; then
9537                 echo "and you have the 3 argument form of open()." >&4
9538                 val="$define"
9539         else
9540                 echo "but not the 3 argument form of open().  Oh, well." >&4
9541                 val="$undef"
9542         fi
9543 elif $test `./findhdr fcntl.h` && \
9544                 set try -DI_FCNTL && eval $compile; then
9545         h_fcntl=true;
9546         echo "<fcntl.h> defines the O_* constants..." >&4
9547         if $run ./try; then
9548                 echo "and you have the 3 argument form of open()." >&4
9549                 val="$define"
9550         else
9551                 echo "but not the 3 argument form of open().  Oh, well." >&4
9552                 val="$undef"
9553         fi
9554 else
9555         val="$undef"
9556         echo "I can't find the O_* constant definitions!  You got problems." >&4
9557 fi
9558 set d_open3
9559 eval $setvar
9560 $rm -f try try.*
9561
9562 : see which of string.h or strings.h is needed
9563 echo " "
9564 strings=`./findhdr string.h`
9565 if $test "$strings" && $test -r "$strings"; then
9566         echo "Using <string.h> instead of <strings.h>." >&4
9567         val="$define"
9568 else
9569         val="$undef"
9570         strings=`./findhdr strings.h`
9571         if $test "$strings" && $test -r "$strings"; then
9572                 echo "Using <strings.h> instead of <string.h>." >&4
9573         else
9574                 echo "No string header found -- You'll surely have problems." >&4
9575         fi
9576 fi
9577 set i_string
9578 eval $setvar
9579 case "$i_string" in
9580 "$undef") strings=`./findhdr strings.h`;;
9581 *)        strings=`./findhdr string.h`;;
9582 esac
9583
9584 : check for non-blocking I/O stuff
9585 case "$h_sysfile" in
9586 true) echo "#include <sys/file.h>" > head.c;;
9587 *)
9588        case "$h_fcntl" in
9589        true) echo "#include <fcntl.h>" > head.c;;
9590        *) echo "#include <sys/fcntl.h>" > head.c;;
9591        esac
9592        ;;
9593 esac
9594 echo " "
9595 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9596 case "$o_nonblock" in
9597 '')
9598         $cat head.c > try.c
9599         $cat >>try.c <<'EOCP'
9600 #include <stdio.h>
9601 int main() {
9602 #ifdef O_NONBLOCK
9603         printf("O_NONBLOCK\n");
9604         exit(0);
9605 #endif
9606 #ifdef O_NDELAY
9607         printf("O_NDELAY\n");
9608         exit(0);
9609 #endif
9610 #ifdef FNDELAY
9611         printf("FNDELAY\n");
9612         exit(0);
9613 #endif
9614         exit(0);
9615 }
9616 EOCP
9617         set try
9618         if eval $compile_ok; then
9619                 o_nonblock=`$run ./try`
9620                 case "$o_nonblock" in
9621                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9622                 *) echo "Seems like we can use $o_nonblock.";;
9623                 esac
9624         else
9625                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9626         fi
9627         ;;
9628 *) echo "Using $hint value $o_nonblock.";;
9629 esac
9630 $rm -f try try.* .out core
9631
9632 echo " "
9633 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9634 case "$eagain" in
9635 '')
9636         $cat head.c > try.c
9637         $cat >>try.c <<EOCP
9638 #include <errno.h>
9639 #include <sys/types.h>
9640 #include <signal.h>
9641 #include <stdio.h> 
9642 #define MY_O_NONBLOCK $o_nonblock
9643 #ifndef errno  /* XXX need better Configure test */
9644 extern int errno;
9645 #endif
9646 #$i_unistd I_UNISTD
9647 #ifdef I_UNISTD
9648 #include <unistd.h>
9649 #endif
9650 #$i_string I_STRING
9651 #ifdef I_STRING
9652 #include <string.h>
9653 #else
9654 #include <strings.h>
9655 #endif
9656 $signal_t blech(x) int x; { exit(3); }
9657 EOCP
9658         $cat >> try.c <<'EOCP'
9659 int main()
9660 {
9661         int pd[2];
9662         int pu[2];
9663         char buf[1];
9664         char string[100];
9665
9666         pipe(pd);       /* Down: child -> parent */
9667         pipe(pu);       /* Up: parent -> child */
9668         if (0 != fork()) {
9669                 int ret;
9670                 close(pd[1]);   /* Parent reads from pd[0] */
9671                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
9672 #ifdef F_SETFL
9673                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9674                         exit(1);
9675 #else
9676                 exit(4);
9677 #endif
9678                 signal(SIGALRM, blech);
9679                 alarm(5);
9680                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
9681                         exit(2);
9682                 sprintf(string, "%d\n", ret);
9683                 write(2, string, strlen(string));
9684                 alarm(0);
9685 #ifdef EAGAIN
9686                 if (errno == EAGAIN) {
9687                         printf("EAGAIN\n");
9688                         goto ok;
9689                 }
9690 #endif
9691 #ifdef EWOULDBLOCK
9692                 if (errno == EWOULDBLOCK)
9693                         printf("EWOULDBLOCK\n");
9694 #endif
9695         ok:
9696                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
9697                 sleep(2);                               /* Give it time to close our pipe */
9698                 alarm(5);
9699                 ret = read(pd[0], buf, 1);      /* Should read EOF */
9700                 alarm(0);
9701                 sprintf(string, "%d\n", ret);
9702                 write(3, string, strlen(string));
9703                 exit(0);
9704         }
9705
9706         close(pd[0]);                   /* We write to pd[1] */
9707         close(pu[1]);                   /* We read from pu[0] */
9708         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
9709         close(pd[1]);                   /* Pipe pd is now fully closed! */
9710         exit(0);                                /* Bye bye, thank you for playing! */
9711 }
9712 EOCP
9713         set try
9714         if eval $compile_ok; then
9715                 echo "$startsh" >mtry
9716                 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
9717                 chmod +x mtry
9718                 ./mtry >/dev/null 2>&1
9719                 case $? in
9720                 0) eagain=`$cat try.out`;;
9721                 1) echo "Could not perform non-blocking setting!";;
9722                 2) echo "I did a successful read() for something that was not there!";;
9723                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
9724                 4) echo "Could not find F_SETFL!";;
9725                 *) echo "Something terribly wrong happened during testing.";;
9726                 esac
9727                 rd_nodata=`$cat try.ret`
9728                 echo "A read() system call with no data present returns $rd_nodata."
9729                 case "$rd_nodata" in
9730                 0|-1) ;;
9731                 *)
9732                         echo "(That's peculiar, fixing that to be -1.)"
9733                         rd_nodata=-1
9734                         ;;
9735                 esac
9736                 case "$eagain" in
9737                 '')
9738                         echo "Forcing errno EAGAIN on read() with no data available."
9739                         eagain=EAGAIN
9740                         ;;
9741                 *)
9742                         echo "Your read() sets errno to $eagain when no data is available."
9743                         ;;
9744                 esac
9745                 status=`$cat try.err`
9746                 case "$status" in
9747                 0) echo "And it correctly returns 0 to signal EOF.";;
9748                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9749                 *) echo "However, your read() returns '$status' on EOF??";;
9750                 esac
9751                 val="$define"
9752                 if test "$status" = "$rd_nodata"; then
9753                         echo "WARNING: you can't distinguish between EOF and no data!"
9754                         val="$undef"
9755                 fi
9756         else
9757                 echo "I can't compile the test program--assuming errno EAGAIN will do."
9758                 eagain=EAGAIN
9759         fi
9760         set d_eofnblk
9761         eval $setvar
9762         ;;
9763 *)
9764         echo "Using $hint value $eagain."
9765         echo "Your read() returns $rd_nodata when no data is present."
9766         case "$d_eofnblk" in
9767         "$define") echo "And you can see EOF because read() returns 0.";;
9768         "$undef") echo "But you can't see EOF status from read() returned value.";;
9769         *)
9770                 echo "(Assuming you can't see EOF status from read anyway.)"
9771                 d_eofnblk=$undef
9772                 ;;
9773         esac
9774         ;;
9775 esac
9776 $rm -f try try.* .out core head.c mtry
9777
9778 : see if fchmod exists
9779 set fchmod d_fchmod
9780 eval $inlibc
9781
9782 : see if fchown exists
9783 set fchown d_fchown
9784 eval $inlibc
9785
9786 : see if this is an fcntl system
9787 set fcntl d_fcntl
9788 eval $inlibc
9789
9790 echo " "
9791 : See if fcntl-based locking works.
9792 $cat >try.c <<'EOCP'
9793 #include <stdlib.h>
9794 #include <unistd.h>
9795 #include <fcntl.h>
9796 int main() {
9797 #if defined(F_SETLK) && defined(F_SETLKW)
9798      struct flock flock;
9799      int retval, fd;
9800      fd = open("try.c", O_RDONLY);
9801      flock.l_type = F_RDLCK;
9802      flock.l_whence = SEEK_SET;
9803      flock.l_start = flock.l_len = 0;
9804      retval = fcntl(fd, F_SETLK, &flock);
9805      close(fd);
9806      (retval < 0 ? exit(2) : exit(0));
9807 #else
9808      exit(2);
9809 #endif
9810 }
9811 EOCP
9812 echo "Checking if fcntl-based file locking works... "
9813 case "$d_fcntl" in
9814 "$define")
9815         set try
9816         if eval $compile_ok; then
9817                 if $run ./try; then
9818                         echo "Yes, it seems to work."
9819                         val="$define"
9820                 else
9821                         echo "Nope, it didn't work."
9822                         val="$undef"
9823                 fi
9824         else
9825                 echo "I'm unable to compile the test program, so I'll assume not."
9826                 val="$undef"
9827         fi
9828         ;;
9829 *) val="$undef";
9830         echo "Nope, since you don't even have fcntl()."
9831         ;;
9832 esac
9833 set d_fcntl_can_lock
9834 eval $setvar
9835 $rm -f try*
9836
9837
9838 : see if sys/select.h has to be included
9839 set sys/select.h i_sysselct
9840 eval $inhdr
9841
9842 : see if we should include time.h, sys/time.h, or both
9843 echo " "
9844 if test "X$timeincl" = X; then
9845         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9846         $echo $n "I'm now running the test program...$c"
9847         $cat >try.c <<'EOCP'
9848 #include <sys/types.h>
9849 #ifdef I_TIME
9850 #include <time.h>
9851 #endif
9852 #ifdef I_SYSTIME
9853 #ifdef SYSTIMEKERNEL
9854 #define KERNEL
9855 #endif
9856 #include <sys/time.h>
9857 #endif
9858 #ifdef I_SYSSELECT
9859 #include <sys/select.h>
9860 #endif
9861 int main()
9862 {
9863         struct tm foo;
9864 #ifdef S_TIMEVAL
9865         struct timeval bar;
9866 #endif
9867 #ifdef S_TIMEZONE
9868         struct timezone tzp;
9869 #endif
9870         if (foo.tm_sec == foo.tm_sec)
9871                 exit(0);
9872 #ifdef S_TIMEVAL
9873         if (bar.tv_sec == bar.tv_sec)
9874                 exit(0);
9875 #endif
9876         exit(1);
9877 }
9878 EOCP
9879         flags=''
9880         for s_timezone in '-DS_TIMEZONE' ''; do
9881         sysselect=''
9882         for s_timeval in '-DS_TIMEVAL' ''; do
9883         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9884         for i_time in '' '-DI_TIME'; do
9885         for i_systime in '-DI_SYSTIME' ''; do
9886                 case "$flags" in
9887                 '') $echo $n ".$c"
9888                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9889                         if eval $compile; then
9890                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9891                                 shift
9892                                 flags="$*"
9893                                 echo " "
9894                                 $echo $n "Succeeded with $flags$c"
9895                         fi
9896                         ;;
9897                 esac
9898         done
9899         done
9900         done
9901         done
9902         done
9903         timeincl=''
9904         echo " "
9905         case "$flags" in
9906         *SYSTIMEKERNEL*) i_systimek="$define"
9907                 timeincl=`./findhdr sys/time.h`
9908                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9909         *) i_systimek="$undef";;
9910         esac
9911         case "$flags" in
9912         *I_TIME*) i_time="$define"
9913                 timeincl=`./findhdr time.h`" $timeincl"
9914                 echo "We'll include <time.h>." >&4;;
9915         *) i_time="$undef";;
9916         esac
9917         case "$flags" in
9918         *I_SYSTIME*) i_systime="$define"
9919                 timeincl=`./findhdr sys/time.h`" $timeincl"
9920                 echo "We'll include <sys/time.h>." >&4;;
9921         *) i_systime="$undef";;
9922         esac
9923         $rm -f try.c try
9924 fi
9925
9926 : check for fd_set items
9927 $cat <<EOM
9928
9929 Checking to see how well your C compiler handles fd_set and friends ...
9930 EOM
9931 $cat >try.c <<EOCP
9932 #$i_systime I_SYS_TIME
9933 #$i_sysselct I_SYS_SELECT
9934 #$d_socket HAS_SOCKET
9935 #include <sys/types.h>
9936 #ifdef HAS_SOCKET
9937 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9938 #endif
9939 #ifdef I_SYS_TIME
9940 #include <sys/time.h>
9941 #endif
9942 #ifdef I_SYS_SELECT
9943 #include <sys/select.h>
9944 #endif
9945 int main() {
9946         fd_set fds;
9947
9948 #ifdef TRYBITS
9949         if(fds.fds_bits);
9950 #endif
9951
9952 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9953         exit(0);
9954 #else
9955         exit(1);
9956 #endif
9957 }
9958 EOCP
9959 set try -DTRYBITS
9960 if eval $compile; then
9961         d_fds_bits="$define"
9962         d_fd_set="$define"
9963         echo "Well, your system knows about the normal fd_set typedef..." >&4
9964         if $run ./try; then
9965                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9966                 d_fd_macros="$define"
9967         else
9968                 $cat >&4 <<'EOM'
9969 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9970 EOM
9971                 d_fd_macros="$undef"
9972         fi
9973 else
9974         $cat <<'EOM'
9975 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9976 EOM
9977         set try
9978         if eval $compile; then
9979                 d_fds_bits="$undef"
9980                 d_fd_set="$define"
9981                 echo "Well, your system has some sort of fd_set available..." >&4
9982                 if $run ./try; then
9983                         echo "and you have the normal fd_set macros." >&4
9984                         d_fd_macros="$define"
9985                 else
9986                         $cat <<'EOM'
9987 but not the normal fd_set macros!  Gross!  More work for me...
9988 EOM
9989                         d_fd_macros="$undef"
9990                 fi
9991         else
9992         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9993                 d_fd_set="$undef"
9994                 d_fds_bits="$undef"
9995                 d_fd_macros="$undef"
9996         fi
9997 fi
9998 $rm -f try try.*
9999
10000 : see if fgetpos exists
10001 set fgetpos d_fgetpos
10002 eval $inlibc
10003
10004 : see if flock exists
10005 set flock d_flock
10006 eval $inlibc
10007
10008 : see if this is a sys/file.h system
10009 val=''
10010 set sys/file.h val
10011 eval $inhdr
10012
10013 : do we need to include sys/file.h ?
10014 case "$val" in
10015 "$define")
10016         echo " "
10017         if $h_sysfile; then
10018                 val="$define"
10019                 echo "We'll be including <sys/file.h>." >&4
10020         else
10021                 val="$undef"
10022                 echo "We won't be including <sys/file.h>." >&4
10023         fi
10024         ;;
10025 *)
10026         h_sysfile=false
10027         ;;
10028 esac
10029 set i_sysfile
10030 eval $setvar
10031
10032 : see if prototype for flock is available
10033 echo " "
10034 set d_flockproto flock $i_sysfile sys/file.h
10035 eval $hasproto
10036
10037 : see if fork exists
10038 set fork d_fork
10039 eval $inlibc
10040
10041 : see if pathconf exists
10042 set pathconf d_pathconf
10043 eval $inlibc
10044
10045 : see if fpathconf exists
10046 set fpathconf d_fpathconf
10047 eval $inlibc
10048
10049
10050 : check for fpos64_t
10051 echo " "
10052 echo "Checking to see if you have fpos64_t..." >&4
10053 $cat >try.c <<EOCP
10054 #include <stdio.h>
10055 int main() { fpos64_t x = 7; }
10056 EOCP
10057 set try
10058 if eval $compile; then
10059         val="$define"
10060         echo "You have fpos64_t."
10061 else
10062         val="$undef"
10063         echo "You do not have fpos64_t."
10064         case "$fpossize" in
10065         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10066         esac
10067 fi
10068 $rm -f try.* try
10069 set d_fpos64_t
10070 eval $setvar
10071
10072 : see if frexpl exists
10073 set frexpl d_frexpl
10074 eval $inlibc
10075
10076 : see if this is a sys/param system
10077 set sys/param.h i_sysparam
10078 eval $inhdr
10079
10080 : see if this is a sys/mount.h system
10081 set sys/mount.h i_sysmount
10082 eval $inhdr
10083
10084
10085 echo " "
10086 echo "Checking to see if your system supports struct fs_data..." >&4
10087 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10088 eval $hasstruct
10089 case "$d_fs_data_s" in
10090 "$define")      echo "Yes, it does."   ;;
10091 *)              echo "No, it doesn't." ;;
10092 esac
10093
10094 : see if fseeko exists
10095 set fseeko d_fseeko
10096 eval $inlibc
10097 case "$longsize" in
10098 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10099 esac
10100
10101 : see if fsetpos exists
10102 set fsetpos d_fsetpos
10103 eval $inlibc
10104
10105
10106 : see if fstatfs exists
10107 set fstatfs d_fstatfs
10108 eval $inlibc
10109
10110
10111 : see if statvfs exists
10112 set statvfs d_statvfs
10113 eval $inlibc
10114
10115 : see if fstatvfs exists
10116 set fstatvfs d_fstatvfs
10117 eval $inlibc
10118
10119
10120 : see if fsync exists
10121 set fsync d_fsync
10122 eval $inlibc
10123
10124 : see if ftello exists
10125 set ftello d_ftello
10126 eval $inlibc
10127 case "$longsize" in
10128 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10129 esac
10130
10131 : see if getcwd exists
10132 set getcwd d_getcwd
10133 eval $inlibc
10134
10135 : see if getespwnam exists
10136 set getespwnam d_getespwnam
10137 eval $inlibc
10138
10139
10140 : see if getfsstat exists
10141 set getfsstat d_getfsstat
10142 eval $inlibc
10143
10144 : see if getgrent exists
10145 set getgrent d_getgrent
10146 eval $inlibc
10147
10148 : see if gethostbyaddr exists
10149 set gethostbyaddr d_gethbyaddr
10150 eval $inlibc
10151
10152 : see if gethostbyname exists
10153 set gethostbyname d_gethbyname
10154 eval $inlibc
10155
10156 : see if gethostent exists
10157 set gethostent d_gethent
10158 eval $inlibc
10159
10160 : see how we will look up host name
10161 echo " "
10162 call=''
10163 if set gethostname val -f d_gethname; eval $csym; $val; then
10164         echo 'gethostname() found.' >&4
10165         d_gethname="$define"
10166         call=gethostname
10167 fi
10168 if set uname val -f d_uname; eval $csym; $val; then
10169         if ./xenix; then
10170                 $cat <<'EOM'
10171 uname() was found, but you're running xenix, and older versions of xenix
10172 have a broken uname(). If you don't really know whether your xenix is old
10173 enough to have a broken system call, use the default answer.
10174
10175 EOM
10176                 dflt=y
10177                 case "$d_uname" in
10178                 "$define") dflt=n;;
10179                 esac
10180                 rp='Is your uname() broken?'
10181                 . ./myread
10182                 case "$ans" in
10183                 n*) d_uname="$define"; call=uname;;
10184                 esac
10185         else
10186                 echo 'uname() found.' >&4
10187                 d_uname="$define"
10188                 case "$call" in
10189                 '') call=uname ;;
10190                 esac
10191         fi
10192 fi
10193 case "$d_gethname" in
10194 '') d_gethname="$undef";;
10195 esac
10196 case "$d_uname" in
10197 '') d_uname="$undef";;
10198 esac
10199 case "$d_uname$d_gethname" in
10200 *define*)
10201         dflt=n
10202         cat <<EOM
10203  
10204 Every now and then someone has a $call() that lies about the hostname
10205 but can't be fixed for political or economic reasons.  If you wish, I can
10206 pretend $call() isn't there and maybe compute hostname at run-time
10207 thanks to the '$phostname' command.
10208
10209 EOM
10210         rp="Shall I ignore $call() from now on?"
10211         . ./myread
10212         case "$ans" in
10213         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10214         esac;;
10215 esac
10216 case "$phostname" in
10217 '') aphostname='';;
10218 *) case "$aphostname" in
10219         /*) ;;
10220         *) set X $phostname
10221                 shift
10222                 file=$1
10223                 shift
10224                 file=`./loc $file $file $pth`
10225                 aphostname=`echo $file $*`
10226                 ;;
10227         esac
10228         ;;
10229 esac
10230 case "$d_uname$d_gethname" in
10231 *define*) ;;
10232 *)
10233         case "$phostname" in
10234         '')
10235                 echo "There will be no way for $package to get your hostname." >&4;;
10236         *)
10237         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10238                 ;;
10239         esac;;
10240 esac
10241 case "$d_phostname" in
10242 '') d_phostname="$undef";;
10243 esac
10244
10245 : see if this is a netdb.h system
10246 set netdb.h i_netdb
10247 eval $inhdr
10248
10249 : see if prototypes for various gethostxxx netdb.h functions are available
10250 echo " "
10251 set d_gethostprotos gethostent $i_netdb netdb.h
10252 eval $hasproto
10253
10254 : see if getitimer exists
10255 set getitimer d_getitimer
10256 eval $inlibc
10257
10258 : see if getlogin exists
10259 set getlogin d_getlogin
10260 eval $inlibc
10261
10262 : see if getmnt exists
10263 set getmnt d_getmnt
10264 eval $inlibc
10265
10266 : see if getmntent exists
10267 set getmntent d_getmntent
10268 eval $inlibc
10269
10270 : see if getnetbyaddr exists
10271 set getnetbyaddr d_getnbyaddr
10272 eval $inlibc
10273
10274 : see if getnetbyname exists
10275 set getnetbyname d_getnbyname
10276 eval $inlibc
10277
10278 : see if getnetent exists
10279 set getnetent d_getnent
10280 eval $inlibc
10281
10282 : see if prototypes for various getnetxxx netdb.h functions are available
10283 echo " "
10284 set d_getnetprotos getnetent $i_netdb netdb.h
10285 eval $hasproto
10286
10287 : see if getpagesize exists
10288 set getpagesize d_getpagsz
10289 eval $inlibc
10290
10291
10292 : see if getprotobyname exists
10293 set getprotobyname d_getpbyname
10294 eval $inlibc
10295
10296 : see if getprotobynumber exists
10297 set getprotobynumber d_getpbynumber
10298 eval $inlibc
10299
10300 : see if getprotoent exists
10301 set getprotoent d_getpent
10302 eval $inlibc
10303
10304 : see if getpgid exists
10305 set getpgid d_getpgid
10306 eval $inlibc
10307
10308 : see if getpgrp2 exists
10309 set getpgrp2 d_getpgrp2
10310 eval $inlibc
10311
10312 : see if getppid exists
10313 set getppid d_getppid
10314 eval $inlibc
10315
10316 : see if getpriority exists
10317 set getpriority d_getprior
10318 eval $inlibc
10319
10320 : see if prototypes for various getprotoxxx netdb.h functions are available
10321 echo " "
10322 set d_getprotoprotos getprotoent $i_netdb netdb.h
10323 eval $hasproto
10324
10325 : see if getprpwnam exists
10326 set getprpwnam d_getprpwnam
10327 eval $inlibc
10328
10329 : see if getpwent exists
10330 set getpwent d_getpwent
10331 eval $inlibc
10332
10333
10334 : see if getservbyname exists
10335 set getservbyname d_getsbyname
10336 eval $inlibc
10337
10338 : see if getservbyport exists
10339 set getservbyport d_getsbyport
10340 eval $inlibc
10341
10342 : see if getservent exists
10343 set getservent d_getsent
10344 eval $inlibc
10345
10346 : see if prototypes for various getservxxx netdb.h functions are available
10347 echo " "
10348 set d_getservprotos getservent $i_netdb netdb.h
10349 eval $hasproto
10350
10351 : see if getspnam exists
10352 set getspnam d_getspnam
10353 eval $inlibc
10354
10355 : see if gettimeofday or ftime exists
10356 set gettimeofday d_gettimeod
10357 eval $inlibc
10358 case "$d_gettimeod" in
10359 "$undef")
10360         set ftime d_ftime 
10361         eval $inlibc
10362         ;;
10363 *)
10364         val="$undef"; set d_ftime; eval $setvar
10365         ;;
10366 esac
10367 case "$d_gettimeod$d_ftime" in
10368 "$undef$undef")
10369         echo " "
10370         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10371         ;;
10372 esac
10373
10374 : see if this is an grp system
10375 set grp.h i_grp
10376 eval $inhdr
10377
10378 case "$i_grp" in
10379 $define)
10380         xxx=`./findhdr grp.h`
10381         $cppstdin $cppflags $cppminus < $xxx >$$.h
10382
10383         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10384                 val="$define"
10385         else
10386                 val="$undef"
10387         fi
10388         set d_grpasswd
10389         eval $setvar
10390
10391         $rm -f $$.h
10392         ;;
10393 *)
10394         val="$undef";
10395         set d_grpasswd; eval $setvar
10396         ;;
10397 esac
10398
10399 : see if hasmntopt exists
10400 set hasmntopt d_hasmntopt
10401 eval $inlibc
10402
10403 : see if this is a netinet/in.h or sys/in.h system
10404 set netinet/in.h i_niin sys/in.h i_sysin
10405 eval $inhdr
10406
10407 : see if arpa/inet.h has to be included
10408 set arpa/inet.h i_arpainet
10409 eval $inhdr
10410
10411 : see if htonl --and friends-- exists
10412 val=''
10413 set htonl val
10414 eval $inlibc
10415
10416 : Maybe they are macros.
10417 case "$val" in
10418 $undef)
10419         $cat >htonl.c <<EOM
10420 #include <stdio.h>
10421 #include <sys/types.h>
10422 #$i_niin I_NETINET_IN
10423 #$i_sysin I_SYS_IN
10424 #$i_arpainet I_ARPA_INET
10425 #ifdef I_NETINET_IN
10426 #include <netinet/in.h>
10427 #endif
10428 #ifdef I_SYS_IN
10429 #include <sys/in.h>
10430 #endif
10431 #ifdef I_ARPA_INET
10432 #include <arpa/inet.h>
10433 #endif
10434 #ifdef htonl
10435 printf("Defined as a macro.");
10436 #endif
10437 EOM
10438         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10439         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10440                 val="$define"
10441                 echo "But it seems to be defined as a macro." >&4
10442         fi
10443         $rm -f htonl.?
10444         ;;
10445 esac
10446 set d_htonl
10447 eval $setvar
10448
10449 : see if iconv exists
10450 set iconv d_iconv
10451 eval $inlibc
10452
10453 : index or strchr
10454 echo " "
10455 if set index val -f; eval $csym; $val; then
10456         if set strchr val -f d_strchr; eval $csym; $val; then
10457                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10458                         val="$define"
10459                         vali="$undef"
10460                         echo "strchr() found." >&4
10461                 else
10462                         val="$undef"
10463                         vali="$define"
10464                         echo "index() found." >&4
10465                 fi
10466         else
10467                 val="$undef"
10468                 vali="$define"
10469                 echo "index() found." >&4
10470         fi
10471 else
10472         if set strchr val -f d_strchr; eval $csym; $val; then
10473                 val="$define"
10474                 vali="$undef"
10475                 echo "strchr() found." >&4
10476         else
10477                 echo "No index() or strchr() found!" >&4
10478                 val="$undef"
10479                 vali="$undef"
10480         fi
10481 fi
10482 set d_strchr; eval $setvar
10483 val="$vali"
10484 set d_index; eval $setvar
10485
10486 : check whether inet_aton exists
10487 set inet_aton d_inetaton
10488 eval $inlibc
10489
10490 : Look for isascii
10491 echo " "
10492 $cat >isascii.c <<'EOCP'
10493 #include <stdio.h>
10494 #include <ctype.h>
10495 int main() {
10496         int c = 'A';
10497         if (isascii(c))
10498                 exit(0);
10499         else
10500                 exit(1);
10501 }
10502 EOCP
10503 set isascii
10504 if eval $compile; then
10505         echo "isascii() found." >&4
10506         val="$define"
10507 else
10508         echo "isascii() NOT found." >&4
10509         val="$undef"
10510 fi
10511 set d_isascii
10512 eval $setvar
10513 $rm -f isascii*
10514
10515 : see if isnan exists
10516 set isnan d_isnan
10517 eval $inlibc
10518
10519 : see if isnanl exists
10520 set isnanl d_isnanl
10521 eval $inlibc
10522
10523 : see if killpg exists
10524 set killpg d_killpg
10525 eval $inlibc
10526
10527 : see if lchown exists
10528 echo " "
10529 $cat > try.c <<'EOCP'
10530 /* System header to define __stub macros and hopefully few prototypes,
10531     which can conflict with char lchown(); below.  */
10532 #include <assert.h>
10533 /* Override any gcc2 internal prototype to avoid an error.  */
10534 /* We use char because int might match the return type of a gcc2
10535    builtin and then its argument prototype would still apply.  */
10536 char lchown();
10537 int main() {
10538     /*  The GNU C library defines this for functions which it implements
10539         to always fail with ENOSYS.  Some functions are actually named
10540         something starting with __ and the normal name is an alias.  */
10541 #if defined (__stub_lchown) || defined (__stub___lchown)
10542 choke me
10543 #else
10544 lchown();
10545 #endif
10546 ; return 0; }
10547 EOCP
10548 set try
10549 if eval $compile; then
10550     $echo "lchown() found." >&4
10551     val="$define"
10552 else
10553     $echo "lchown() NOT found." >&4
10554     val="$undef"
10555 fi
10556 set d_lchown
10557 eval $setvar
10558
10559 : See if number of significant digits in a double precision number is known
10560 echo " "
10561 $cat >ldbl_dig.c <<EOM
10562 #$i_limits I_LIMITS
10563 #$i_float I_FLOAT
10564 #ifdef I_LIMITS
10565 #include <limits.h>
10566 #endif
10567 #ifdef I_FLOAT
10568 #include <float.h>
10569 #endif
10570 #ifdef LDBL_DIG
10571 printf("Contains LDBL_DIG");
10572 #endif
10573 EOM
10574 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10575 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10576         echo "LDBL_DIG found." >&4
10577         val="$define"
10578 else
10579         echo "LDBL_DIG NOT found." >&4
10580         val="$undef"
10581 fi
10582 $rm -f ldbl_dig.?
10583 set d_ldbl_dig
10584 eval $setvar
10585
10586 : see if link exists
10587 set link d_link
10588 eval $inlibc
10589
10590 : see if localeconv exists
10591 set localeconv d_locconv
10592 eval $inlibc
10593
10594 : see if lockf exists
10595 set lockf d_lockf
10596 eval $inlibc
10597
10598 : see if prototype for lseek is available
10599 echo " "
10600 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10601 eval $hasproto
10602
10603 : see if lstat exists
10604 set lstat d_lstat
10605 eval $inlibc
10606
10607 : see if madvise exists
10608 set madvise d_madvise
10609 eval $inlibc
10610
10611 : see if mblen exists
10612 set mblen d_mblen
10613 eval $inlibc
10614
10615 : see if mbstowcs exists
10616 set mbstowcs d_mbstowcs
10617 eval $inlibc
10618
10619 : see if mbtowc exists
10620 set mbtowc d_mbtowc
10621 eval $inlibc
10622
10623 : see if memchr exists
10624 set memchr d_memchr
10625 eval $inlibc
10626
10627 : see if memcmp exists
10628 set memcmp d_memcmp
10629 eval $inlibc
10630
10631 : see if memcpy exists
10632 set memcpy d_memcpy
10633 eval $inlibc
10634
10635 : see if memmove exists
10636 set memmove d_memmove
10637 eval $inlibc
10638
10639 : see if memset exists
10640 set memset d_memset
10641 eval $inlibc
10642
10643 : see if mkdir exists
10644 set mkdir d_mkdir
10645 eval $inlibc
10646
10647 : see if mkdtemp exists
10648 set mkdtemp d_mkdtemp
10649 eval $inlibc
10650
10651 : see if mkfifo exists
10652 set mkfifo d_mkfifo
10653 eval $inlibc
10654
10655 : see if mkstemp exists
10656 set mkstemp d_mkstemp
10657 eval $inlibc
10658
10659 : see if mkstemps exists
10660 set mkstemps d_mkstemps
10661 eval $inlibc
10662
10663 : see if mktime exists
10664 set mktime d_mktime
10665 eval $inlibc
10666
10667 : see if this is a sys/mman.h system
10668 set sys/mman.h i_sysmman
10669 eval $inhdr
10670
10671 : see if mmap exists
10672 set mmap d_mmap
10673 eval $inlibc
10674 : see what shmat returns
10675 : default to something harmless
10676 mmaptype='void *'
10677 case "$i_sysmman$d_mmap" in
10678 "$define$define")
10679         $cat >mmap.c <<'END'
10680 #include <sys/mman.h>
10681 void *mmap();
10682 END
10683         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10684                 mmaptype='void *'
10685         else
10686                 mmaptype='caddr_t'
10687         fi
10688         echo "and it returns ($mmaptype)." >&4
10689         ;;
10690 esac
10691
10692
10693
10694 : see if modfl exists
10695 set modfl d_modfl
10696 eval $inlibc
10697
10698 d_modfl_pow32_bug="$undef"
10699
10700 case "$d_longdbl$d_modfl" in
10701 $define$define)
10702         $cat <<EOM
10703 Checking to see whether your modfl() is okay for large values...
10704 EOM
10705 $cat >try.c <<EOCP
10706 #include <math.h> 
10707 #include <stdio.h>
10708 int main() {
10709     long double nv = 4294967303.15;
10710     long double v, w;
10711     v = modfl(nv, &w);         
10712 #ifdef __GLIBC__
10713     printf("glibc");
10714 #endif
10715     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10716     return 0;
10717 }
10718 EOCP
10719         case "$osname:$gccversion" in
10720         aix:)   saveccflags="$ccflags"
10721                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10722         esac
10723         set try
10724         if eval $compile; then
10725                 foo=`$run ./try`
10726                 case "$foo" in
10727                 *" 4294967303.150000 1.150000 4294967302.000000")
10728                         echo >&4 "Your modfl() is broken for large values."
10729                         d_modfl_pow32_bug="$define"
10730                         case "$foo" in
10731                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10732                         ;;
10733                         esac
10734                         ;;
10735                 *" 4294967303.150000 0.150000 4294967303.000000")
10736                         echo >&4 "Your modfl() seems okay for large values."
10737                         ;;
10738                 *)      echo >&4 "I don't understand your modfl() at all."
10739                         d_modfl="$undef"
10740                         ;;
10741                 esac
10742                 $rm -f try.* try core core.try.*
10743         else
10744                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10745                 d_modfl="$undef"
10746         fi
10747         case "$osname:$gccversion" in
10748         aix:)   $ccflags="saveccflags" ;; # restore
10749         esac
10750         ;;
10751 esac
10752
10753 : see if mprotect exists
10754 set mprotect d_mprotect
10755 eval $inlibc
10756
10757 : see if msgctl exists
10758 set msgctl d_msgctl
10759 eval $inlibc
10760
10761 : see if msgget exists
10762 set msgget d_msgget
10763 eval $inlibc
10764
10765 : see if msgsnd exists
10766 set msgsnd d_msgsnd
10767 eval $inlibc
10768
10769 : see if msgrcv exists
10770 set msgrcv d_msgrcv
10771 eval $inlibc
10772
10773 : see how much of the 'msg*(2)' library is present.
10774 h_msg=true
10775 echo " "
10776 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10777 *"$undef"*) h_msg=false;;
10778 esac
10779 case "$osname" in
10780 freebsd)
10781     case "`ipcs 2>&1`" in
10782     "SVID messages"*"not configured"*)
10783         echo "Your $osname does not have the msg*(2) configured." >&4
10784         h_msg=false
10785         val="$undef"
10786         set msgctl d_msgctl
10787         eval $setvar
10788         set msgget d_msgget
10789         eval $setvar
10790         set msgsnd d_msgsnd
10791         eval $setvar
10792         set msgrcv d_msgrcv
10793         eval $setvar
10794         ;;
10795     esac
10796     ;;
10797 esac
10798 : we could also check for sys/ipc.h ...
10799 if $h_msg && $test `./findhdr sys/msg.h`; then
10800         echo "You have the full msg*(2) library." >&4
10801         val="$define"
10802 else
10803         echo "You don't have the full msg*(2) library." >&4
10804         val="$undef"
10805 fi
10806 set d_msg
10807 eval $setvar
10808
10809
10810 echo " "
10811 echo "Checking to see if your system supports struct msghdr..." >&4
10812 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10813 eval $hasstruct
10814 case "$d_msghdr_s" in
10815 "$define")      echo "Yes, it does."   ;;
10816 *)              echo "No, it doesn't." ;;
10817 esac
10818
10819
10820 : see if msync exists
10821 set msync d_msync
10822 eval $inlibc
10823
10824 : see if munmap exists
10825 set munmap d_munmap
10826 eval $inlibc
10827
10828 : see if nice exists
10829 set nice d_nice
10830 eval $inlibc
10831
10832 : check for length of character
10833 echo " "
10834 case "$charsize" in
10835 '')
10836         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10837         $cat >try.c <<'EOCP'
10838 #include <stdio.h>
10839 int main()
10840 {
10841     printf("%d\n", (int)sizeof(char));
10842     exit(0);
10843 }
10844 EOCP
10845         set try
10846         if eval $compile_ok; then
10847                 dflt=`$run ./try`
10848         else
10849                 dflt='1'
10850                 echo "(I can't seem to compile the test program.  Guessing...)"
10851         fi
10852         ;;
10853 *)
10854         dflt="$charsize"
10855         ;;
10856 esac
10857 rp="What is the size of a character (in bytes)?"
10858 . ./myread
10859 charsize="$ans"
10860 $rm -f try.c try
10861
10862 : check for volatile keyword
10863 echo " "
10864 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10865 $cat >try.c <<'EOCP'
10866 int main()
10867 {
10868         typedef struct _goo_struct goo_struct;
10869         goo_struct * volatile goo = ((goo_struct *)0);
10870         struct _goo_struct {
10871                 long long_int;
10872                 int reg_int;
10873                 char char_var;
10874         };
10875         typedef unsigned short foo_t;
10876         char *volatile foo;
10877         volatile int bar;
10878         volatile foo_t blech;
10879         foo = foo;
10880 }
10881 EOCP
10882 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10883         val="$define"
10884         echo "Yup, it does."
10885 else
10886         val="$undef"
10887         echo "Nope, it doesn't."
10888 fi
10889 set d_volatile
10890 eval $setvar
10891 $rm -f try.*
10892
10893
10894 echo " "
10895 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10896
10897 case "$use64bitint:$d_quad:$quadtype" in
10898 define:define:?*)
10899         ivtype="$quadtype"
10900         uvtype="$uquadtype"
10901         ivsize=8
10902         uvsize=8
10903         ;;
10904 *)      ivtype="long"
10905         uvtype="unsigned long"
10906         ivsize=$longsize
10907         uvsize=$longsize
10908         ;;
10909 esac
10910
10911 case "$uselongdouble:$d_longdbl" in
10912 define:define)
10913         nvtype="long double"
10914         nvsize=$longdblsize
10915         ;;
10916 *)      nvtype=double
10917         nvsize=$doublesize
10918         ;;
10919 esac
10920
10921 $echo "(IV will be "$ivtype", $ivsize bytes)"
10922 $echo "(UV will be "$uvtype", $uvsize bytes)"
10923 $echo "(NV will be "$nvtype", $nvsize bytes)"
10924
10925 $cat >try.c <<EOCP
10926 #$i_inttypes I_INTTYPES
10927 #ifdef I_INTTYPES
10928 #include <inttypes.h>
10929 #endif
10930 #include <stdio.h>
10931 int main() {
10932 #ifdef INT8
10933    int8_t i =  INT8_MAX;
10934   uint8_t u = UINT8_MAX;
10935   printf("int8_t\n");
10936 #endif
10937 #ifdef INT16
10938    int16_t i =  INT16_MAX;
10939   uint16_t i = UINT16_MAX;
10940   printf("int16_t\n");
10941 #endif
10942 #ifdef INT32
10943    int32_t i =  INT32_MAX;
10944   uint32_t u = UINT32_MAX;
10945   printf("int32_t\n");
10946 #endif
10947 }
10948 EOCP
10949
10950 case "$i8type" in
10951 '')     case "$charsize" in
10952         1)      i8type=char
10953                 u8type="unsigned char"
10954                 i8size=$charsize
10955                 u8size=$charsize
10956                 ;;
10957         esac
10958         ;;
10959 esac
10960 case "$i8type" in
10961 '')     set try -DINT8
10962         if eval $compile; then
10963                 case "`$run ./try`" in
10964                 int8_t) i8type=int8_t
10965                         u8type=uint8_t
10966                         i8size=1
10967                         u8size=1
10968                         ;;
10969                 esac
10970         fi
10971         ;;
10972 esac
10973 case "$i8type" in
10974 '')     if $test $charsize -ge 1; then
10975                 i8type=char
10976                 u8type="unsigned char"
10977                 i8size=$charsize
10978                 u8size=$charsize
10979         fi
10980         ;;
10981 esac
10982
10983 case "$i16type" in
10984 '')     case "$shortsize" in
10985         2)      i16type=short
10986                 u16type="unsigned short"
10987                 i16size=$shortsize
10988                 u16size=$shortsize
10989                 ;;
10990         esac
10991         ;;
10992 esac
10993 case "$i16type" in
10994 '')     set try -DINT16
10995         if eval $compile; then
10996                 case "`$run ./try`" in
10997                 int16_t)
10998                         i16type=int16_t
10999                         u16type=uint16_t
11000                         i16size=2
11001                         u16size=2
11002                         ;;
11003                 esac
11004         fi
11005         ;;
11006 esac
11007 case "$i16type" in
11008 '')     if $test $shortsize -ge 2; then
11009                 i16type=short
11010                 u16type="unsigned short"
11011                 i16size=$shortsize
11012                 u16size=$shortsize
11013         fi
11014         ;;
11015 esac
11016
11017 case "$i32type" in
11018 '')     case "$longsize" in
11019         4)      i32type=long
11020                 u32type="unsigned long"
11021                 i32size=$longsize
11022                 u32size=$longsize
11023                 ;;
11024         *)      case "$intsize" in
11025                 4)      i32type=int
11026                         u32type="unsigned int"
11027                         i32size=$intsize
11028                         u32size=$intsize
11029                         ;;
11030                 esac
11031                 ;;
11032         esac
11033         ;;
11034 esac
11035 case "$i32type" in
11036 '')     set try -DINT32
11037         if eval $compile; then
11038                 case "`$run ./try`" in
11039                 int32_t)
11040                         i32type=int32_t
11041                         u32type=uint32_t
11042                         i32size=4
11043                         u32size=4
11044                         ;;
11045                 esac
11046         fi
11047         ;;
11048 esac
11049 case "$i32type" in
11050 '')     if $test $intsize -ge 4; then
11051                 i32type=int
11052                 u32type="unsigned int"
11053                 i32size=$intsize
11054                 u32size=$intsize
11055         fi
11056         ;;
11057 esac
11058
11059 case "$i64type" in
11060 '')     case "$d_quad:$quadtype" in
11061         define:?*)
11062                 i64type="$quadtype"
11063                 u64type="$uquadtype"
11064                 i64size=8
11065                 u64size=8
11066                 ;;
11067         esac
11068         ;;
11069 esac
11070
11071 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11072 : volatile so that the compiler has to store it out to memory.
11073 if test X"$d_volatile" = X"$define"; then
11074         volatile=volatile
11075 fi
11076 $cat <<EOP >try.c
11077 #include <stdio.h>
11078 #include <sys/types.h>
11079 #include <signal.h>
11080 #ifdef SIGFPE
11081 $volatile int bletched = 0;
11082 $signal_t blech(s) int s; { bletched = 1; }
11083 #endif
11084 int main() {
11085     $uvtype u = 0;
11086     $nvtype d;
11087     int     n = 8 * $uvsize;
11088     int     i;
11089 #ifdef SIGFPE
11090     signal(SIGFPE, blech);
11091 #endif
11092
11093     for (i = 0; i < n; i++) {
11094       u = u << 1 | ($uvtype)1;
11095       d = ($nvtype)u;
11096       if (($uvtype)d != u)
11097         break;
11098       if (d <= 0)
11099         break;
11100       d = ($nvtype)(u - 1);
11101       if (($uvtype)d != (u - 1))
11102         break;
11103 #ifdef SIGFPE
11104       if (bletched) {
11105         break;
11106 #endif
11107       } 
11108     }
11109     printf("%d\n", ((i == n) ? -n : i));
11110     exit(0);
11111 }
11112 EOP
11113 set try
11114
11115 d_nv_preserves_uv="$undef"
11116 if eval $compile; then
11117         d_nv_preserves_uv_bits="`$run ./try`"
11118 fi
11119 case "$d_nv_preserves_uv_bits" in
11120 \-[1-9]*)       
11121         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11122         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11123         d_nv_preserves_uv="$define"
11124         ;;
11125 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11126         d_nv_preserves_uv="$undef" ;;
11127 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
11128         d_nv_preserves_uv_bits="$undef" ;;
11129 esac
11130
11131 $rm -f try.* try
11132
11133
11134 : check for off64_t
11135 echo " "
11136 echo "Checking to see if you have off64_t..." >&4
11137 $cat >try.c <<EOCP
11138 #include <sys/types.h>
11139 #include <unistd.h>
11140 int main() { off64_t x = 7; }
11141 EOCP
11142 set try
11143 if eval $compile; then
11144         val="$define"
11145         echo "You have off64_t."
11146 else
11147         val="$undef"
11148         echo "You do not have off64_t."
11149         case "$lseeksize" in
11150         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11151         esac
11152 fi
11153 $rm -f try.* try
11154 set d_off64_t
11155 eval $setvar
11156
11157 : see if POSIX threads are available
11158 set pthread.h i_pthread
11159 eval $inhdr
11160
11161
11162
11163
11164 : how to create joinable pthreads
11165 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11166         echo " "
11167         echo "Checking what constant to use for creating joinable pthreads..." >&4 
11168         $cat >try.c <<'EOCP'
11169 #include <pthread.h>
11170 int main() {
11171     int detachstate = JOINABLE;
11172 }
11173 EOCP
11174         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11175         if eval $compile; then
11176                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11177                 val="$undef" # Yes, undef.
11178                 set d_old_pthread_create_joinable
11179                 eval $setvar
11180                 val=""
11181                 set old_pthread_create_joinable
11182                 eval $setvar
11183         else
11184                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11185                 if eval $compile; then
11186                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11187                         val="$define"
11188                         set d_old_pthread_create_joinable
11189                         eval $setvar
11190                         val=PTHREAD_CREATE_UNDETACHED
11191                         set old_pthread_create_joinable
11192                         eval $setvar
11193                 else            
11194                         set try -DJOINABLE=__UNDETACHED
11195                         if eval $compile; then
11196                                 echo "You seem to use __UNDETACHED." >&4
11197                                 val="$define"
11198                                 set d_old_pthread_create_joinable
11199                                 eval $setvar
11200                                 val=__UNDETACHED
11201                                 set old_pthread_create_joinable
11202                                 eval $setvar
11203                         else
11204                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
11205                                 val="$define"
11206                                 set d_old_pthread_create_joinable
11207                                 eval $setvar
11208                                 val=0
11209                                 set old_pthread_create_joinable
11210                                 eval $setvar
11211                         fi
11212                 fi
11213         fi
11214         $rm -f try try.*
11215 else
11216     d_old_pthread_create_joinable="$undef"
11217     old_pthread_create_joinable=""
11218 fi
11219
11220 : see if pause exists
11221 set pause d_pause
11222 eval $inlibc
11223
11224 : see if pipe exists
11225 set pipe d_pipe
11226 eval $inlibc
11227
11228 : see if poll exists
11229 set poll d_poll
11230 eval $inlibc
11231
11232
11233 : see whether the various POSIXish _yields exist
11234 $cat >try.c <<EOP
11235 #include <pthread.h>
11236 #include <stdio.h>
11237 int main() {
11238 #ifdef SCHED_YIELD
11239         sched_yield();
11240 #else
11241 #ifdef PTHREAD_YIELD
11242         pthread_yield();
11243 #else
11244 #ifdef PTHREAD_YIELD_NULL
11245         pthread_yield(NULL);
11246 #endif
11247 #endif
11248 #endif
11249 }
11250 EOP
11251 : see if sched_yield exists
11252 set try -DSCHED_YIELD
11253 if eval $compile; then
11254     val="$define"
11255     sched_yield='sched_yield()'
11256 else
11257     val="$undef"
11258 fi
11259 case "$usethreads" in
11260 $define)
11261         case "$val" in
11262         $define) echo 'sched_yield() found.' >&4        ;;
11263         *)       echo 'sched_yield() NOT found.' >&4    ;;
11264         esac
11265 esac
11266 set d_sched_yield
11267 eval $setvar
11268
11269 : see if pthread_yield exists
11270 set try -DPTHREAD_YIELD
11271 if eval $compile; then
11272     val="$define"
11273     case "$sched_yield" in
11274     '') sched_yield='pthread_yield()' ;;
11275     esac
11276 else
11277     set try -DPTHREAD_YIELD_NULL
11278     if eval $compile; then
11279         val="$define"
11280         case "$sched_yield" in
11281         '') sched_yield='pthread_yield(NULL)' ;;
11282         esac
11283     else
11284         val="$undef"
11285     fi
11286 fi
11287 case "$usethreads" in
11288 $define)
11289         case "$val" in
11290         $define) echo 'pthread_yield() found.' >&4      ;;
11291         *)       echo 'pthread_yield() NOT found.' >&4  ;;
11292         esac
11293         ;;
11294 esac
11295 set d_pthread_yield
11296 eval $setvar
11297
11298 case "$sched_yield" in
11299 '') sched_yield=undef ;;
11300 esac
11301
11302 $rm -f try try.*
11303
11304 : see if this is a pwd.h system
11305 set pwd.h i_pwd
11306 eval $inhdr
11307
11308 case "$i_pwd" in
11309 $define)
11310         xxx=`./findhdr pwd.h`
11311         $cppstdin $cppflags $cppminus < $xxx >$$.h
11312
11313         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11314                 val="$define"
11315         else
11316                 val="$undef"
11317         fi
11318         set d_pwquota
11319         eval $setvar
11320
11321         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11322                 val="$define"
11323         else
11324                 val="$undef"
11325         fi
11326         set d_pwage
11327         eval $setvar
11328
11329         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11330                 val="$define"
11331         else
11332                 val="$undef"
11333         fi
11334         set d_pwchange
11335         eval $setvar
11336
11337         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11338                 val="$define"
11339         else
11340                 val="$undef"
11341         fi
11342         set d_pwclass
11343         eval $setvar
11344
11345         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11346                 val="$define"
11347         else
11348                 val="$undef"
11349         fi
11350         set d_pwexpire
11351         eval $setvar
11352
11353         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11354                 val="$define"
11355         else
11356                 val="$undef"
11357         fi
11358         set d_pwcomment
11359         eval $setvar
11360
11361         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11362                 val="$define"
11363         else
11364                 val="$undef"
11365         fi
11366         set d_pwgecos
11367         eval $setvar
11368
11369         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11370                 val="$define"
11371         else
11372                 val="$undef"
11373         fi
11374         set d_pwpasswd
11375         eval $setvar
11376
11377         $rm -f $$.h
11378         ;;
11379 *)
11380         val="$undef"; 
11381         set d_pwquota; eval $setvar
11382         set d_pwage; eval $setvar
11383         set d_pwchange; eval $setvar
11384         set d_pwclass; eval $setvar
11385         set d_pwexpire; eval $setvar
11386         set d_pwcomment; eval $setvar
11387         set d_pwgecos; eval $setvar
11388         set d_pwpasswd; eval $setvar
11389         ;;
11390 esac
11391
11392 : see if readdir and friends exist
11393 set readdir d_readdir
11394 eval $inlibc
11395 set seekdir d_seekdir
11396 eval $inlibc
11397 set telldir d_telldir
11398 eval $inlibc
11399 set rewinddir d_rewinddir
11400 eval $inlibc
11401
11402 : see if readlink exists
11403 set readlink d_readlink
11404 eval $inlibc
11405
11406 : see if readv exists
11407 set readv d_readv
11408 eval $inlibc
11409
11410 : see if realpath exists
11411 set realpath d_realpath
11412 eval $inlibc
11413
11414 : see if recvmsg exists
11415 set recvmsg d_recvmsg
11416 eval $inlibc
11417
11418 : see if rename exists
11419 set rename d_rename
11420 eval $inlibc
11421
11422 : see if rmdir exists
11423 set rmdir d_rmdir
11424 eval $inlibc
11425
11426 : see if memory.h is available.
11427 val=''
11428 set memory.h val
11429 eval $inhdr
11430
11431 : See if it conflicts with string.h
11432 case "$val" in
11433 $define)
11434         case "$strings" in
11435         '') ;;
11436         *)
11437                 $cppstdin $cppflags $cppminus < $strings > mem.h
11438                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11439                         echo " "
11440                         echo "We won't be including <memory.h>."
11441                         val="$undef"
11442                 fi
11443                 $rm -f mem.h
11444                 ;;
11445         esac
11446 esac
11447 set i_memory
11448 eval $setvar
11449
11450 : can bcopy handle overlapping blocks?
11451 val="$undef"
11452 case "$d_bcopy" in
11453 "$define")
11454         echo " "
11455         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
11456         $cat >try.c <<EOCP
11457 #$i_memory I_MEMORY
11458 #$i_stdlib I_STDLIB
11459 #$i_string I_STRING
11460 #$i_unistd I_UNISTD
11461 EOCP
11462         $cat >>try.c <<'EOCP'
11463 #include <stdio.h>
11464 #ifdef I_MEMORY
11465 #  include <memory.h>
11466 #endif
11467 #ifdef I_STDLIB
11468 #  include <stdlib.h>
11469 #endif
11470 #ifdef I_STRING
11471 #  include <string.h>
11472 #else
11473 #  include <strings.h>
11474 #endif
11475 #ifdef I_UNISTD
11476 #  include <unistd.h>  /* Needed for NetBSD */
11477 #endif
11478 int main()
11479 {
11480 char buf[128], abc[128];
11481 char *b;
11482 int len;
11483 int off;
11484 int align;
11485
11486 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11487
11488 for (align = 7; align >= 0; align--) {
11489         for (len = 36; len; len--) {
11490                 b = buf+align;
11491                 bcopy(abc, b, len);
11492                 for (off = 1; off <= len; off++) {
11493                         bcopy(b, b+off, len);
11494                         bcopy(b+off, b, len);
11495                         if (bcmp(b, abc, len))
11496                                 exit(1);
11497                 }
11498         }
11499 }
11500 exit(0);
11501 }
11502 EOCP
11503         set try
11504         if eval $compile_ok; then
11505                 if $run ./try 2>/dev/null; then
11506                         echo "Yes, it can."
11507                         val="$define"
11508                 else
11509                         echo "It can't, sorry."
11510                         case "$d_memmove" in
11511                         "$define") echo "But that's Ok since you have memmove()." ;;
11512                         esac
11513                 fi
11514         else
11515                 echo "(I can't compile the test program, so we'll assume not...)"
11516                 case "$d_memmove" in
11517                 "$define") echo "But that's Ok since you have memmove()." ;;
11518                 esac
11519         fi
11520         ;;
11521 esac
11522 $rm -f try.* try core
11523 set d_safebcpy
11524 eval $setvar
11525
11526 : can memcpy handle overlapping blocks?
11527 val="$undef"
11528 case "$d_memcpy" in
11529 "$define")
11530         echo " "
11531         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
11532         $cat >try.c <<EOCP
11533 #$i_memory I_MEMORY
11534 #$i_stdlib I_STDLIB
11535 #$i_string I_STRING
11536 #$i_unistd I_UNISTD
11537 EOCP
11538         $cat >>try.c <<'EOCP'
11539 #include <stdio.h>
11540 #ifdef I_MEMORY
11541 #  include <memory.h>
11542 #endif
11543 #ifdef I_STDLIB
11544 #  include <stdlib.h>
11545 #endif
11546 #ifdef I_STRING
11547 #  include <string.h>
11548 #else
11549 #  include <strings.h>
11550 #endif
11551 #ifdef I_UNISTD
11552 #  include <unistd.h>  /* Needed for NetBSD */
11553 #endif
11554 int main()
11555 {
11556 char buf[128], abc[128];
11557 char *b;
11558 int len;
11559 int off;
11560 int align;
11561
11562 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11563    try to store the string in read-only memory. */
11564 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11565
11566 for (align = 7; align >= 0; align--) {
11567         for (len = 36; len; len--) {
11568                 b = buf+align;
11569                 memcpy(b, abc, len);
11570                 for (off = 1; off <= len; off++) {
11571                         memcpy(b+off, b, len);
11572                         memcpy(b, b+off, len);
11573                         if (memcmp(b, abc, len))
11574                                 exit(1);
11575                 }
11576         }
11577 }
11578 exit(0);
11579 }
11580 EOCP
11581         set try
11582         if eval $compile_ok; then
11583                 if $run ./try 2>/dev/null; then
11584                         echo "Yes, it can."
11585                         val="$define"
11586                 else
11587                         echo "It can't, sorry."
11588                         case "$d_memmove" in
11589                         "$define") echo "But that's Ok since you have memmove()." ;;
11590                         esac
11591                 fi
11592         else
11593                 echo "(I can't compile the test program, so we'll assume not...)"
11594                 case "$d_memmove" in
11595                 "$define") echo "But that's Ok since you have memmove()." ;;
11596                 esac
11597         fi
11598         ;;
11599 esac
11600 $rm -f try.* try core
11601 set d_safemcpy
11602 eval $setvar
11603
11604 : can memcmp be trusted to compare relative magnitude?
11605 val="$undef"
11606 case "$d_memcmp" in
11607 "$define")
11608         echo " "
11609         echo "Checking if your memcmp() can compare relative magnitude..." >&4
11610         $cat >try.c <<EOCP
11611 #$i_memory I_MEMORY
11612 #$i_stdlib I_STDLIB
11613 #$i_string I_STRING
11614 #$i_unistd I_UNISTD
11615 EOCP
11616         $cat >>try.c <<'EOCP'
11617 #include <stdio.h>
11618 #ifdef I_MEMORY
11619 #  include <memory.h>
11620 #endif
11621 #ifdef I_STDLIB
11622 #  include <stdlib.h>
11623 #endif
11624 #ifdef I_STRING
11625 #  include <string.h>
11626 #else
11627 #  include <strings.h>
11628 #endif
11629 #ifdef I_UNISTD
11630 #  include <unistd.h>  /* Needed for NetBSD */
11631 #endif
11632 int main()
11633 {
11634 char a = -1;
11635 char b = 0;
11636 if ((a < b) && memcmp(&a, &b, 1) < 0)
11637         exit(1);
11638 exit(0);
11639 }
11640 EOCP
11641         set try
11642         if eval $compile_ok; then
11643                 if $run ./try 2>/dev/null; then
11644                         echo "Yes, it can."
11645                         val="$define"
11646                 else
11647                         echo "No, it can't (it uses signed chars)."
11648                 fi
11649         else
11650                 echo "(I can't compile the test program, so we'll assume not...)"
11651         fi
11652         ;;
11653 esac
11654 $rm -f try.* try core
11655 set d_sanemcmp
11656 eval $setvar
11657
11658 : see if prototype for sbrk is available
11659 echo " "
11660 set d_sbrkproto sbrk $i_unistd unistd.h
11661 eval $hasproto
11662
11663 : see if select exists
11664 set select d_select
11665 eval $inlibc
11666
11667 : see if semctl exists
11668 set semctl d_semctl
11669 eval $inlibc
11670
11671 : see if semget exists
11672 set semget d_semget
11673 eval $inlibc
11674
11675 : see if semop exists
11676 set semop d_semop
11677 eval $inlibc
11678
11679 : see how much of the 'sem*(2)' library is present.
11680 h_sem=true
11681 echo " "
11682 case "$d_semctl$d_semget$d_semop" in
11683 *"$undef"*) h_sem=false;;
11684 esac
11685 case "$osname" in
11686 freebsd)
11687     case "`ipcs 2>&1`" in
11688     "SVID messages"*"not configured"*)
11689         echo "Your $osname does not have the sem*(2) configured." >&4
11690         h_sem=false
11691         val="$undef"
11692         set semctl d_semctl
11693         eval $setvar
11694         set semget d_semget
11695         eval $setvar
11696         set semop d_semop
11697         eval $setvar
11698         ;;
11699     esac
11700     ;;
11701 esac
11702 : we could also check for sys/ipc.h ...
11703 if $h_sem && $test `./findhdr sys/sem.h`; then
11704         echo "You have the full sem*(2) library." >&4
11705         val="$define"
11706 else
11707         echo "You don't have the full sem*(2) library." >&4
11708         val="$undef"
11709 fi
11710 set d_sem
11711 eval $setvar
11712
11713 : see whether sys/sem.h defines union semun
11714 echo " "
11715 $cat > try.c <<'END'
11716 #include <sys/types.h>
11717 #include <sys/ipc.h>
11718 #include <sys/sem.h>
11719 int main () { union semun semun; semun.buf = 0; }
11720 END
11721 set try
11722 if eval $compile; then
11723     echo "You have union semun in <sys/sem.h>." >&4
11724     val="$define"
11725 else
11726     echo "You do not have union semun in <sys/sem.h>." >&4
11727     val="$undef"
11728 fi
11729 $rm -f try try.c try.h
11730 set d_union_semun
11731 eval $setvar
11732
11733 : see how to do semctl IPC_STAT
11734 case "$d_sem" in
11735 $define)
11736     : see whether semctl IPC_STAT can use union semun
11737     echo " "
11738     $cat > try.h <<END
11739 #ifndef S_IRUSR
11740 #   ifdef S_IREAD
11741 #       define S_IRUSR S_IREAD
11742 #       define S_IWUSR S_IWRITE
11743 #       define S_IXUSR S_IEXEC
11744 #   else
11745 #       define S_IRUSR 0400
11746 #       define S_IWUSR 0200
11747 #       define S_IXUSR 0100
11748 #   endif
11749 #   define S_IRGRP (S_IRUSR>>3)
11750 #   define S_IWGRP (S_IWUSR>>3)
11751 #   define S_IXGRP (S_IXUSR>>3)
11752 #   define S_IROTH (S_IRUSR>>6)
11753 #   define S_IWOTH (S_IWUSR>>6)
11754 #   define S_IXOTH (S_IXUSR>>6)
11755 #endif
11756 #ifndef S_IRWXU
11757 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11758 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11759 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11760 #endif
11761 END
11762
11763     $cat > try.c <<END
11764 #include <sys/types.h>
11765 #include <sys/ipc.h>
11766 #include <sys/sem.h>
11767 #include <sys/stat.h>
11768 #include <stdio.h>
11769 #include <errno.h>
11770 #include "try.h"
11771 #ifndef errno
11772 extern int errno;
11773 #endif
11774 #$d_union_semun HAS_UNION_SEMUN
11775 int main() {
11776     union semun
11777 #ifndef HAS_UNION_SEMUN
11778     {
11779         int val;
11780         struct semid_ds *buf;
11781         unsigned short *array;
11782     }
11783 #endif
11784     arg;
11785     int sem, st;
11786
11787 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11788     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11789     if (sem > -1) {
11790         struct semid_ds argbuf;
11791         arg.buf = &argbuf;
11792 #       ifdef IPC_STAT
11793         st = semctl(sem, 0, IPC_STAT, arg);
11794         if (st == 0)
11795             printf("semun\n");
11796         else
11797 #       endif /* IPC_STAT */
11798             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11799 #       ifdef IPC_RMID
11800         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11801 #       endif /* IPC_RMID */
11802             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11803     } else
11804 #endif /* IPC_PRIVATE && ... */
11805         printf("semget failed: errno = %d\n", errno);
11806   return 0;
11807 }
11808 END
11809     val="$undef"
11810     set try
11811     if eval $compile; then
11812         xxx=`$run ./try`
11813         case "$xxx" in
11814         semun) val="$define" ;;
11815         esac
11816     fi
11817     $rm -f try try.c
11818     set d_semctl_semun
11819     eval $setvar
11820     case "$d_semctl_semun" in
11821     $define)
11822         echo "You can use union semun for semctl IPC_STAT." >&4
11823         also='also'
11824         ;;
11825     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11826         also=''
11827         ;;
11828     esac
11829
11830     : see whether semctl IPC_STAT can use struct semid_ds pointer
11831     $cat > try.c <<'END'
11832 #include <sys/types.h>
11833 #include <sys/ipc.h>
11834 #include <sys/sem.h>
11835 #include <sys/stat.h>
11836 #include "try.h"
11837 #include <stdio.h>
11838 #include <errno.h>
11839 #ifndef errno
11840 extern int errno;
11841 #endif
11842 int main() {
11843     struct semid_ds arg;
11844     int sem, st;
11845
11846 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
11847     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11848     if (sem > -1) {
11849 #       ifdef IPC_STAT
11850         st = semctl(sem, 0, IPC_STAT, &arg);
11851         if (st == 0)
11852             printf("semid_ds\n");
11853         else
11854 #       endif /* IPC_STAT */
11855             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11856 #       ifdef IPC_RMID
11857         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11858 #       endif /* IPC_RMID */
11859             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11860     } else
11861 #endif /* IPC_PRIVATE && ... */
11862         printf("semget failed: errno = %d\n", errno);
11863
11864     return 0;
11865 }
11866 END
11867     val="$undef"
11868     set try
11869     if eval $compile; then
11870         xxx=`$run ./try`
11871         case "$xxx" in
11872         semid_ds) val="$define" ;;
11873         esac
11874     fi
11875     $rm -f try try.c
11876     set d_semctl_semid_ds
11877     eval $setvar
11878     case "$d_semctl_semid_ds" in
11879     $define)
11880         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11881         ;;
11882     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11883         ;;
11884     esac
11885     $rm -f try.h
11886     ;;
11887 *)  val="$undef"
11888
11889     # We do not have the full sem*(2) library, so assume we can not
11890     # use either.
11891
11892     set d_semctl_semun
11893     eval $setvar
11894
11895     set d_semctl_semid_ds
11896     eval $setvar
11897     ;;
11898 esac
11899
11900 : see if sendmsg exists
11901 set sendmsg d_sendmsg
11902 eval $inlibc
11903
11904 : see if setegid exists
11905 set setegid d_setegid
11906 eval $inlibc
11907
11908 : see if seteuid exists
11909 set seteuid d_seteuid
11910 eval $inlibc
11911
11912 : see if setgrent exists
11913 set setgrent d_setgrent
11914 eval $inlibc
11915
11916 : see if sethostent exists
11917 set sethostent d_sethent
11918 eval $inlibc
11919
11920 : see if setitimer exists
11921 set setitimer d_setitimer
11922 eval $inlibc
11923
11924 : see if setlinebuf exists
11925 set setlinebuf d_setlinebuf
11926 eval $inlibc
11927
11928 : see if setlocale exists
11929 set setlocale d_setlocale
11930 eval $inlibc
11931
11932 : see if setnetent exists
11933 set setnetent d_setnent
11934 eval $inlibc
11935
11936 : see if setprotoent exists
11937 set setprotoent d_setpent
11938 eval $inlibc
11939
11940 : see if setpgid exists
11941 set setpgid d_setpgid
11942 eval $inlibc
11943
11944 : see if setpgrp2 exists
11945 set setpgrp2 d_setpgrp2
11946 eval $inlibc
11947
11948 : see if setpriority exists
11949 set setpriority d_setprior
11950 eval $inlibc
11951
11952 : see if setproctitle exists
11953 set setproctitle d_setproctitle
11954 eval $inlibc
11955
11956 : see if setpwent exists
11957 set setpwent d_setpwent
11958 eval $inlibc
11959
11960 : see if setregid exists
11961 set setregid d_setregid
11962 eval $inlibc
11963 set setresgid d_setresgid
11964 eval $inlibc
11965
11966 : see if setreuid exists
11967 set setreuid d_setreuid
11968 eval $inlibc
11969 set setresuid d_setresuid
11970 eval $inlibc
11971
11972 : see if setrgid exists
11973 set setrgid d_setrgid
11974 eval $inlibc
11975
11976 : see if setruid exists
11977 set setruid d_setruid
11978 eval $inlibc
11979
11980 : see if setservent exists
11981 set setservent d_setsent
11982 eval $inlibc
11983
11984 : see if setsid exists
11985 set setsid d_setsid
11986 eval $inlibc
11987
11988 : see if setvbuf exists
11989 set setvbuf d_setvbuf
11990 eval $inlibc
11991
11992 : see if sfio.h is available
11993 set sfio.h i_sfio
11994 eval $inhdr
11995
11996
11997 : see if sfio library is available
11998 case "$i_sfio" in
11999 $define)
12000         val=''
12001         set sfreserve val
12002         eval $inlibc
12003         ;;
12004 *)
12005         val="$undef"
12006         ;;
12007 esac
12008 : Ok, but do we want to use it.
12009 case "$val" in
12010 $define)
12011         case "$usesfio" in
12012         true|$define|[yY]*) dflt='y';;
12013         *) dflt='n';;
12014         esac
12015         echo "$package can use the sfio library, but it is experimental."
12016         case "$useperlio" in
12017         "$undef")
12018             echo "For sfio also the PerlIO abstraction layer is needed."
12019             echo "Earlier you said you wouldn't want that."
12020             ;;
12021         esac
12022         rp="You seem to have sfio available, do you want to try using it?"
12023         . ./myread
12024         case "$ans" in
12025         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
12026                 useperlio="$define"
12027                 val="$define"
12028                 ;;
12029         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
12030                 val="$undef"
12031                 ;;
12032         esac
12033         ;;
12034 *)      case "$usesfio" in
12035         true|$define|[yY]*)
12036                 echo "Sorry, cannot find sfio on this machine." >&4
12037                 echo "Ignoring your setting of usesfio=$usesfio." >&4
12038                 val="$undef"
12039                 ;;
12040         esac
12041         ;;
12042 esac
12043 set d_sfio
12044 eval $setvar
12045 case "$d_sfio" in
12046 $define) usesfio='true';;
12047 *) usesfio='false';;
12048 esac
12049 case "$d_sfio" in
12050 $define) ;;
12051 *)      : Remove sfio from list of libraries to use
12052         set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12053         shift
12054         libs="$*"
12055         echo "libs = $libs" >&4
12056 ;;
12057 esac
12058
12059
12060 : see if shmctl exists
12061 set shmctl d_shmctl
12062 eval $inlibc
12063
12064 : see if shmget exists
12065 set shmget d_shmget
12066 eval $inlibc
12067
12068 : see if shmat exists
12069 set shmat d_shmat
12070 eval $inlibc
12071 : see what shmat returns
12072 case "$d_shmat" in
12073 "$define")
12074         $cat >shmat.c <<'END'
12075 #include <sys/shm.h>
12076 void *shmat();
12077 END
12078         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12079                 shmattype='void *'
12080         else
12081                 shmattype='char *'
12082         fi
12083         echo "and it returns ($shmattype)." >&4
12084         : see if a prototype for shmat is available
12085         xxx=`./findhdr sys/shm.h`
12086         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12087         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12088                 val="$define"
12089         else
12090                 val="$undef"
12091         fi
12092         $rm -f shmat.[co]
12093         ;;
12094 *)
12095         val="$undef"
12096         ;;
12097 esac
12098 set d_shmatprototype
12099 eval $setvar
12100
12101 : see if shmdt exists
12102 set shmdt d_shmdt
12103 eval $inlibc
12104
12105 : see how much of the 'shm*(2)' library is present.
12106 h_shm=true
12107 echo " "
12108 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12109 *"$undef"*) h_shm=false;;
12110 esac
12111 case "$osname" in
12112 freebsd)
12113     case "`ipcs 2>&1`" in
12114     "SVID shared memory"*"not configured"*)
12115         echo "Your $osname does not have the shm*(2) configured." >&4
12116         h_shm=false
12117         val="$undef"
12118         set shmctl d_shmctl
12119         evat $setvar
12120         set shmget d_shmget
12121         evat $setvar
12122         set shmat d_shmat
12123         evat $setvar
12124         set shmdt d_shmdt
12125         evat $setvar
12126         ;;
12127     esac
12128     ;;
12129 esac
12130 : we could also check for sys/ipc.h ...
12131 if $h_shm && $test `./findhdr sys/shm.h`; then
12132         echo "You have the full shm*(2) library." >&4
12133         val="$define"
12134 else
12135         echo "You don't have the full shm*(2) library." >&4
12136         val="$undef"
12137 fi
12138 set d_shm
12139 eval $setvar
12140
12141 echo " "
12142 : see if we have sigaction
12143 if set sigaction val -f d_sigaction; eval $csym; $val; then
12144         echo 'sigaction() found.' >&4
12145         $cat > try.c <<'EOP'
12146 #include <stdio.h>
12147 #include <sys/types.h>
12148 #include <signal.h>
12149 int main()
12150 {
12151     struct sigaction act, oact;
12152     act.sa_flags = 0;
12153     oact.sa_handler = 0;
12154     /* so that act and oact are used */
12155     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
12156 }
12157 EOP
12158         set try
12159         if eval $compile_ok; then
12160                 val="$define"
12161         else
12162                 echo "But you don't seem to have a useable struct sigaction." >&4
12163                 val="$undef"
12164         fi
12165 else
12166         echo 'sigaction NOT found.' >&4
12167         val="$undef"
12168 fi
12169 set d_sigaction; eval $setvar
12170 $rm -f try try$_o try.c
12171
12172 : see if sigprocmask exists
12173 set sigprocmask d_sigprocmask
12174 eval $inlibc
12175
12176 : see if sigsetjmp exists
12177 echo " "
12178 case "$d_sigsetjmp" in
12179 '')
12180         $cat >try.c <<'EOP'
12181 #include <setjmp.h>
12182 sigjmp_buf env;
12183 int set = 1;
12184 int main()
12185 {
12186         if (sigsetjmp(env,1))
12187                 exit(set);
12188         set = 0;
12189         siglongjmp(env, 1);
12190         exit(1);
12191 }
12192 EOP
12193         set try
12194         if eval $compile; then
12195                 if $run ./try >/dev/null 2>&1; then
12196                         echo "POSIX sigsetjmp found." >&4
12197                         val="$define"
12198                 else
12199                         $cat >&4 <<EOM
12200 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12201 I'll ignore them.
12202 EOM
12203                         val="$undef"
12204                 fi
12205         else
12206                 echo "sigsetjmp not found." >&4
12207                 val="$undef"
12208         fi
12209         ;;
12210 *) val="$d_sigsetjmp"
12211         case "$d_sigsetjmp" in
12212         $define) echo "POSIX sigsetjmp found." >&4;;
12213         $undef) echo "sigsetjmp not found." >&4;;
12214         esac
12215         ;;
12216 esac
12217 set d_sigsetjmp
12218 eval $setvar
12219 $rm -f try.c try
12220
12221 : see if sockatmark exists
12222 set sockatmark d_sockatmark
12223 eval $inlibc
12224
12225 : see if prototype for sockatmark is available
12226 echo " "
12227 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12228 eval $hasproto
12229
12230 : see if socks5_init exists
12231 set socks5_init d_socks5_init
12232 eval $inlibc
12233
12234 : see if prototype for setresgid is available
12235 echo " "
12236 set d_sresgproto setresgid $i_unistd unistd.h
12237 eval $hasproto
12238
12239 : see if prototype for setresuid is available
12240 echo " "
12241 set d_sresuproto setresuid $i_unistd unistd.h
12242 eval $hasproto
12243
12244 : see if sys/stat.h is available
12245 set sys/stat.h i_sysstat
12246 eval $inhdr
12247
12248
12249 : see if stat knows about block sizes
12250 echo " "
12251 echo "Checking to see if your struct stat has st_blocks field..." >&4
12252 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12253 eval $hasfield
12254
12255
12256 : see if this is a sys/vfs.h system
12257 set sys/vfs.h i_sysvfs
12258 eval $inhdr
12259
12260
12261 : see if this is a sys/statfs.h system
12262 set sys/statfs.h i_sysstatfs
12263 eval $inhdr
12264
12265
12266 echo " "
12267 echo "Checking to see if your system supports struct statfs..." >&4
12268 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
12269 eval $hasstruct
12270 case "$d_statfs_s" in
12271 "$define")      echo "Yes, it does."   ;;
12272 *)              echo "No, it doesn't." ;;
12273 esac
12274
12275
12276
12277 : see if struct statfs knows about f_flags
12278 case "$d_statfs_s" in
12279 define) 
12280         echo " "
12281         echo "Checking to see if your struct statfs has f_flags field..." >&4
12282         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
12283         eval $hasfield
12284         ;;
12285 *)      val="$undef"
12286         set d_statfs_f_flags
12287         eval $setvar
12288         ;;
12289 esac
12290 case "$d_statfs_f_flags" in
12291 "$define")      echo "Yes, it does."   ;;
12292 *)              echo "No, it doesn't." ;;
12293 esac
12294
12295 : see if _ptr and _cnt from stdio act std
12296 echo " "
12297
12298 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12299         echo "(Looks like you have stdio.h from BSD.)"
12300         case "$stdio_ptr" in
12301         '') stdio_ptr='((fp)->_p)'
12302                 ptr_lval=$define
12303                 ;;
12304         *)      ptr_lval=$d_stdio_ptr_lval;;
12305         esac
12306         case "$stdio_cnt" in
12307         '') stdio_cnt='((fp)->_r)'
12308                 cnt_lval=$define
12309                 ;;
12310         *)      cnt_lval=$d_stdio_cnt_lval;;
12311         esac
12312         case "$stdio_base" in
12313         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12314         esac
12315         case "$stdio_bufsiz" in
12316         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12317         esac
12318 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12319         echo "(Looks like you have stdio.h from Linux.)"
12320         case "$stdio_ptr" in
12321         '') stdio_ptr='((fp)->_IO_read_ptr)'
12322                 ptr_lval=$define
12323                 ;;
12324         *)      ptr_lval=$d_stdio_ptr_lval;;
12325         esac
12326         case "$stdio_cnt" in
12327         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12328                 cnt_lval=$undef
12329                 ;;
12330         *)      cnt_lval=$d_stdio_cnt_lval;;
12331         esac
12332         case "$stdio_base" in
12333         '') stdio_base='((fp)->_IO_read_base)';;
12334         esac
12335         case "$stdio_bufsiz" in
12336         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12337         esac
12338 else
12339         case "$stdio_ptr" in
12340         '') stdio_ptr='((fp)->_ptr)'
12341                 ptr_lval=$define
12342                 ;;
12343         *)      ptr_lval=$d_stdio_ptr_lval;;
12344         esac
12345         case "$stdio_cnt" in
12346         '') stdio_cnt='((fp)->_cnt)'
12347                 cnt_lval=$define
12348                 ;;
12349         *)      cnt_lval=$d_stdio_cnt_lval;;
12350         esac
12351         case "$stdio_base" in
12352         '') stdio_base='((fp)->_base)';;
12353         esac
12354         case "$stdio_bufsiz" in
12355         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12356         esac
12357 fi
12358
12359 : test whether _ptr and _cnt really work
12360 echo "Checking how std your stdio is..." >&4
12361 $cat >try.c <<EOP
12362 #include <stdio.h>
12363 #define FILE_ptr(fp)    $stdio_ptr
12364 #define FILE_cnt(fp)    $stdio_cnt
12365 int main() {
12366         FILE *fp = fopen("try.c", "r");
12367         char c = getc(fp);
12368         if (
12369                 18 <= FILE_cnt(fp) &&
12370                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12371         )
12372                 exit(0);
12373         exit(1);
12374 }
12375 EOP
12376 val="$undef"
12377 set try
12378 if eval $compile && $to try.c; then
12379         if $run ./try; then
12380                 echo "Your stdio acts pretty std."
12381                 val="$define"
12382         else
12383                 echo "Your stdio isn't very std."
12384         fi
12385 else
12386         echo "Your stdio doesn't appear very std."
12387 fi
12388 $rm -f try.c try
12389 set d_stdstdio
12390 eval $setvar
12391
12392 : Can _ptr be used as an lvalue?
12393 case "$d_stdstdio$ptr_lval" in
12394 $define$define) val=$define ;;
12395 *) val=$undef ;;
12396 esac
12397 set d_stdio_ptr_lval
12398 eval $setvar
12399
12400 : Can _cnt be used as an lvalue?
12401 case "$d_stdstdio$cnt_lval" in
12402 $define$define) val=$define ;;
12403 *) val=$undef ;;
12404 esac
12405 set d_stdio_cnt_lval
12406 eval $setvar
12407
12408
12409 : test whether setting _ptr sets _cnt as a side effect
12410 d_stdio_ptr_lval_sets_cnt="$undef"
12411 d_stdio_ptr_lval_nochange_cnt="$undef"
12412 case "$d_stdio_ptr_lval$d_stdstdio" in
12413 $define$define)
12414         echo "Checking to see what happens if we set the stdio ptr..." >&4
12415 $cat >try.c <<EOP
12416 #include <stdio.h>
12417 /* Can we scream? */
12418 /* Eat dust sed :-) */
12419 /* In the buffer space, no one can hear you scream. */
12420 #define FILE_ptr(fp)    $stdio_ptr
12421 #define FILE_cnt(fp)    $stdio_cnt
12422 #include <sys/types.h>
12423 int main() {
12424         FILE *fp = fopen("try.c", "r");
12425         int c;
12426         char *ptr;
12427         size_t cnt;
12428         if (!fp) {
12429             puts("Fail even to read");
12430             exit(1);
12431         }
12432         c = getc(fp); /* Read away the first # */
12433         if (c == EOF) {
12434             puts("Fail even to read");
12435             exit(1);
12436         }
12437         if (!(
12438                 18 <= FILE_cnt(fp) &&
12439                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12440         )) {
12441                 puts("Fail even to read");
12442                 exit (1);
12443         }
12444         ptr = (char*) FILE_ptr(fp);
12445         cnt = (size_t)FILE_cnt(fp);
12446
12447         FILE_ptr(fp) += 42;
12448
12449         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12450                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12451                 exit (1);
12452         }
12453         if (FILE_cnt(fp) <= 20) {
12454                 printf ("Fail (<20 chars to test)");
12455                 exit (1);
12456         }
12457         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12458                 puts("Fail compare");
12459                 exit (1);
12460         }
12461         if (cnt == FILE_cnt(fp)) {
12462                 puts("Pass_unchanged");
12463                 exit (0);
12464         }       
12465         if (FILE_cnt(fp) == (cnt - 42)) {
12466                 puts("Pass_changed");
12467                 exit (0);
12468         }
12469         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12470         return 1;
12471
12472 }
12473 EOP
12474         set try
12475         if eval $compile && $to try.c; then
12476                 case `$run ./try` in
12477                 Pass_changed)
12478                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12479                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12480                 Pass_unchanged)
12481                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12482                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12483                 Fail*)
12484                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12485                 *)
12486                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12487         esac
12488         else
12489                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12490         fi
12491         $rm -f try.c try
12492         ;;
12493 esac
12494
12495 : see if _base is also standard
12496 val="$undef"
12497 case "$d_stdstdio" in
12498 $define)
12499         $cat >try.c <<EOP
12500 #include <stdio.h>
12501 #define FILE_base(fp)   $stdio_base
12502 #define FILE_bufsiz(fp) $stdio_bufsiz
12503 int main() {
12504         FILE *fp = fopen("try.c", "r");
12505         char c = getc(fp);
12506         if (
12507                 19 <= FILE_bufsiz(fp) &&
12508                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12509         )
12510                 exit(0);
12511         exit(1);
12512 }
12513 EOP
12514         set try
12515         if eval $compile && $to try.c; then
12516                 if $run ./try; then
12517                         echo "And its _base field acts std."
12518                         val="$define"
12519                 else
12520                         echo "But its _base field isn't std."
12521                 fi
12522         else
12523                 echo "However, it seems to be lacking the _base field."
12524         fi
12525         $rm -f try.c try
12526         ;;
12527 esac
12528 set d_stdiobase
12529 eval $setvar
12530
12531 $cat >&4 <<EOM
12532 Checking how to access stdio streams by file descriptor number...
12533 EOM
12534 case "$stdio_stream_array" in
12535 '')     $cat >try.c <<EOCP
12536 #include <stdio.h>
12537 int main() {
12538   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12539     printf("yes\n");
12540 }
12541 EOCP
12542         for s in _iob __iob __sF
12543         do
12544                 set try -DSTDIO_STREAM_ARRAY=$s
12545                 if eval $compile; then
12546                         case "`$run ./try`" in
12547                         yes)    stdio_stream_array=$s; break ;;
12548                         esac
12549                 fi
12550         done
12551         $rm -f try.* try$exe_ext
12552 esac
12553 case "$stdio_stream_array" in
12554 '')     $cat >&4 <<EOM
12555 I can't figure out how to access stdio streams by file descriptor number.
12556 EOM
12557         d_stdio_stream_array="$undef"
12558         ;;
12559 *)      $cat >&4 <<EOM
12560 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12561 EOM
12562         d_stdio_stream_array="$define"
12563         ;;
12564 esac
12565
12566 : see if strcoll exists
12567 set strcoll d_strcoll
12568 eval $inlibc
12569
12570 : check for structure copying
12571 echo " "
12572 echo "Checking to see if your C compiler can copy structs..." >&4
12573 $cat >try.c <<'EOCP'
12574 int main()
12575 {
12576         struct blurfl {
12577                 int dyick;
12578         } foo, bar;
12579
12580         foo = bar;
12581 }
12582 EOCP
12583 if $cc -c try.c >/dev/null 2>&1 ; then
12584         val="$define"
12585         echo "Yup, it can."
12586 else
12587         val="$undef"
12588         echo "Nope, it can't."
12589 fi
12590 set d_strctcpy
12591 eval $setvar
12592 $rm -f try.*
12593
12594 : see if strerror and/or sys_errlist[] exist
12595 echo " "
12596 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12597     if set strerror val -f d_strerror; eval $csym; $val; then
12598                 echo 'strerror() found.' >&4
12599                 d_strerror="$define"
12600                 d_strerrm='strerror(e)'
12601                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12602                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
12603                         d_syserrlst="$define"
12604                 else
12605                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12606                         d_syserrlst="$undef"
12607                 fi
12608     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12609                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12610                 echo 'strerror() found in string header.' >&4
12611                 d_strerror="$define"
12612                 d_strerrm='strerror(e)'
12613                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12614                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12615                                 d_syserrlst="$define"
12616                 else
12617                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
12618                         d_syserrlst="$undef"
12619                 fi
12620     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12621                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12622                 d_strerror="$undef"
12623                 d_syserrlst="$define"
12624                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12625     else
12626                 echo 'strerror() and sys_errlist[] NOT found.' >&4
12627                 d_strerror="$undef"
12628                 d_syserrlst="$undef"
12629                 d_strerrm='"unknown"'
12630     fi
12631 fi
12632
12633 : see if strftime exists
12634 set strftime d_strftime
12635 eval $inlibc
12636
12637 : see if strtod exists
12638 set strtod d_strtod
12639 eval $inlibc
12640
12641 : see if strtol exists
12642 set strtol d_strtol
12643 eval $inlibc
12644
12645 : see if strtold exists
12646 set strtold d_strtold
12647 eval $inlibc
12648
12649 : see if strtoll exists
12650 set strtoll d_strtoll
12651 eval $inlibc
12652
12653 case "$d_longlong-$d_strtoll" in
12654 "$define-$define")
12655         $cat <<EOM
12656 Checking whether your strtoll() works okay...
12657 EOM
12658         $cat >try.c <<'EOCP'
12659 #include <errno.h>
12660 #ifdef __hpux
12661 #define strtoll __strtoll
12662 #endif
12663 #ifdef __EMX__
12664 #define strtoll _strtoll
12665 #endif
12666 #include <stdio.h>
12667 extern long long int strtoll(char *s, char **, int); 
12668 static int bad = 0;
12669 int check(char *s, long long ell, int een) {
12670         long long gll;
12671         errno = 0;
12672         gll = strtoll(s, 0, 10);
12673         if (!((gll == ell) && (errno == een)))
12674                 bad++;
12675 }
12676 int main() {
12677         check(" 1",                                      1LL, 0);
12678         check(" 0",                                      0LL, 0);
12679         check("-1",                                     -1LL, 0);
12680         check("-9223372036854775808", -9223372036854775808LL, 0);
12681         check("-9223372036854775808", -9223372036854775808LL, 0);
12682         check(" 9223372036854775807",  9223372036854775807LL, 0);
12683         check("-9223372036854775808", -9223372036854775808LL, 0);
12684         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
12685         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12686         if (!bad)
12687                 printf("ok\n");
12688 }
12689 EOCP
12690         set try
12691         if eval $compile; then
12692                 yyy=`$run ./try`
12693                 case "$yyy" in
12694                 ok) echo "Your strtoll() seems to be working okay." ;;
12695                 *) cat <<EOM >&4
12696 Your strtoll() doesn't seem to be working okay.
12697 EOM
12698                    d_strtoll="$undef"
12699                    ;;
12700                 esac
12701         else
12702                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12703                 d_strtoll="$undef"
12704         fi
12705         ;;
12706 esac
12707
12708 : see if strtoq exists
12709 set strtoq d_strtoq
12710 eval $inlibc
12711
12712 : see if strtoul exists
12713 set strtoul d_strtoul
12714 eval $inlibc
12715
12716 case "$d_strtoul" in
12717 "$define")
12718         $cat <<EOM
12719 Checking whether your strtoul() works okay...
12720 EOM
12721         $cat >try.c <<'EOCP'
12722 #include <errno.h>
12723 #include <stdio.h>
12724 extern unsigned long int strtoul(char *s, char **, int); 
12725 static int bad = 0;
12726 void check(char *s, unsigned long eul, int een) {
12727         unsigned long gul;
12728         errno = 0;
12729         gul = strtoul(s, 0, 10);
12730         if (!((gul == eul) && (errno == een)))
12731                 bad++;
12732 }
12733 int main() {
12734         check(" 1", 1L, 0);
12735         check(" 0", 0L, 0);
12736 EOCP
12737         case "$longsize" in
12738         8)
12739             $cat >>try.c <<'EOCP'
12740         check("18446744073709551615", 18446744073709551615UL, 0);
12741         check("18446744073709551616", 18446744073709551615UL, ERANGE);
12742 #if 0 /* strtoul() for /^-/ strings is undefined. */
12743         check("-1", 18446744073709551615UL, 0);
12744         check("-18446744073709551614", 2, 0);
12745         check("-18446744073709551615", 1, 0);
12746         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12747         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12748 #endif
12749 EOCP
12750                 ;;
12751         4)
12752                     $cat >>try.c <<'EOCP'
12753         check("4294967295", 4294967295UL, 0);
12754         check("4294967296", 4294967295UL, ERANGE);
12755 #if 0 /* strtoul() for /^-/ strings is undefined. */
12756         check("-1", 4294967295UL, 0);
12757         check("-4294967294", 2, 0);
12758         check("-4294967295", 1, 0);
12759         check("-4294967296", 4294967295UL, ERANGE);
12760         check("-4294967297", 4294967295UL, ERANGE);
12761 #endif
12762 EOCP
12763                 ;;
12764         *)
12765 : Should we write these tests to be more portable by sprintf-ing
12766 : ~0 and then manipulating that char string as input for strtol?
12767                 ;;
12768         esac
12769         $cat >>try.c <<'EOCP'
12770         if (!bad)
12771                 printf("ok\n");
12772         return 0;
12773 }
12774 EOCP
12775         set try
12776         if eval $compile; then
12777                 case "`$run ./try`" in
12778                 ok) echo "Your strtoul() seems to be working okay." ;;
12779                 *) cat <<EOM >&4
12780 Your strtoul() doesn't seem to be working okay.
12781 EOM
12782                    d_strtoul="$undef"
12783                    ;;
12784                 esac
12785         fi
12786         ;;
12787 esac
12788
12789 : see if strtoull exists
12790 set strtoull d_strtoull
12791 eval $inlibc
12792
12793 case "$d_longlong-$d_strtoull" in
12794 "$define-$define")
12795         $cat <<EOM
12796 Checking whether your strtoull() works okay...
12797 EOM
12798         $cat >try.c <<'EOCP'
12799 #include <errno.h>
12800 #ifdef __hpux
12801 #define strtoull __strtoull
12802 #endif
12803 #include <stdio.h>
12804 extern unsigned long long int strtoull(char *s, char **, int); 
12805 static int bad = 0;
12806 int check(char *s, long long eull, int een) {
12807         long long gull;
12808         errno = 0;
12809         gull = strtoull(s, 0, 10);
12810         if (!((gull == eull) && (errno == een)))
12811                 bad++;
12812 }
12813 int main() {
12814         check(" 1",                                        1LL, 0);
12815         check(" 0",                                        0LL, 0);
12816         check("18446744073709551615",  18446744073709551615ULL, 0);
12817         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12818 #if 0 /* strtoull() for /^-/ strings is undefined. */
12819         check("-1",                    18446744073709551615ULL, 0);
12820         check("-18446744073709551614",                     2LL, 0);
12821         check("-18446744073709551615",                     1LL, 0);
12822         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12823         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12824 #endif
12825         if (!bad)
12826                 printf("ok\n");
12827 }
12828 EOCP
12829         set try
12830         if eval $compile; then
12831                 case "`$run ./try`" in
12832                 ok) echo "Your strtoull() seems to be working okay." ;;
12833                 *) cat <<EOM >&4
12834 Your strtoull() doesn't seem to be working okay.
12835 EOM
12836                    d_strtoull="$undef"
12837                    ;;
12838                 esac
12839         fi
12840         ;;
12841 esac
12842
12843 : see if strtouq exists
12844 set strtouq d_strtouq
12845 eval $inlibc
12846
12847 case "$d_strtouq" in
12848 "$define")
12849         $cat <<EOM
12850 Checking whether your strtouq() works okay...
12851 EOM
12852         $cat >try.c <<'EOCP'
12853 #include <errno.h>
12854 #include <stdio.h>
12855 extern unsigned long long int strtouq(char *s, char **, int); 
12856 static int bad = 0;
12857 void check(char *s, unsigned long long eull, int een) {
12858         unsigned long long gull;
12859         errno = 0;
12860         gull = strtouq(s, 0, 10);
12861         if (!((gull == eull) && (errno == een)))
12862                 bad++;
12863 }
12864 int main() {
12865         check(" 1",                                        1LL, 0);
12866         check(" 0",                                        0LL, 0);
12867         check("18446744073709551615",  18446744073709551615ULL, 0);
12868         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12869 #if 0 /* strtouq() for /^-/ strings is undefined. */
12870         check("-1",                    18446744073709551615ULL, 0);
12871         check("-18446744073709551614",                     2LL, 0);
12872         check("-18446744073709551615",                     1LL, 0);
12873         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12874         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12875 #endif
12876         if (!bad)
12877                 printf("ok\n");
12878         return 0;
12879 }
12880 EOCP
12881         set try
12882         if eval $compile; then
12883                 case "`$run ./try`" in
12884                 ok) echo "Your strtouq() seems to be working okay." ;;
12885                 *) cat <<EOM >&4
12886 Your strtouq() doesn't seem to be working okay.
12887 EOM
12888                    d_strtouq="$undef"
12889                    ;;
12890                 esac
12891         fi
12892         ;;
12893 esac
12894
12895 : see if strxfrm exists
12896 set strxfrm d_strxfrm
12897 eval $inlibc
12898
12899 : see if symlink exists
12900 set symlink d_symlink
12901 eval $inlibc
12902
12903 : see if syscall exists
12904 set syscall d_syscall
12905 eval $inlibc
12906
12907 : see if prototype for syscall is available
12908 echo " "
12909 set d_syscallproto syscall $i_unistd unistd.h
12910 eval $hasproto
12911
12912 : see if sysconf exists
12913 set sysconf d_sysconf
12914 eval $inlibc
12915
12916 : see if system exists
12917 set system d_system
12918 eval $inlibc
12919
12920 : see if tcgetpgrp exists
12921 set tcgetpgrp d_tcgetpgrp
12922 eval $inlibc
12923
12924 : see if tcsetpgrp exists
12925 set tcsetpgrp d_tcsetpgrp
12926 eval $inlibc
12927
12928 : see if prototype for telldir is available
12929 echo " "
12930 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
12931 eval $hasproto
12932
12933 : see if this is a sys/times.h system
12934 set sys/times.h i_systimes
12935 eval $inhdr
12936
12937 : see if times exists
12938 echo " "
12939 if set times val -f d_times; eval $csym; $val; then
12940         echo 'times() found.' >&4
12941         d_times="$define"
12942         inc=''
12943         case "$i_systimes" in
12944         "$define") inc='sys/times.h';;
12945         esac
12946         rp="What is the type returned by times() on this system?"
12947         set clock_t clocktype long stdio.h sys/types.h $inc
12948         eval $typedef_ask
12949 else
12950         echo 'times() NOT found, hope that will do.' >&4
12951         d_times="$undef"
12952         clocktype='int'
12953 fi
12954
12955 : see if truncate exists
12956 set truncate d_truncate
12957 eval $inlibc
12958
12959 : see if tzname[] exists
12960 echo " "
12961 if set tzname val -a d_tzname; eval $csym; $val; then
12962         val="$define"
12963         echo 'tzname[] found.' >&4
12964 else
12965         val="$undef"
12966         echo 'tzname[] NOT found.' >&4
12967 fi
12968 set d_tzname
12969 eval $setvar
12970
12971 case "$osname" in
12972 next|rhapsody|darwin) multiarch="$define" ;;
12973 esac
12974 case "$multiarch" in
12975 ''|[nN]*) multiarch="$undef" ;;
12976 esac
12977
12978 : check for ordering of bytes in a long
12979 echo " "
12980 case "$usecrosscompile$multiarch" in
12981 *$define*)
12982         $cat <<EOM
12983 You seem to be either cross-compiling or doing a multiarchitecture build,
12984 skipping the byteorder check.
12985
12986 EOM
12987         byteorder='ffff'
12988         ;;
12989 *)
12990         case "$byteorder" in
12991         '')
12992                 $cat <<'EOM'
12993 In the following, larger digits indicate more significance.  A big-endian
12994 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12995 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12996 machines may have weird orders like 3412.  A Cray will report 87654321,
12997 an Alpha will report 12345678. If the test program works the default is
12998 probably right.
12999 I'm now running the test program...
13000 EOM
13001                 $cat >try.c <<'EOCP'
13002 #include <stdio.h>
13003 int main()
13004 {
13005         int i;
13006         union {
13007                 unsigned long l;
13008                 char c[sizeof(long)];
13009         } u;
13010
13011         if (sizeof(long) > 4)
13012                 u.l = (0x08070605L << 32) | 0x04030201L;
13013         else
13014                 u.l = 0x04030201L;
13015         for (i = 0; i < sizeof(long); i++)
13016                 printf("%c", u.c[i]+'0');
13017         printf("\n");
13018         exit(0);
13019 }
13020 EOCP
13021                 xxx_prompt=y
13022                 set try
13023                 if eval $compile && ./try > /dev/null; then
13024                         dflt=`$run ./try`
13025                         case "$dflt" in
13026                         [1-4][1-4][1-4][1-4]|12345678|87654321)
13027                                 echo "(The test program ran ok.)"
13028                                 echo "byteorder=$dflt"
13029                                 xxx_prompt=n
13030                         ;;
13031                         ????|????????) echo "(The test program ran ok.)" ;;
13032                         *) echo "(The test program didn't run right for some reason.)" ;;
13033                         esac
13034                 else
13035                         dflt='4321'
13036                         cat <<'EOM'
13037 (I can't seem to compile the test program.  Guessing big-endian...)
13038 EOM
13039                 fi
13040                 case "$xxx_prompt" in
13041                 y)
13042                         rp="What is the order of bytes in a long?"
13043                         . ./myread
13044                         byteorder="$ans"
13045                         ;;
13046                 *)      byteorder=$dflt
13047                         ;;
13048                 esac
13049                 ;;
13050         esac
13051         $rm -f try.c try
13052         ;;
13053 esac
13054
13055
13056 $cat <<EOM
13057
13058 Checking to see whether you can access character data unalignedly...
13059 EOM
13060 $cat >try.c <<EOCP
13061 #include <stdio.h>
13062 #define U32 $u32type
13063 #define BYTEORDER $byteorder
13064 int main() {
13065 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13066     U8 buf[] = "\0\0\0\1\0\0\0\0";
13067     U32 *up;
13068     int i;
13069
13070     if (sizeof(U32) != 4) {
13071         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13072         exit(1);
13073     }
13074
13075     fflush(stdout);
13076
13077     for (i = 0; i < 4; i++) {
13078         up = (U32*)(buf + i);
13079         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
13080                (*up == 1 << (8*(3-i)))  /* little-endian */
13081               )
13082            )
13083         {
13084             printf("read failed (%x)\n", *up);
13085             exit(2);
13086         }
13087     }
13088
13089     /* write test */
13090     for (i = 0; i < 4; i++) {
13091         up = (U32*)(buf + i);
13092         *up = 0xBeef;
13093         if (*up != 0xBeef) {
13094             printf("write failed (%x)\n", *up);
13095             exit(3);
13096         }
13097     }
13098
13099     exit(0);
13100 #else
13101     printf("1\n");
13102     exit(1);
13103 #endif
13104     return 0;
13105 }
13106 EOCP
13107 set try
13108 if eval $compile_ok; then
13109         echo "(Testing for character data alignment may dump core.)" >&4
13110         $run ./try 2>&1 >/dev/null
13111         case "$?" in
13112         0)      cat >&4 <<EOM
13113 You can access character data pretty unalignedly.
13114 EOM
13115                 d_u32align="$undef"
13116                 ;;
13117         *)      cat >&4 <<EOM
13118 It seems that you must access character data in an aligned manner.
13119 EOM
13120                 d_u32align="$define"
13121                 ;;
13122         esac
13123         $rm -f core core.try.* try.core
13124 else
13125         rp='Can you access character data at unaligned addresses?'
13126         dflt='n'
13127         . ./myread
13128         case "$ans" in
13129         [yY]*)  d_u32align="$undef"  ;;
13130         *)      d_u32align="$define" ;;
13131         esac
13132 fi
13133
13134 : see if ualarm exists
13135 set ualarm d_ualarm
13136 eval $inlibc
13137
13138 : see if umask exists
13139 set umask d_umask
13140 eval $inlibc
13141
13142 : see if usleep exists
13143 set usleep d_usleep
13144 eval $inlibc
13145
13146 : see if prototype for usleep is available
13147 echo " "
13148 set d_usleepproto usleep $i_unistd unistd.h
13149 eval $hasproto
13150
13151 : see if ustat exists
13152 set ustat d_ustat
13153 eval $inlibc
13154
13155 : backward compatibility for d_hvfork
13156 if test X$d_hvfork != X; then
13157         d_vfork="$d_hvfork"
13158         d_hvfork=''
13159 fi
13160 : see if there is a vfork
13161 val=''
13162 set vfork val
13163 eval $inlibc
13164
13165 : Ok, but do we want to use it. vfork is reportedly unreliable in 
13166 : perl on Solaris 2.x, and probably elsewhere.
13167 case "$val" in
13168 $define)
13169         echo " "
13170         case "$usevfork" in
13171         false) dflt='n';;
13172         *) dflt='y';;
13173         esac
13174         cat <<'EOM'
13175  
13176 Perl can only use a vfork() that doesn't suffer from strict
13177 restrictions on calling functions or modifying global data in
13178 the child.  For example, glibc-2.1 contains such a vfork()
13179 that is unsuitable.  If your system provides a proper fork()
13180 call, chances are that you do NOT want perl to use vfork().
13181
13182 EOM
13183         rp="Do you still want to use vfork()?"
13184         . ./myread
13185         case "$ans" in
13186         y|Y) ;;
13187         *)
13188                 echo "Ok, we won't use vfork()."
13189                 val="$undef"
13190                 ;;
13191         esac
13192         ;;
13193 esac
13194 set d_vfork
13195 eval $setvar
13196 case "$d_vfork" in
13197 $define) usevfork='true';;
13198 *) usevfork='false';;
13199 esac
13200
13201 : see if this is an sysdir system
13202 set sys/dir.h i_sysdir
13203 eval $inhdr
13204
13205 : see if this is an sysndir system
13206 set sys/ndir.h i_sysndir
13207 eval $inhdr
13208
13209 : see if closedir exists
13210 set closedir d_closedir
13211 eval $inlibc
13212
13213 case "$d_closedir" in
13214 "$define")
13215         echo " "
13216         echo "Checking whether closedir() returns a status..." >&4
13217         cat > try.c <<EOM
13218 #$i_dirent I_DIRENT             /**/
13219 #$i_sysdir I_SYS_DIR            /**/
13220 #$i_sysndir I_SYS_NDIR          /**/
13221 #$i_systypes I_SYS_TYPES        /**/
13222
13223 #if defined(I_SYS_TYPES)
13224 #include <sys/types.h>
13225 #endif
13226 #if defined(I_DIRENT)
13227 #include <dirent.h>
13228 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13229 #include <sys/dir.h>
13230 #endif
13231 #else
13232 #ifdef I_SYS_NDIR
13233 #include <sys/ndir.h>
13234 #else
13235 #ifdef I_SYS_DIR
13236 #ifdef hp9000s500
13237 #include <ndir.h>       /* may be wrong in the future */
13238 #else
13239 #include <sys/dir.h>
13240 #endif
13241 #endif
13242 #endif
13243 #endif 
13244 int main() { return closedir(opendir(".")); }
13245 EOM
13246         set try
13247         if eval $compile_ok; then
13248                 if $run ./try > /dev/null 2>&1 ; then
13249                         echo "Yes, it does."
13250                         val="$undef"
13251                 else
13252                         echo "No, it doesn't."
13253                         val="$define"
13254                 fi
13255         else
13256                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13257                 val="$define"
13258         fi
13259         ;;
13260 *)
13261         val="$undef";
13262         ;;
13263 esac
13264 set d_void_closedir
13265 eval $setvar
13266 $rm -f try try.*
13267 : see if there is a wait4
13268 set wait4 d_wait4
13269 eval $inlibc
13270
13271 : see if waitpid exists
13272 set waitpid d_waitpid
13273 eval $inlibc
13274
13275 : see if wcstombs exists
13276 set wcstombs d_wcstombs
13277 eval $inlibc
13278
13279 : see if wctomb exists
13280 set wctomb d_wctomb
13281 eval $inlibc
13282
13283 : see if writev exists
13284 set writev d_writev
13285 eval $inlibc
13286
13287 : preserve RCS keywords in files with variable substitution, grrr
13288 Date='$Date'
13289 Id='$Id'
13290 Log='$Log'
13291 RCSfile='$RCSfile'
13292 Revision='$Revision'
13293
13294 : check for alignment requirements
13295 echo " "
13296 case "$usecrosscompile$multiarch" in
13297 *$define*)
13298         $cat <<EOM
13299 You seem to be either cross-compiling or doing a multiarchitecture build,
13300 skipping the memory alignment check.
13301
13302 EOM
13303         case "$alignbytes" in
13304         '') alignbytes=8 ;;
13305         esac
13306         ;;
13307 *)
13308         case "$alignbytes" in
13309         '') echo "Checking alignment constraints..." >&4
13310                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13311                         $cat >try.c <<'EOCP'
13312 typedef long double NV;
13313 EOCP
13314                 else
13315                         $cat >try.c <<'EOCP'
13316 typedef double NV;
13317 EOCP
13318                 fi
13319                 $cat >>try.c <<'EOCP'
13320 #include <stdio.h>
13321 struct foobar {
13322         char foo;
13323         NV bar;
13324 } try_algn;
13325 int main()
13326 {
13327     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13328     return(0);
13329 }
13330 EOCP
13331                 set try
13332                 if eval $compile_ok; then
13333                         dflt=`$run ./try`
13334                 else
13335                         dflt='8'
13336                         echo "(I can't seem to compile the test program...)"
13337                 fi
13338                 ;;
13339         *) dflt="$alignbytes"
13340                 ;;
13341         esac
13342         rp="Doubles must be aligned on a how-many-byte boundary?"
13343         . ./myread
13344         alignbytes="$ans"
13345         $rm -f try.c try
13346         ;;
13347 esac
13348
13349
13350 : set the base revision
13351 baserev=5.0
13352
13353 : how do we catenate cpp tokens here?
13354 echo " "
13355 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13356 $cat >cpp_stuff.c <<'EOCP'
13357 #define RCAT(a,b)a/**/b
13358 #define ACAT(a,b)a ## b
13359 RCAT(Rei,ser)
13360 ACAT(Cir,cus)
13361 EOCP
13362 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13363 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13364         echo "Oh!  Smells like ANSI's been here." >&4
13365         echo "We can catify or stringify, separately or together!"
13366         cpp_stuff=42
13367 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13368         echo "Ah, yes!  The good old days!" >&4
13369         echo "However, in the good old days we don't know how to stringify and"
13370         echo "catify at the same time."
13371         cpp_stuff=1
13372 else
13373         $cat >&4 <<EOM
13374 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
13375 to have to edit the values of CAT[2-5] in config.h...
13376 EOM
13377         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13378 fi
13379 $rm -f cpp_stuff.*
13380
13381 : see if this is a db.h system
13382 set db.h i_db
13383 eval $inhdr
13384
13385 case "$i_db" in
13386 $define)
13387         : Check db version.
13388         echo " "
13389         echo "Checking Berkeley DB version ..." >&4
13390         $cat >try.c <<EOCP
13391 #$d_const HASCONST
13392 #ifndef HASCONST
13393 #define const
13394 #endif
13395 #include <sys/types.h>
13396 #include <stdio.h>
13397 #include <db.h>
13398 int main(int argc, char *argv[])
13399 {
13400 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13401     int Major, Minor, Patch ;
13402     unsigned long Version ;
13403     (void)db_version(&Major, &Minor, &Patch) ;
13404     if (argc == 2) {
13405         printf("%d %d %d %d %d %d\n",
13406                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13407                Major, Minor, Patch);
13408         exit(0);
13409     }
13410     printf("You have Berkeley DB Version 2 or greater.\n");
13411
13412     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13413                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13414     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13415                 Major, Minor, Patch) ;
13416
13417     /* check that db.h & libdb are compatible */
13418     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13419         printf("db.h and libdb are incompatible.\n") ;
13420         exit(3);        
13421     }
13422
13423     printf("db.h and libdb are compatible.\n") ;
13424
13425     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13426                 + DB_VERSION_PATCH ;
13427
13428     /* needs to be >= 2.3.4 */
13429     if (Version < 2003004) {
13430     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13431         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13432         exit(2);        
13433     }
13434
13435     exit(0);
13436 #else
13437 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13438     if (argc == 2) {
13439         printf("1 0 0\n");
13440         exit(0);
13441     }
13442     printf("You have Berkeley DB Version 1.\n");
13443     exit(0);    /* DB version < 2: the coast is clear. */
13444 #else
13445     exit(1);    /* <db.h> not Berkeley DB? */
13446 #endif
13447 #endif
13448 }
13449 EOCP
13450         set try
13451         if eval $compile_ok && $run ./try; then
13452                 echo 'Looks OK.' >&4
13453                 set `$run ./try 1`
13454                 db_version_major=$1
13455                 db_version_minor=$2
13456                 db_version_patch=$3
13457         else
13458                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
13459                 i_db=$undef
13460                 case " $libs " in
13461                 *"-ldb "*)
13462                         : Remove db from list of libraries to use
13463                         echo "Removing unusable -ldb from library list" >&4
13464                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13465                         shift
13466                         libs="$*"
13467                         echo "libs = $libs" >&4
13468                         ;;
13469                 esac
13470         fi
13471         $rm -f try.*
13472         ;;
13473 esac
13474
13475 case "$i_db" in
13476 define)
13477         : Check the return type needed for hash 
13478         echo " "
13479         echo "Checking return type needed for hash for Berkeley DB ..." >&4
13480         $cat >try.c <<EOCP
13481 #$d_const HASCONST
13482 #ifndef HASCONST
13483 #define const
13484 #endif
13485 #include <sys/types.h>
13486 #include <db.h>
13487
13488 #ifndef DB_VERSION_MAJOR
13489 u_int32_t hash_cb (ptr, size)
13490 const void *ptr;
13491 size_t size;
13492 {
13493 }
13494 HASHINFO info;
13495 int main()
13496 {
13497         info.hash = hash_cb;
13498 }
13499 #endif
13500 EOCP
13501         if $cc $ccflags -c try.c >try.out 2>&1 ; then
13502                 if $contains warning try.out >>/dev/null 2>&1 ; then
13503                         db_hashtype='int'
13504                 else
13505                         db_hashtype='u_int32_t'
13506                 fi
13507         else
13508                 : XXX Maybe we should just give up here.
13509                 db_hashtype=u_int32_t
13510                 $cat try.out >&4
13511                 echo "Help:  I can't seem to compile the db test program." >&4
13512                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13513         fi
13514         $rm -f try.*
13515         echo "Your version of Berkeley DB uses $db_hashtype for hash."
13516         ;;
13517 *)      db_hashtype=u_int32_t
13518         ;;
13519 esac
13520 case "$i_db" in
13521 define)
13522         : Check the return type needed for prefix 
13523         echo " "
13524         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13525         cat >try.c <<EOCP
13526 #$d_const HASCONST
13527 #ifndef HASCONST
13528 #define const
13529 #endif
13530 #include <sys/types.h>
13531 #include <db.h>
13532
13533 #ifndef DB_VERSION_MAJOR
13534 size_t prefix_cb (key1, key2)
13535 const DBT *key1;
13536 const DBT *key2;
13537 {
13538 }
13539 BTREEINFO info;
13540 int main()
13541 {
13542         info.prefix = prefix_cb;
13543 }
13544 #endif
13545 EOCP
13546         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
13547                 if $contains warning try.out >>/dev/null 2>&1 ; then
13548                         db_prefixtype='int'
13549                 else
13550                         db_prefixtype='size_t'
13551                 fi
13552         else
13553                 db_prefixtype='size_t'
13554                 : XXX Maybe we should just give up here.
13555                 $cat try.out >&4
13556                 echo "Help:  I can't seem to compile the db test program." >&4
13557                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13558         fi
13559         $rm -f try.*
13560         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13561         ;;
13562 *)      db_prefixtype='size_t'
13563         ;;
13564 esac
13565
13566
13567 : How can we generate normalized random numbers ?
13568 echo " "
13569 echo "Looking for a random number function..." >&4
13570 case "$randfunc" in
13571 '')
13572         if set drand48 val -f; eval $csym; $val; then
13573                 dflt="drand48"
13574                 echo "Good, found drand48()." >&4
13575         elif set random val -f; eval $csym; $val; then
13576                 dflt="random"
13577                 echo "OK, found random()." >&4
13578         else
13579                 dflt="rand"
13580                 echo "Yick, looks like I have to use rand()." >&4
13581         fi
13582         echo " "
13583         ;;
13584 *)
13585         dflt="$randfunc"
13586         ;;
13587 esac
13588 cont=true
13589
13590 case "$ccflags" in
13591 *-Dmy_rand=*|*-Dmy_srand=*)
13592         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13593         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13594         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13595         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13596         ;;
13597 esac
13598
13599 while $test "$cont"; do
13600         rp="Use which function to generate random numbers?"
13601         . ./myread
13602         if $test "$ans" = "$dflt"; then
13603                 : null
13604         else
13605                 randbits=''
13606         fi
13607         randfunc="$ans"
13608         if set $ans val -f; eval $csym; $val; then
13609                 cont=''
13610         else
13611                 dflt=y
13612                 rp="I cannot find function $ans. Use that name anyway?"
13613                 . ./myread
13614                 dflt=rand
13615                 case "$ans" in
13616                         [yY]*) cont='';;
13617                 esac
13618         fi
13619         case "$cont" in
13620         '')
13621                 case "$randfunc" in
13622                 drand48)
13623                         drand01="drand48()"
13624                         seedfunc="srand48"
13625                         randbits=48
13626                         randseedtype=long
13627                         ;;
13628                 rand|random)
13629                         case "$randbits" in
13630                         '')
13631 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13632                                 $cat >try.c <<EOCP
13633 #$i_unistd I_UNISTD
13634 #$i_stdlib I_STDLIB
13635 #include <stdio.h>
13636 #ifdef I_UNISTD
13637 #  include <unistd.h>
13638 #endif
13639 #ifdef I_STDLIB
13640 #  include <stdlib.h>
13641 #endif
13642 int main()
13643 {
13644         register int i;
13645         register unsigned long tmp;
13646         register unsigned long max = 0L;
13647
13648         for (i = 1000; i; i--) {
13649                 tmp = (unsigned long) $randfunc();
13650                 if (tmp > max) max = tmp;
13651         }
13652         for (i = 0; max; i++)
13653                 max /= 2;
13654         printf("%d\n",i);
13655 }
13656 EOCP
13657                                 set try
13658                                 if eval $compile_ok; then
13659                                         dflt=`try`
13660                                 else
13661                                         dflt='?'
13662                                         echo "(I can't seem to compile the test program...)"
13663                                 fi
13664                                 ;;
13665                         *)
13666                                 dflt="$randbits"
13667                                 ;;
13668                         esac
13669                         rp="How many bits does your $randfunc() function produce?"
13670                         . ./myread
13671                         randbits="$ans"
13672                         $rm -f try.c try
13673                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13674                         seedfunc="s$randfunc"
13675                         randseedtype=unsigned
13676                         ;;
13677                 *)
13678                         dflt="31"
13679                         rp="How many bits does your $randfunc() function produce?"
13680                         . ./myread
13681                         randbits="$ans"
13682                         seedfunc="s$randfunc"
13683                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13684                         if set $seedfunc val -f; eval $csym; $val; then
13685                                 echo "(Using $seedfunc() to seed random generator)"
13686                         else
13687                                 echo "(Warning: no $seedfunc() to seed random generator)"
13688                                 seedfunc=rand
13689                         fi
13690                         randseedtype=unsigned
13691                         ;;
13692                 esac
13693                 ;;
13694         esac
13695 done
13696
13697 echo " "
13698 echo "Determining whether or not we are on an EBCDIC system..." >&4
13699 $cat >try.c <<'EOM'
13700 int main()
13701 {
13702   if ('M'==0xd4) return 0;
13703   return 1;
13704 }
13705 EOM
13706
13707 val=$undef
13708 set try
13709 if eval $compile_ok; then
13710         if $run ./try; then
13711                 echo "You seem to speak EBCDIC." >&4
13712                 val="$define"
13713         else
13714                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13715         fi
13716 else
13717         echo "I'm unable to compile the test program." >&4
13718         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13719 fi
13720 $rm -f try try.*
13721 set ebcdic
13722 eval $setvar
13723
13724 echo " "
13725 $cat >&4 <<EOM
13726 Checking how to flush all pending stdio output...
13727 EOM
13728 # I only know how to find the first 32 possibly open files on SunOS.
13729 # See also hints/sunos_4_1.sh and util.c  --AD
13730 case "$osname" in
13731 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13732 esac
13733 $cat >>try.c <<EOCP
13734 #include <stdio.h>
13735 #$i_unistd I_UNISTD
13736 #ifdef I_UNISTD
13737 # include <unistd.h>
13738 #endif
13739 #$d_sysconf HAS_SYSCONF
13740 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13741 #ifdef HAS_STDIO_STREAM_ARRAY
13742 # define STDIO_STREAM_ARRAY $stdio_stream_array
13743 #endif
13744 int main() {
13745   FILE* p;
13746   unlink("try.out");
13747   p = fopen("try.out", "w");
13748 #ifdef TRY_FPUTC
13749   fputc('x', p);
13750 #else
13751 # ifdef TRY_FPRINTF
13752   fprintf(p, "x");
13753 # endif
13754 #endif
13755 #ifdef TRY_FFLUSH_NULL
13756   fflush(NULL);
13757 #endif
13758 #ifdef TRY_FFLUSH_ALL
13759   {
13760     long open_max = -1;
13761 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13762     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13763 # else
13764 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13765     open_max = sysconf(_SC_OPEN_MAX);
13766 #  else
13767 #   ifdef FOPEN_MAX
13768     open_max = FOPEN_MAX;
13769 #   else
13770 #    ifdef OPEN_MAX
13771     open_max = OPEN_MAX;
13772 #    else
13773 #     ifdef _NFILE
13774     open_max = _NFILE;
13775 #     endif
13776 #    endif
13777 #   endif
13778 #  endif
13779 # endif 
13780 # ifdef HAS_STDIO_STREAM_ARRAY
13781     if (open_max > 0) {
13782       long i;
13783       for (i = 0; i < open_max; i++)
13784             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13785                 STDIO_STREAM_ARRAY[i]._file < open_max &&
13786                 STDIO_STREAM_ARRAY[i]._flag)
13787                 fflush(&STDIO_STREAM_ARRAY[i]);
13788     }   
13789   }
13790 # endif
13791 #endif
13792   _exit(42);
13793 }
13794 EOCP
13795 : first we have to find out how _not_ to flush
13796 $to try.c
13797 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13798     output=''
13799     set try -DTRY_FPUTC
13800     if eval $compile; then
13801             $rm -f try.out
13802             $run ./try 2>/dev/null
13803             code="$?"
13804             $from try.out
13805             if $test ! -s try.out -a "X$code" = X42; then
13806                 output=-DTRY_FPUTC
13807             fi
13808     fi
13809     case "$output" in
13810     '')
13811             set try -DTRY_FPRINTF
13812             if eval $compile; then
13813                     $rm -f try.out
13814                     $run ./try 2>/dev/null
13815                     code="$?"
13816                     $from try.out
13817                     if $test ! -s try.out -a "X$code" = X42; then
13818                         output=-DTRY_FPRINTF
13819                     fi
13820             fi
13821         ;;
13822     esac
13823 fi
13824 : check for fflush NULL behaviour
13825 case "$fflushNULL" in
13826 '')     set try -DTRY_FFLUSH_NULL $output
13827         if eval $compile; then
13828                 $rm -f try.out
13829                 $run ./try 2>/dev/null
13830                 code="$?"
13831                 $from try.out
13832                 if $test -s try.out -a "X$code" = X42; then
13833                         fflushNULL="`$cat try.out`"
13834                 else
13835                         if $test "X$code" != X42; then
13836                                 $cat >&4 <<EOM
13837 (If this test failed, don't worry, we'll try another method shortly.)
13838 EOM
13839                         fi
13840                 fi
13841         fi
13842         $rm -f core try.core core.try.*
13843         case "$fflushNULL" in
13844         x)      $cat >&4 <<EOM
13845 Your fflush(NULL) works okay for output streams.
13846 Let's see if it clobbers input pipes...
13847 EOM
13848 # As of mid-March 2000 all versions of Solaris appear to have a stdio
13849 # bug that improperly flushes the input end of pipes.  So we avoid the
13850 # autoflush on fork/system/exec support for now. :-(
13851 $cat >tryp.c <<EOCP
13852 #include <stdio.h>
13853 int
13854 main(int argc, char **argv)
13855 {
13856     char buf[1024];
13857     int i;
13858     char *bp = buf;
13859     while (1) {
13860         while ((i = getc(stdin)) != -1
13861                && (*bp++ = i) != '\n'
13862                && bp < &buf[1024])
13863         /* DO NOTHING */ ;
13864         *bp = '\0';
13865         fprintf(stdout, "%s", buf);
13866         fflush(NULL);
13867         if (i == -1)
13868             return 0;
13869         bp = buf;
13870     }
13871 }
13872 EOCP
13873                 fflushNULL="$define"
13874                 set tryp
13875                 if eval $compile; then
13876                     $rm -f tryp.out
13877                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
13878                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
13879                        $cat >&4 <<EOM
13880 fflush(NULL) seems to behave okay with input streams.
13881 EOM
13882                         fflushNULL="$define"
13883                     else
13884                         $cat >&4 <<EOM
13885 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
13886 EOM
13887                         fflushNULL="$undef"
13888                     fi
13889                 fi
13890                 $rm -f core tryp.c tryp.core core.tryp.*
13891                 ;;
13892         '')     $cat >&4 <<EOM
13893 Your fflush(NULL) isn't working (contrary to ANSI C).
13894 EOM
13895                 fflushNULL="$undef"
13896                 ;;
13897         *)      $cat >&4 <<EOM
13898 Cannot figure out whether your fflush(NULL) works or not.
13899 I'm assuming it doesn't (contrary to ANSI C).
13900 EOM
13901                 fflushNULL="$undef"
13902                 ;;
13903         esac
13904         ;;
13905 $define|true|[yY]*)
13906         fflushNULL="$define"
13907         ;;
13908 *)
13909         fflushNULL="$undef"
13910         ;;
13911 esac
13912 : check explicit looping only if NULL did not work, and if the pipe
13913 : bug does not show up on an explicit flush too
13914 case "$fflushNULL" in
13915 "$undef")
13916         $cat >tryp.c <<EOCP
13917 #include <stdio.h>
13918 int
13919 main(int argc, char **argv)
13920 {
13921     char buf[1024];
13922     int i;
13923     char *bp = buf;
13924     while (1) {
13925         while ((i = getc(stdin)) != -1
13926                && (*bp++ = i) != '\n'
13927                && bp < &buf[1024])
13928         /* DO NOTHING */ ;
13929         *bp = '\0';
13930         fprintf(stdout, "%s", buf);
13931         fflush(stdin);
13932         if (i == -1)
13933             return 0;
13934         bp = buf;
13935     }
13936 }
13937 EOCP
13938         set tryp
13939         if eval $compile; then
13940             $rm -f tryp.out
13941             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
13942             if cmp tryp.c tryp.out >/dev/null 2>&1; then
13943                $cat >&4 <<EOM
13944 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
13945 EOM
13946                 : now check for fflushall behaviour
13947                 case "$fflushall" in
13948                 '')     set try -DTRY_FFLUSH_ALL $output
13949                         if eval $compile; then
13950                                 $cat >&4 <<EOM
13951 (Now testing the other method--but note that this also may fail.)
13952 EOM
13953                                 $rm -f try.out
13954                                 $run ./try 2>/dev/null
13955                                 code=$?
13956                                 $from try.out
13957                                 if $test -s try.out -a "X$code" = X42; then
13958                                         fflushall="`$cat try.out`"
13959                                 fi
13960                         fi
13961                         $rm -f core try.core core.try.*
13962                         case "$fflushall" in
13963                         x)      $cat >&4 <<EOM
13964 Whew. Flushing explicitly all the stdio streams works.
13965 EOM
13966                                 fflushall="$define"
13967                                 ;;
13968                         '')     $cat >&4 <<EOM
13969 Sigh. Flushing explicitly all the stdio streams doesn't work.
13970 EOM
13971                                 fflushall="$undef"
13972                                 ;;
13973                         *)      $cat >&4 <<EOM
13974 Cannot figure out whether flushing stdio streams explicitly works or not.
13975 I'm assuming it doesn't.
13976 EOM
13977                                 fflushall="$undef"
13978                                 ;;
13979                         esac
13980                         ;;
13981                 "$define"|true|[yY]*)
13982                         fflushall="$define"
13983                         ;;
13984                 *)
13985                         fflushall="$undef"
13986                         ;;
13987                 esac
13988             else
13989                 $cat >&4 <<EOM
13990 All is futile.  Even fflush(stdin) clobbers input pipes!
13991 EOM
13992                 fflushall="$undef"
13993             fi
13994         else
13995             fflushall="$undef"
13996         fi
13997         $rm -f core tryp.c tryp.core core.tryp.*
13998         ;;
13999 *)      fflushall="$undef"
14000         ;;
14001 esac
14002
14003 case "$fflushNULL$fflushall" in
14004 undefundef)
14005         $cat <<EOM
14006 OK, I give up.  I cannot figure out how to flush pending stdio output.
14007 We won't be flushing handles at all before fork/exec/popen.
14008 EOM
14009         ;;
14010 esac
14011 $rm -f try.* try$exe_ext
14012
14013 : Store the full pathname to the ar program for use in the C program
14014 : Respect a hint or command line value for full_ar.
14015 case "$full_ar" in
14016 '') full_ar=$ar ;;
14017 esac
14018
14019 : Store the full pathname to the sed program for use in the C program
14020 full_sed=$sed
14021
14022 : see what type gids are declared as in the kernel
14023 echo " "
14024 echo "Looking for the type for group ids returned by getgid()."
14025 set gid_t gidtype xxx stdio.h sys/types.h
14026 eval $typedef
14027 case "$gidtype" in
14028 xxx)
14029         xxx=`./findhdr sys/user.h`
14030         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14031         case $1 in
14032         unsigned) dflt="$1 $2" ;;
14033         *) dflt="$1" ;;
14034         esac
14035         ;;
14036 *) dflt="$gidtype";;
14037 esac
14038 case "$gidtype" in
14039 gid_t) echo "gid_t found." ;;
14040 *)      rp="What is the type for group ids returned by getgid()?"
14041         . ./myread
14042         gidtype="$ans"
14043         ;;
14044 esac
14045
14046 echo " "
14047 case "$gidtype" in
14048 *_t) zzz="$gidtype"     ;;
14049 *)   zzz="gid"          ;;
14050 esac
14051 echo "Checking the size of $zzz..." >&4 
14052 cat > try.c <<EOCP
14053 #include <sys/types.h>
14054 #include <stdio.h>
14055 int main() {
14056     printf("%d\n", (int)sizeof($gidtype));
14057     exit(0);
14058 }
14059 EOCP
14060 set try
14061 if eval $compile_ok; then
14062         yyy=`$run ./try`
14063         case "$yyy" in
14064         '')     gidsize=4
14065                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14066                 ;;
14067         *)      gidsize=$yyy
14068                 echo "Your $zzz is $gidsize bytes long."
14069                 ;;
14070         esac
14071 else
14072         gidsize=4
14073         echo "(I can't compile the test program--guessing $gidsize.)" >&4
14074 fi
14075
14076
14077 echo " "
14078 case "$gidtype" in
14079 *_t) zzz="$gidtype"     ;;
14080 *)   zzz="gid"          ;;
14081 esac
14082 echo "Checking the sign of $zzz..." >&4 
14083 cat > try.c <<EOCP
14084 #include <sys/types.h>
14085 #include <stdio.h>
14086 int main() {
14087         $gidtype foo = -1;
14088         if (foo < 0)
14089                 printf("-1\n");
14090         else
14091                 printf("1\n");
14092 }
14093 EOCP
14094 set try
14095 if eval $compile; then
14096         yyy=`$run ./try`
14097         case "$yyy" in
14098         '')     gidsign=1
14099                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14100                 ;;
14101         *)      gidsign=$yyy
14102                 case "$gidsign" in
14103                  1) echo "Your $zzz is unsigned." ;;
14104                 -1) echo "Your $zzz is signed."   ;;
14105                 esac
14106                 ;;
14107         esac
14108 else
14109         gidsign=1
14110         echo "(I can't compile the test program--guessing unsigned.)" >&4
14111 fi
14112
14113
14114 echo " "
14115
14116 if $test X"$quadtype" != X; then
14117
14118 echo "Checking how to print 64-bit integers..." >&4
14119
14120 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14121         $cat >try.c <<'EOCP'
14122 #include <sys/types.h>
14123 #include <stdio.h>
14124 int main() {
14125   int q = 12345678901;
14126   printf("%ld\n", q);
14127 }
14128 EOCP
14129         set try
14130         if eval $compile; then
14131                 yyy=`$run ./try`
14132                 case "$yyy" in
14133                 12345678901)
14134                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14135                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14136                         echo "We will use %d."
14137                         ;;
14138                 esac
14139         fi
14140 fi
14141
14142 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14143         $cat >try.c <<'EOCP'
14144 #include <sys/types.h>
14145 #include <stdio.h>
14146 int main() {
14147   long q = 12345678901;
14148   printf("%ld\n", q);
14149 }
14150 EOCP
14151         set try
14152         if eval $compile; then
14153                 yyy=`$run ./try`
14154                 case "$yyy" in
14155                 12345678901)
14156                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14157                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14158                         echo "We will use %ld."
14159                         ;;
14160                 esac
14161         fi
14162 fi
14163
14164 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14165         $cat >try.c <<'EOCP'
14166 #include <sys/types.h>
14167 #include <inttypes.h>
14168 #include <stdio.h>
14169 int main() {
14170   int64_t q = 12345678901;
14171   printf("%" PRId64 "\n", q);
14172 }
14173 EOCP
14174         set try
14175         if eval $compile; then
14176                 yyy=`$run ./try`
14177                 case "$yyy" in
14178                 12345678901)
14179                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14180                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14181                         echo "We will use the C9X style."
14182                         ;;
14183                 esac
14184         fi
14185 fi
14186
14187 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14188         $cat >try.c <<EOCP
14189 #include <sys/types.h>
14190 #include <stdio.h>
14191 int main() {
14192   $quadtype q = 12345678901;
14193   printf("%Ld\n", q);
14194 }
14195 EOCP
14196         set try
14197         if eval $compile; then
14198                 yyy=`$run ./try`
14199                 case "$yyy" in
14200                 12345678901)
14201                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14202                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14203                         echo "We will use %Ld."
14204                         ;;
14205                 esac
14206         fi
14207 fi
14208
14209 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14210         $cat >try.c <<'EOCP'
14211 #include <sys/types.h>
14212 #include <stdio.h>
14213 int main() {
14214   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14215   printf("%lld\n", q);
14216 }
14217 EOCP
14218         set try
14219         if eval $compile; then
14220                 yyy=`$run ./try`
14221                 case "$yyy" in
14222                 12345678901)
14223                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14224                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14225                         echo "We will use the %lld style."
14226                         ;;
14227                 esac
14228         fi
14229 fi
14230
14231 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14232         $cat >try.c <<EOCP
14233 #include <sys/types.h>
14234 #include <stdio.h>
14235 int main() {
14236   $quadtype q = 12345678901;
14237   printf("%qd\n", q);
14238 }
14239 EOCP
14240         set try
14241         if eval $compile; then
14242                 yyy=`$run ./try`
14243                 case "$yyy" in
14244                 12345678901)
14245                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14246                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14247                         echo "We will use %qd."
14248                         ;;
14249                 esac
14250         fi
14251 fi
14252
14253 if $test X"$sPRId64" = X; then
14254         echo "Cannot figure out how to print 64-bit integers." >&4
14255 fi
14256
14257 $rm -f try try.*
14258
14259 fi
14260
14261 case "$sPRId64" in
14262 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
14263         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
14264         ;;
14265 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
14266         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
14267         ;;
14268 esac
14269
14270
14271 echo " "
14272 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14273
14274 if $test X"$ivsize" = X8; then
14275         ivdformat="$sPRId64"
14276         uvuformat="$sPRIu64"
14277         uvoformat="$sPRIo64"
14278         uvxformat="$sPRIx64"
14279         uvXUformat="$sPRIXU64"
14280 else
14281         if $test X"$ivsize" = X"$longsize"; then
14282                 ivdformat='"ld"'
14283                 uvuformat='"lu"'
14284                 uvoformat='"lo"'
14285                 uvxformat='"lx"'
14286                 uvXUformat='"lX"'
14287         else
14288                 if $test X"$ivsize" = X"$intsize"; then
14289                         ivdformat='"d"'
14290                         uvuformat='"u"'
14291                         uvoformat='"o"'
14292                         uvxformat='"x"'
14293                         uvXUformat='"X"'
14294                 else
14295                         : far out
14296                         if $test X"$ivsize" = X"$shortsize"; then
14297                                 ivdformat='"hd"'
14298                                 uvuformat='"hu"'
14299                                 uvoformat='"ho"'
14300                                 uvxformat='"hx"'
14301                                 uvXUformat='"hX"'
14302                         fi
14303                 fi
14304         fi
14305 fi
14306
14307 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14308         nveformat="$sPRIeldbl"
14309         nvfformat="$sPRIfldbl"
14310         nvgformat="$sPRIgldbl"
14311         nvEUformat="$sPRIEUldbl"
14312         nvFUformat="$sPRIFUldbl"
14313         nvGUformat="$sPRIGUldbl"
14314 else
14315         nveformat='"e"'
14316         nvfformat='"f"'
14317         nvgformat='"g"'
14318         nvEUformat='"E"'
14319         nvFUformat='"F"'
14320         nvGUformat='"G"'
14321 fi
14322
14323 case "$ivdformat" in
14324 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14325     exit 1
14326     ;;
14327 esac
14328
14329
14330 echo " "
14331 $echo "Checking the format string to be used for gids..." >&4
14332
14333 case "$gidsign" in
14334 -1)     if $test X"$gidsize" = X"$ivsize"; then
14335                 gidformat="$ivdformat"
14336         else
14337                 if $test X"$gidsize" = X"$longsize"; then
14338                         gidformat='"ld"'
14339                 else
14340                         if $test X"$gidsize" = X"$intsize"; then
14341                                 gidformat='"d"'
14342                         else
14343                                 if $test X"$gidsize" = X"$shortsize"; then
14344                                         gidformat='"hd"'
14345                                 fi
14346                         fi
14347                 fi
14348         fi
14349         ;;
14350 *)      if $test X"$gidsize" = X"$uvsize"; then
14351                 gidformat="$uvuformat"
14352         else
14353                 if $test X"$gidsize" = X"$longsize"; then
14354                         gidformat='"lu"'
14355                 else
14356                         if $test X"$gidsize" = X"$intsize"; then
14357                                 gidformat='"u"'
14358                         else
14359                                 if $test X"$gidsize" = X"$shortsize"; then
14360                                         gidformat='"hu"'
14361                                 fi
14362                         fi
14363                 fi
14364         fi
14365         ;;
14366 esac
14367
14368 : see if getgroups exists
14369 set getgroups d_getgrps
14370 eval $inlibc
14371
14372 : see if setgroups exists
14373 set setgroups d_setgrps
14374 eval $inlibc
14375
14376
14377 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14378 echo " "
14379 case "$d_getgrps$d_setgrps" in
14380 *define*)
14381         case "$groupstype" in
14382         '') dflt="$gidtype" ;;
14383         *)  dflt="$groupstype" ;;
14384         esac
14385         $cat <<EOM
14386 What type of pointer is the second argument to getgroups() and setgroups()?
14387 Usually this is the same as group ids, $gidtype, but not always.
14388
14389 EOM
14390         rp='What type pointer is the second argument to getgroups() and setgroups()?'
14391         . ./myread
14392         groupstype="$ans"
14393         ;;
14394 *)  groupstype="$gidtype";;
14395 esac
14396
14397 echo " "
14398 echo "Checking if your $make program sets \$(MAKE)..." >&4
14399 case "$make_set_make" in
14400 '')
14401         $sed 's/^X //' > testmake.mak << 'EOF'
14402 Xall:
14403 X       @echo 'maketemp="$(MAKE)"'
14404 EOF
14405         case "`$make -f testmake.mak 2>/dev/null`" in
14406         *maketemp=*) make_set_make='#' ;;
14407         *)      make_set_make="MAKE=$make" ;;
14408         esac
14409         $rm -f testmake.mak
14410         ;;
14411 esac
14412 case "$make_set_make" in
14413 '#') echo "Yup, it does.";;
14414 *) echo "Nope, it doesn't.";;
14415 esac
14416
14417 : see what type is used for mode_t
14418 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14419 set mode_t modetype int stdio.h sys/types.h
14420 eval $typedef_ask
14421
14422 : see if stdarg is available
14423 echo " "
14424 if $test `./findhdr stdarg.h`; then
14425         echo "<stdarg.h> found." >&4
14426         valstd="$define"
14427 else
14428         echo "<stdarg.h> NOT found." >&4
14429         valstd="$undef"
14430 fi
14431
14432 : see if varags is available
14433 echo " "
14434 if $test `./findhdr varargs.h`; then
14435         echo "<varargs.h> found." >&4
14436 else
14437         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14438 fi
14439
14440 : set up the varargs testing programs
14441 $cat > varargs.c <<EOP
14442 #ifdef I_STDARG
14443 #include <stdarg.h>
14444 #endif
14445 #ifdef I_VARARGS
14446 #include <varargs.h>
14447 #endif
14448
14449 #ifdef I_STDARG
14450 int f(char *p, ...)
14451 #else
14452 int f(va_alist)
14453 va_dcl
14454 #endif
14455 {
14456         va_list ap;
14457 #ifndef I_STDARG
14458         char *p;
14459 #endif
14460 #ifdef I_STDARG
14461         va_start(ap,p);
14462 #else
14463         va_start(ap);
14464         p = va_arg(ap, char *);
14465 #endif
14466         va_end(ap);
14467 }
14468 EOP
14469 $cat > varargs <<EOP
14470 $startsh
14471 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14472         echo "true"
14473 else
14474         echo "false"
14475 fi
14476 $rm -f varargs$_o
14477 EOP
14478 chmod +x varargs
14479
14480 : now check which varargs header should be included
14481 echo " "
14482 i_varhdr=''
14483 case "$valstd" in
14484 "$define")
14485         if `./varargs I_STDARG`; then
14486                 val='stdarg.h'
14487         elif `./varargs I_VARARGS`; then
14488                 val='varargs.h'
14489         fi
14490         ;;
14491 *)
14492         if `./varargs I_VARARGS`; then
14493                 val='varargs.h'
14494         fi
14495         ;;
14496 esac
14497 case "$val" in
14498 '')
14499 echo "I could not find the definition for va_dcl... You have problems..." >&4
14500         val="$undef"; set i_stdarg; eval $setvar
14501         val="$undef"; set i_varargs; eval $setvar
14502         ;;
14503 *) 
14504         set i_varhdr
14505         eval $setvar
14506         case "$i_varhdr" in
14507         stdarg.h)
14508                 val="$define"; set i_stdarg; eval $setvar
14509                 val="$undef"; set i_varargs; eval $setvar
14510                 ;;
14511         varargs.h)
14512                 val="$undef"; set i_stdarg; eval $setvar
14513                 val="$define"; set i_varargs; eval $setvar
14514                 ;;
14515         esac
14516         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14517 esac
14518 $rm -f varargs*
14519
14520 : see if we need va_copy
14521 echo " "
14522 case "$i_stdarg" in
14523 "$define")
14524         $cat >try.c <<EOCP
14525 #include <stdarg.h>
14526 #include <stdio.h>
14527 #$i_stdlib I_STDLIB
14528 #ifdef I_STDLIB
14529 #include <stdlib.h>
14530 #endif
14531 #include <signal.h>
14532
14533 int
14534 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14535 {
14536   return vfprintf(f, fmt, *valp);
14537 }
14538  
14539 int    
14540 myvfprintf(FILE *f, const  char *fmt, va_list val)
14541 {
14542   return ivfprintf(f, fmt, &val);
14543 }
14544       
14545 int
14546 myprintf(char *fmt, ...) 
14547 {
14548   va_list val;
14549   va_start(val, fmt);
14550   return myvfprintf(stdout, fmt, val); 
14551 }         
14552
14553 int
14554 main(int ac, char **av)
14555 {
14556   signal(SIGSEGV, exit);
14557
14558   myprintf("%s%cs all right, then\n", "that", '\'');                            
14559   exit(0);      
14560 }
14561 EOCP
14562         set try
14563         if eval $compile && $run ./try 2>&1 >/dev/null; then
14564                 case "`$run ./try`" in
14565                 "that's all right, then")
14566                         okay=yes
14567                         ;;
14568                 esac
14569         fi
14570         case "$okay" in
14571         yes)    echo "It seems that you don't need va_copy()." >&4
14572                 need_va_copy="$undef"
14573                 ;;
14574         *)      echo "It seems that va_copy() or similar will be needed." >&4
14575                 need_va_copy="$define"
14576                 ;;
14577         esac
14578         $rm -f try.* core core.* *.core *.core.*
14579         ;;
14580 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14581         ;;
14582 esac
14583
14584 : define a fucntion to check prototypes
14585 $cat > protochk <<EOSH
14586 $startsh
14587 cc="$cc"
14588 optimize="$optimize"
14589 ccflags="$ccflags"
14590 prototype="$prototype"
14591 define="$define"
14592 rm=$rm
14593 EOSH
14594
14595 $cat >> protochk <<'EOSH'
14596
14597 $rm -f try.c
14598 foo="$1"
14599 shift
14600 while test $# -ge 2; do
14601         case "$1" in
14602                 $define) echo "#include <$2>" >> try.c ;;
14603                 literal) echo "$2" >> try.c ;;
14604         esac
14605     shift 2
14606 done
14607 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
14608 cat >> try.c <<'EOCP'
14609 #ifdef CAN_PROTOTYPE
14610 #define _(args) args
14611 #else
14612 #define _(args) ()
14613 #endif
14614 EOCP
14615 echo "$foo" >> try.c
14616 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14617 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14618 status=$?
14619 $rm -f try.[co]
14620 exit $status
14621 EOSH
14622 chmod +x protochk
14623 $eunicefix protochk
14624
14625 : see what type is used for size_t
14626 rp="What is the type used for the length parameter for string functions?"
14627 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14628 eval $typedef_ask
14629
14630 : check for type of arguments to gethostbyaddr. 
14631 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14632         case "$d_gethbyaddr" in
14633         $define)
14634                 $cat <<EOM
14635
14636 Checking to see what type of arguments are accepted by gethostbyaddr().
14637 EOM
14638                 hdrs="$define sys/types.h
14639                         $d_socket sys/socket.h 
14640                         $i_niin netinet/in.h 
14641                         $i_netdb netdb.h
14642                         $i_unistd unistd.h"
14643                 : The first arg can 'char *' or 'void *'
14644                 : The second arg is some of integral type
14645                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14646                         for yyy in size_t long int; do
14647                                 case "$netdb_host_type" in
14648                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14649                                         if ./protochk "$try" $hdrs; then
14650                                                 echo "Your system accepts $xxx for the first arg."
14651                                                 echo "...and $yyy for the second arg."
14652                                                 netdb_host_type="$xxx"
14653                                                 netdb_hlen_type="$yyy"
14654                                         fi
14655                                         ;;
14656                                 esac
14657                         done
14658                 done
14659                 : In case none of those worked, prompt the user.
14660                 case "$netdb_host_type" in
14661                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
14662                         dflt='char *'
14663                         . ./myread
14664                         netdb_host_type=$ans
14665                         rp='What is the type for the 2nd argument to gethostbyaddr?'
14666                         dflt="$sizetype"
14667                         . ./myread
14668                         netdb_hlen_type=$ans
14669                         ;;
14670                 esac
14671                 ;;
14672         *)      : no gethostbyaddr, so pick harmless defaults
14673                 netdb_host_type='char *'
14674                 netdb_hlen_type="$sizetype"
14675                 ;;
14676         esac
14677         # Remove the "const" if needed. -- but then we'll have a 
14678         # prototype clash!
14679         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14680 fi
14681
14682 : check for type of argument to gethostbyname. 
14683 if test "X$netdb_name_type" = X ; then
14684         case "$d_gethbyname" in
14685         $define)
14686                 $cat <<EOM
14687
14688 Checking to see what type of argument is accepted by gethostbyname().
14689 EOM
14690                 hdrs="$define sys/types.h
14691                         $d_socket sys/socket.h 
14692                         $i_niin netinet/in.h 
14693                         $i_netdb netdb.h
14694                         $i_unistd unistd.h"
14695                 for xxx in "const char *" "char *"; do
14696                         case "$netdb_name_type" in
14697                         '')     try="extern struct hostent *gethostbyname($xxx);"
14698                                 if ./protochk "$try" $hdrs; then
14699                                         echo "Your system accepts $xxx."
14700                                         netdb_name_type="$xxx"
14701                                 fi
14702                                 ;;
14703                         esac
14704                 done
14705                 : In case none of those worked, prompt the user.
14706                 case "$netdb_name_type" in
14707                 '')     rp='What is the type for the 1st argument to gethostbyname?'
14708                         dflt='char *'
14709                         . ./myread
14710                         netdb_name_type=$ans
14711                         ;;
14712                 esac
14713                 ;;
14714         *)      : no gethostbyname, so pick harmless default
14715                 netdb_name_type='char *'
14716                 ;;
14717         esac
14718 fi
14719
14720 : check for type of 1st argument to getnetbyaddr. 
14721 if test "X$netdb_net_type" = X ; then
14722         case "$d_getnbyaddr" in
14723         $define)
14724                 $cat <<EOM
14725
14726 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14727 EOM
14728                 hdrs="$define sys/types.h
14729                         $d_socket sys/socket.h 
14730                         $i_niin netinet/in.h 
14731                         $i_netdb netdb.h
14732                         $i_unistd unistd.h"
14733                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14734                         case "$netdb_net_type" in
14735                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
14736                                 if ./protochk "$try" $hdrs; then
14737                                         echo "Your system accepts $xxx."
14738                                         netdb_net_type="$xxx"
14739                                 fi
14740                                 ;;
14741                         esac
14742                 done
14743                 : In case none of those worked, prompt the user.
14744                 case "$netdb_net_type" in
14745                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
14746                         dflt='long'
14747                         . ./myread
14748                         netdb_net_type=$ans
14749                         ;;
14750                 esac
14751                 ;;
14752         *)      : no getnetbyaddr, so pick harmless default
14753                 netdb_net_type='long'
14754                 ;;
14755         esac
14756 fi
14757 : locate the preferred pager for this system
14758 case "$pager" in
14759 '')
14760         dflt=''
14761         case "$pg" in
14762         /*) dflt=$pg;;
14763         [a-zA-Z]:/*) dflt=$pg;;
14764         esac
14765         case "$more" in
14766         /*) dflt=$more;;
14767         [a-zA-Z]:/*) dflt=$more;;
14768         esac
14769         case "$less" in
14770         /*) dflt=$less;;
14771         [a-zA-Z]:/*) dflt=$less;;
14772         esac
14773         case "$dflt" in
14774         '') dflt=/usr/ucb/more;;
14775         esac
14776         ;;
14777 *) dflt="$pager";;
14778 esac
14779 echo " "
14780 fn=f/
14781 rp='What pager is used on your system?'
14782 . ./getfile
14783 pager="$ans"
14784
14785 : see what type pids are declared as in the kernel
14786 rp="What is the type of process ids on this system?"
14787 set pid_t pidtype int stdio.h sys/types.h
14788 eval $typedef_ask
14789
14790 : Find earliest binary compatible site_perl subdirectory perl can use.
14791 case "$bincompat5005" in
14792 "$define") xs_apiversion='5.005' ;;
14793 *) xs_apiversion=$version ;;   # The current site_perl version.
14794 esac
14795 : Find earliest pure perl site_perl subdirectory perl can use.
14796 : The versioned directories started at 5.005.
14797 pm_apiversion='5.005'
14798
14799 : see if ar generates random libraries by itself
14800 echo " "
14801 echo "Checking how to generate random libraries on your machine..." >&4
14802 echo 'int bar1() { return bar2(); }' > bar1.c
14803 echo 'int bar2() { return 2; }' > bar2.c
14804 $cat > foo.c <<'EOP'
14805 int main() { printf("%d\n", bar1()); exit(0); }
14806 EOP
14807 $cc $ccflags -c bar1.c >/dev/null 2>&1
14808 $cc $ccflags -c bar2.c >/dev/null 2>&1
14809 $cc $ccflags -c foo.c >/dev/null 2>&1
14810 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14811 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14812         $run ./foobar >/dev/null 2>&1; then
14813         echo "$ar appears to generate random libraries itself."
14814         orderlib=false
14815         ranlib=":"
14816 elif $ar ts bar$_a >/dev/null 2>&1 &&
14817         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14818         $run ./foobar >/dev/null 2>&1; then
14819                 echo "a table of contents needs to be added with '$ar ts'."
14820                 orderlib=false
14821                 ranlib="$ar ts"
14822 else
14823         case "$ranlib" in
14824         :) ranlib='';;
14825         '')
14826                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14827                 $test -f $ranlib || ranlib=''
14828                 ;;
14829         esac
14830         if $test -n "$ranlib"; then
14831                 echo "your system has '$ranlib'; we'll use that."
14832                 orderlib=false
14833         else
14834                 echo "your system doesn't seem to support random libraries"
14835                 echo "so we'll use lorder and tsort to order the libraries."
14836                 orderlib=true
14837                 ranlib=":"
14838         fi
14839 fi
14840 $rm -f foo* bar* 
14841
14842 : check for type of arguments to select. 
14843 case "$selecttype" in
14844 '') case "$d_select" in
14845         $define)
14846                 echo " "
14847                 $cat <<EOM
14848 Checking to see what type of arguments are accepted by select().
14849 EOM
14850                 hdrs="$define sys/types.h
14851                         $i_systime sys/time.h 
14852                         $i_sysselct sys/select.h
14853                         $d_socket sys/socket.h"
14854                 : The first arg can be int, unsigned, or size_t
14855                 : The last arg may or may not be 'const'
14856                 val=''
14857                 : void pointer has been seen but using that
14858                 : breaks the selectminbits test
14859                 for xxx in 'fd_set *' 'int *'; do
14860                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14861                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
14862                                         case "$val" in
14863                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14864                                                 if ./protochk "$try" $hdrs; then
14865                                                         echo "Your system accepts $xxx."
14866                                                         val="$xxx"
14867                                                 fi
14868                                                 ;;
14869                                         esac
14870                                 done
14871                         done
14872                 done
14873                 case "$val" in
14874                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14875                         case "$d_fd_set" in
14876                                 $define) dflt="fd_set *" ;;
14877                                 *)              dflt="int *" ;;
14878                         esac
14879                         . ./myread
14880                         val=$ans
14881                         ;;
14882                 esac
14883                 selecttype="$val"
14884                 ;;
14885         *)      : no select, so pick a harmless default
14886                 selecttype='int *'
14887                 ;;
14888         esac
14889         ;;
14890 esac
14891
14892 : check for the select 'width'
14893 case "$selectminbits" in
14894 '') case "$d_select" in
14895         $define)
14896                 $cat <<EOM
14897
14898 Checking to see on how many bits at a time your select() operates...
14899 EOM
14900                 $cat >try.c <<EOCP
14901 #include <sys/types.h>
14902 #$i_time I_TIME
14903 #$i_systime I_SYS_TIME
14904 #$i_systimek I_SYS_TIME_KERNEL
14905 #ifdef I_TIME
14906 #   include <time.h>
14907 #endif
14908 #ifdef I_SYS_TIME
14909 #   ifdef I_SYS_TIME_KERNEL
14910 #       define KERNEL
14911 #   endif
14912 #   include <sys/time.h>
14913 #   ifdef I_SYS_TIME_KERNEL
14914 #       undef KERNEL
14915 #   endif
14916 #endif
14917 #$i_sysselct I_SYS_SELECT
14918 #ifdef I_SYS_SELECT
14919 #include <sys/select.h>
14920 #endif
14921 #$d_socket HAS_SOCKET
14922 #ifdef HAS_SOCKET
14923 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
14924 #endif
14925 #include <stdio.h>
14926 $selecttype b;
14927 #define S sizeof(*(b))
14928 #define MINBITS 64
14929 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
14930 #define NBITS  (NBYTES * 8)
14931 int main() {
14932     char s[NBYTES];
14933     struct timeval t;
14934     int i;
14935     FILE* fp;
14936     int fd;
14937
14938     fclose(stdin);
14939     fp = fopen("try.c", "r");
14940     if (fp == 0)
14941       exit(1);
14942     fd = fileno(fp);
14943     if (fd < 0)
14944       exit(2);
14945     b = ($selecttype)s;
14946     for (i = 0; i < NBITS; i++)
14947         FD_SET(i, b);
14948     t.tv_sec  = 0;
14949     t.tv_usec = 0;
14950     select(fd + 1, b, 0, 0, &t);
14951     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
14952     printf("%d\n", i + 1);
14953     return 0;
14954 }
14955 EOCP
14956                 set try
14957                 if eval $compile_ok; then
14958                         selectminbits=`$run ./try`
14959                         case "$selectminbits" in
14960                         '')     cat >&4 <<EOM
14961 Cannot figure out on how many bits at a time your select() operates.
14962 I'll play safe and guess it is 32 bits.
14963 EOM
14964                                 selectminbits=32
14965                                 bits="32 bits"
14966                                 ;;
14967                         1)      bits="1 bit" ;;
14968                         *)      bits="$selectminbits bits" ;;
14969                         esac
14970                         echo "Your select() operates on $bits at a time." >&4
14971                 else
14972                         rp='What is the minimum number of bits your select() operates on?'
14973                         case "$byteorder" in
14974                         1234|12345678)  dflt=32 ;;
14975                         *)              dflt=1  ;;
14976                         esac
14977                         . ./myread
14978                         val=$ans
14979                         selectminbits="$val"
14980                 fi
14981                 $rm -f try.* try
14982                 ;;
14983         *)      : no select, so pick a harmless default
14984                 selectminbits='32'
14985                 ;;
14986         esac
14987         ;;
14988 esac
14989
14990 : Trace out the files included by signal.h, then look for SIGxxx names.
14991 : Remove SIGARRAYSIZE used by HPUX.
14992 : Remove SIGSTKSIZE used by Linux.
14993 : Remove SIGSTKSZ used by Posix.
14994 : Remove SIGTYP void lines used by OS2.
14995 : Some cpps, like os390, dont give the file name anywhere
14996 if [ "X$fieldn" = X ]; then
14997         : Just make some guesses.  We check them later.
14998         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
14999 else
15000         xxx=`echo '#include <signal.h>' |
15001         $cppstdin $cppminus $cppflags 2>/dev/null |
15002         $grep '^[       ]*#.*include' | 
15003         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15004 fi
15005 : Check this list of files to be sure we have parsed the cpp output ok.
15006 : This will also avoid potentially non-existent files, such 
15007 : as ../foo/bar.h
15008 xxxfiles=''
15009 for xx in $xxx /dev/null ; do
15010         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15011 done
15012 : If we have found no files, at least try signal.h
15013 case "$xxxfiles" in
15014 '')     xxxfiles=`./findhdr signal.h` ;;
15015 esac
15016 xxx=`awk '
15017 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15018         print substr($2, 4, 20)
15019 }
15020 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15021         print substr($3, 4, 20)
15022 }' $xxxfiles`
15023 : Append some common names just in case the awk scan failed.
15024 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15025 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15026 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15027 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15028 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15029
15030 : generate a few handy files for later
15031 $cat > signal.c <<'EOCP'
15032 #include <sys/types.h>
15033 #include <signal.h>
15034 #include <stdio.h>
15035 int main() {
15036
15037 /* Strange style to avoid deeply-nested #if/#else/#endif */
15038 #ifndef NSIG
15039 #  ifdef _NSIG
15040 #    define NSIG (_NSIG)
15041 #  endif
15042 #endif
15043
15044 #ifndef NSIG
15045 #  ifdef SIGMAX
15046 #    define NSIG (SIGMAX+1)
15047 #  endif
15048 #endif
15049
15050 #ifndef NSIG
15051 #  ifdef SIG_MAX
15052 #    define NSIG (SIG_MAX+1)
15053 #  endif
15054 #endif
15055
15056 #ifndef NSIG
15057 #  ifdef MAXSIG
15058 #    define NSIG (MAXSIG+1)
15059 #  endif
15060 #endif
15061
15062 #ifndef NSIG
15063 #  ifdef MAX_SIG
15064 #    define NSIG (MAX_SIG+1)
15065 #  endif
15066 #endif
15067
15068 #ifndef NSIG
15069 #  ifdef SIGARRAYSIZE
15070 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15071 #  endif
15072 #endif
15073
15074 #ifndef NSIG
15075 #  ifdef _sys_nsig
15076 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
15077 #  endif
15078 #endif
15079
15080 /* Default to some arbitrary number that's big enough to get most
15081    of the common signals.
15082 */
15083 #ifndef NSIG
15084 #    define NSIG 50
15085 #endif
15086
15087 printf("NSIG %d\n", NSIG);
15088
15089 #ifndef JUST_NSIG
15090
15091 EOCP
15092
15093 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15094 {
15095         printf "#ifdef SIG"; printf $1; printf "\n"
15096         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15097         printf $1; printf ");\n"
15098         printf "#endif\n"
15099 }
15100 END {
15101         printf "#endif /* JUST_NSIG */\n";
15102         printf "exit(0);\n}\n";
15103 }
15104 ' >>signal.c
15105 $cat >signal.awk <<'EOP'
15106 BEGIN { ndups = 0 }
15107 $1 ~ /^NSIG$/ { nsig = $2 }
15108 ($1 !~ /^NSIG$/) && (NF == 2) {
15109     if ($2 > maxsig) { maxsig = $2 }
15110     if (sig_name[$2]) {
15111         dup_name[ndups] = $1
15112         dup_num[ndups] = $2
15113         ndups++ 
15114     }
15115     else {
15116         sig_name[$2] = $1
15117         sig_num[$2] = $2
15118     }
15119 }
15120 END { 
15121     if (nsig == 0) {
15122         nsig = maxsig + 1
15123     }
15124     printf("NSIG %d\n", nsig);
15125     for (n = 1; n < nsig; n++) {
15126         if (sig_name[n]) {
15127             printf("%s %d\n", sig_name[n], sig_num[n])
15128         }
15129         else {
15130             printf("NUM%d %d\n", n, n) 
15131         }
15132     }
15133     for (n = 0; n < ndups; n++) {
15134         printf("%s %d\n", dup_name[n], dup_num[n])
15135     }
15136 }
15137 EOP
15138 $cat >signal_cmd <<EOS
15139 $startsh
15140 if $test -s signal.lst; then
15141     echo "Using your existing signal.lst file"
15142         exit 0
15143 fi
15144 xxx="$xxx"
15145 EOS
15146 $cat >>signal_cmd <<'EOS'
15147
15148 set signal
15149 if eval $compile_ok; then
15150         $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15151 else
15152         echo "(I can't seem be able to compile the whole test program)" >&4
15153         echo "(I'll try it in little pieces.)" >&4
15154         set signal -DJUST_NSIG
15155         if eval $compile_ok; then
15156                 $run ./signal$_exe > signal.nsg
15157                 $cat signal.nsg
15158         else
15159                 echo "I can't seem to figure out how many signals you have." >&4
15160                 echo "Guessing 50." >&4
15161                 echo 'NSIG 50' > signal.nsg
15162         fi
15163         : Now look at all the signal names, one at a time.
15164         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15165                 $cat > signal.c <<EOCP
15166 #include <sys/types.h>
15167 #include <signal.h>
15168 #include <stdio.h>
15169 int main() {
15170 printf("$xx %d\n", SIG${xx});
15171 return 0;
15172 }
15173 EOCP
15174                 set signal
15175                 if eval $compile; then
15176                         echo "SIG${xx} found."
15177                         $run ./signal$_exe  >> signal.ls1
15178                 else
15179                         echo "SIG${xx} NOT found."
15180                 fi
15181         done
15182         if $test -s signal.ls1; then
15183                 $cat signal.nsg signal.ls1 |
15184                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15185         fi
15186
15187 fi
15188 if $test -s signal.lst; then
15189         :
15190 else
15191         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15192         echo 'kill -l' >signal
15193         set X `csh -f <signal`
15194         $rm -f signal
15195         shift
15196         case $# in
15197         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15198         esac
15199         echo $@ | $tr ' ' $trnl | \
15200             $awk '{ printf "%s %d\n", $1, ++s; }
15201                   END { printf "NSIG %d\n", ++s }' >signal.lst
15202 fi
15203 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15204 EOS
15205 chmod a+x signal_cmd
15206 $eunicefix signal_cmd
15207
15208 : generate list of signal names
15209 echo " "
15210 case "$sig_name_init" in
15211 '') doinit=yes ;;
15212 *)  case "$sig_num_init" in
15213     ''|*,*) doinit=yes ;;
15214     esac ;;
15215 esac
15216 case "$doinit" in
15217 yes)
15218         echo "Generating a list of signal names and numbers..." >&4
15219         . ./signal_cmd
15220         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15221         sig_name=`$awk 'BEGIN { printf "ZERO " }
15222                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15223         sig_num=`$awk  'BEGIN { printf "0 " }
15224                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15225         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
15226                              !/^NSIG/   { printf "\"%s\", ", $1 }
15227                              END        { printf "0\n" }' signal.lst`
15228         sig_num_init=`$awk  'BEGIN      { printf "0, " }
15229                              !/^NSIG/   { printf "%d, ", $2}
15230                              END        { printf "0\n"}' signal.lst`
15231         ;;
15232 esac
15233 echo "The following $sig_count signals are available:"
15234 echo " "
15235 echo $sig_name | $awk \
15236 'BEGIN { linelen = 0 }
15237 {
15238         for (i = 1; i <= NF; i++) {
15239                 name = "SIG" $i " "
15240                 linelen = linelen + length(name)
15241                 if (linelen > 70) {
15242                         printf "\n"
15243                         linelen = length(name)
15244                 }
15245                 printf "%s", name
15246         }
15247         printf "\n"
15248 }'
15249 sig_size=`echo $sig_name | awk '{print NF}'`
15250 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
15251
15252 echo " "
15253 case "$sizetype" in
15254 *_t) zzz="$sizetype"    ;;
15255 *)   zzz="filesize"     ;;
15256 esac
15257 echo "Checking the size of $zzz..." >&4 
15258 cat > try.c <<EOCP
15259 #include <sys/types.h>
15260 #include <stdio.h>
15261 int main() {
15262     printf("%d\n", (int)sizeof($sizetype));
15263     exit(0);
15264 }
15265 EOCP
15266 set try
15267 if eval $compile_ok; then
15268         yyy=`$run ./try`
15269         case "$yyy" in
15270         '')     sizesize=4
15271                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15272                 ;;
15273         *)      sizesize=$yyy
15274                 echo "Your $zzz size is $sizesize bytes."
15275                 ;;
15276         esac
15277 else
15278         sizesize=4
15279         echo "(I can't compile the test program--guessing $sizesize.)" >&4
15280 fi
15281
15282
15283 : check for socklen_t
15284 echo " "
15285 echo "Checking to see if you have socklen_t..." >&4
15286 $cat >try.c <<EOCP
15287 #include <sys/types.h>
15288 #$d_socket HAS_SOCKET
15289 #ifdef HAS_SOCKET
15290 #include <sys/socket.h>
15291 #endif
15292 int main() { socklen_t x = 16; }
15293 EOCP
15294 set try
15295 if eval $compile; then
15296         val="$define"
15297         echo "You have socklen_t."
15298 else
15299         val="$undef"
15300         echo "You do not have socklen_t."
15301         case "$sizetype" in
15302         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15303         esac
15304 fi
15305 $rm -f try try.*
15306 set d_socklen_t
15307 eval $setvar
15308
15309 : see if this is a socks.h system
15310 set socks.h i_socks
15311 eval $inhdr
15312
15313 : check for type of the size argument to socket calls
15314 case "$d_socket" in
15315 "$define")
15316         $cat <<EOM
15317
15318 Checking to see what type is the last argument of accept().
15319 EOM
15320         yyy=''
15321         case "$d_socklen_t" in
15322         "$define") yyy="$yyy socklen_t"
15323         esac
15324         yyy="$yyy $sizetype int long unsigned"
15325         for xxx in $yyy; do
15326                 case "$socksizetype" in
15327                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
15328                         case "$usesocks" in
15329                         "$define")
15330                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15331                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15332                                         socksizetype="$xxx"
15333                                 fi
15334                                 ;;
15335                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
15336                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15337                                         socksizetype="$xxx"
15338                                 fi
15339                                 ;;
15340                         esac
15341                         ;;
15342                 esac
15343         done
15344 : In case none of those worked, prompt the user.
15345         case "$socksizetype" in
15346         '')     rp='What is the type for socket address structure sizes?'
15347                 dflt='int'
15348                 . ./myread
15349                 socksizetype=$ans
15350                 ;;
15351         esac
15352         ;;
15353 *)      : no sockets, so pick relatively harmless default
15354         socksizetype='int'
15355         ;;
15356 esac
15357
15358 : see what type is used for signed size_t
15359 set ssize_t ssizetype int stdio.h sys/types.h
15360 eval $typedef
15361 dflt="$ssizetype"
15362 $cat > try.c <<EOM
15363 #include <stdio.h>
15364 #include <sys/types.h>
15365 #define Size_t $sizetype
15366 #define SSize_t $dflt
15367 int main()
15368 {
15369         if (sizeof(Size_t) == sizeof(SSize_t))
15370                 printf("$dflt\n");
15371         else if (sizeof(Size_t) == sizeof(int))
15372                 printf("int\n");
15373         else 
15374                 printf("long\n");
15375         exit(0);
15376 }
15377 EOM
15378 echo " "
15379 set try
15380 if eval $compile_ok && $run ./try > /dev/null; then
15381         ssizetype=`$run ./try`
15382         echo "I'll be using $ssizetype for functions returning a byte count." >&4
15383 else
15384         $cat >&4 <<EOM
15385 Help! I can't compile and run the ssize_t test program: please enlighten me!
15386 (This is probably a misconfiguration in your system or libraries, and
15387 you really ought to fix it.  Still, I'll try anyway.)
15388
15389 I need a type that is the same size as $sizetype, but is guaranteed to
15390 be signed.  Common values are ssize_t, int and long.
15391
15392 EOM
15393         rp="What signed type is the same size as $sizetype?"
15394         . ./myread
15395         ssizetype="$ans"
15396 fi
15397 $rm -f try try.*
15398
15399 : see what type of char stdio uses.
15400 echo " "
15401 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15402 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15403         echo "Your stdio uses unsigned chars." >&4
15404         stdchar="unsigned char"
15405 else
15406         echo "Your stdio uses signed chars." >&4
15407         stdchar="char"
15408 fi
15409 $rm -f stdioh
15410
15411
15412
15413 : see if time exists
15414 echo " "
15415 if test "X$d_time" = X -o X"$timetype" = X; then
15416     if set time val -f d_time; eval $csym; $val; then
15417                 echo 'time() found.' >&4
15418                 val="$define"
15419                 rp="What is the type returned by time() on this system?"
15420                 set time_t timetype long stdio.h sys/types.h
15421                 eval $typedef_ask
15422     else
15423                 echo 'time() not found, hope that will do.' >&4
15424                 val="$undef"
15425                 timetype='int';
15426     fi
15427     set d_time
15428     eval $setvar
15429 fi
15430
15431 : see what type uids are declared as in the kernel
15432 echo " "
15433 echo "Looking for the type for user ids returned by getuid()."
15434 set uid_t uidtype xxx stdio.h sys/types.h
15435 eval $typedef
15436 case "$uidtype" in
15437 xxx)
15438         xxx=`./findhdr sys/user.h`
15439         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15440         case $1 in
15441         unsigned) dflt="$1 $2" ;;
15442         *) dflt="$1" ;;
15443         esac
15444         ;;
15445 *) dflt="$uidtype";;
15446 esac
15447 case "$uidtype" in
15448 uid_t)  echo "uid_t found." ;;
15449 *)      rp="What is the type for user ids returned by getuid()?"
15450         . ./myread
15451         uidtype="$ans"
15452         ;;
15453 esac
15454
15455 echo " "
15456 case "$uidtype" in
15457 *_t) zzz="$uidtype"     ;;
15458 *)   zzz="uid"          ;;
15459 esac
15460 echo "Checking the size of $zzz..." >&4 
15461 cat > try.c <<EOCP
15462 #include <sys/types.h>
15463 #include <stdio.h>
15464 int main() {
15465     printf("%d\n", (int)sizeof($uidtype));
15466     exit(0);
15467 }
15468 EOCP
15469 set try
15470 if eval $compile_ok; then
15471         yyy=`$run ./try`
15472         case "$yyy" in
15473         '')     uidsize=4
15474                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15475                 ;;
15476         *)      uidsize=$yyy
15477                 echo "Your $zzz is $uidsize bytes long."
15478                 ;;
15479         esac
15480 else
15481         uidsize=4
15482         echo "(I can't compile the test program--guessing $uidsize.)" >&4
15483 fi
15484
15485 echo " "
15486 case "$uidtype" in
15487 *_t) zzz="$uidtype"     ;;
15488 *)   zzz="uid"          ;;
15489 esac
15490 echo "Checking the sign of $zzz..." >&4
15491 cat > try.c <<EOCP
15492 #include <sys/types.h>
15493 #include <stdio.h>
15494 int main() {
15495         $uidtype foo = -1;
15496         if (foo < 0)
15497                 printf("-1\n");
15498         else
15499                 printf("1\n");
15500 }
15501 EOCP
15502 set try
15503 if eval $compile; then
15504         yyy=`$run ./try`
15505         case "$yyy" in
15506         '')     uidsign=1
15507                 echo "(I can't execute the test program--guessing unsigned.)" >&4
15508                 ;;
15509         *)      uidsign=$yyy
15510                 case "$uidsign" in
15511                  1) echo "Your $zzz is unsigned." ;;
15512                 -1) echo "Your $zzz is signed."   ;;
15513                 esac
15514                 ;;
15515         esac
15516 else
15517         uidsign=1
15518         echo "(I can't compile the test program--guessing unsigned.)" >&4
15519 fi
15520
15521
15522
15523 echo " "
15524 $echo "Checking the format string to be used for uids..." >&4
15525
15526 case "$uidsign" in
15527 -1)     if $test X"$uidsize" = X"$ivsize"; then
15528                 uidformat="$ivdformat"
15529         else
15530                 if $test X"$uidsize" = X"$longsize"; then
15531                         uidformat='"ld"'
15532                 else
15533                         if $test X"$uidsize" = X"$intsize"; then
15534                                 uidformat='"d"'
15535                         else
15536                                 if $test X"$uidsize" = X"$shortsize"; then
15537                                         uidformat='"hd"'
15538                                 fi
15539                         fi
15540                 fi
15541         fi
15542         ;;
15543 *)      if $test X"$uidsize" = X"$uvsize"; then
15544                 uidformat="$uvuformat"
15545         else
15546                 if $test X"$uidsize" = X"$longsize"; then
15547                         uidformat='"lu"'
15548                 else
15549                         if $test X"$uidsize" = X"$intsize"; then
15550                                 uidformat='"u"'
15551                         else
15552                                 if $test X"$uidsize" = X"$shortsize"; then
15553                                         uidformat='"hu"'
15554                                 fi
15555                         fi
15556                 fi
15557         fi
15558         ;;
15559 esac
15560
15561 : determine compiler compiler
15562 case "$yacc" in
15563 '')
15564         dflt=yacc;;
15565 *)
15566         dflt="$yacc";;
15567 esac
15568 echo " "
15569 comp='yacc'
15570 if $test -f "$byacc"; then
15571         dflt="$byacc"
15572         comp="byacc or $comp"
15573 fi
15574 if $test -f "$bison"; then
15575         comp="$comp or bison -y"
15576 fi
15577 rp="Which compiler compiler ($comp) shall I use?"
15578 . ./myread
15579 yacc="$ans"
15580 case "$yacc" in
15581 *bis*)
15582         case "$yacc" in
15583         *-y*) ;;
15584         *)
15585                 yacc="$yacc -y"
15586                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15587                 ;;
15588         esac
15589         ;;
15590 esac
15591
15592 : see if fcntl.h is there
15593 val=''
15594 set fcntl.h val
15595 eval $inhdr
15596
15597 : see if we can include fcntl.h
15598 case "$val" in
15599 "$define")
15600         echo " "
15601         if $h_fcntl; then
15602                 val="$define"
15603                 echo "We'll be including <fcntl.h>." >&4
15604         else
15605                 val="$undef"
15606                 if $h_sysfile; then
15607         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15608                 else
15609                         echo "We won't be including <fcntl.h>." >&4
15610                 fi
15611         fi
15612         ;;
15613 *)
15614         h_fcntl=false
15615         val="$undef"
15616         ;;
15617 esac
15618 set i_fcntl
15619 eval $setvar
15620
15621 : see if this is a iconv.h system
15622 set iconv.h i_iconv
15623 eval $inhdr
15624
15625 : see if this is a ieeefp.h system
15626 set ieeefp.h i_ieeefp
15627 eval $inhdr
15628
15629 : see if this is a libutil.h system
15630 set libutil.h i_libutil
15631 eval $inhdr
15632
15633 : see if locale.h is available
15634 set locale.h i_locale
15635 eval $inhdr
15636
15637 : see if mach cthreads are available
15638 if test "X$usethreads" = "X$define"; then
15639         set mach/cthreads.h i_machcthr
15640         eval $inhdr
15641 else
15642         i_machcthr="$undef"
15643 fi
15644
15645
15646
15647 : see if this is a math.h system
15648 set math.h i_math
15649 eval $inhdr
15650
15651 : see if this is a mntent.h system
15652 set mntent.h i_mntent
15653 eval $inhdr
15654
15655 : see if ndbm.h is available
15656 set ndbm.h t_ndbm
15657 eval $inhdr
15658 case "$t_ndbm" in
15659 $define)
15660         : see if dbm_open exists
15661         set dbm_open d_dbm_open
15662         eval $inlibc
15663         case "$d_dbm_open" in
15664         $undef)
15665                 t_ndbm="$undef"
15666                 echo "We won't be including <ndbm.h>"
15667                 ;;
15668         esac
15669         ;;
15670 esac
15671 val="$t_ndbm"
15672 set i_ndbm
15673 eval $setvar
15674
15675 : see if net/errno.h is available
15676 val=''
15677 set net/errno.h val
15678 eval $inhdr
15679
15680 : Unfortunately, it causes problems on some systems.  Arrgh.
15681 case "$val" in
15682 $define)
15683         cat > try.c <<'EOM'
15684 #include <stdio.h>
15685 #include <errno.h>
15686 #include <net/errno.h>
15687 int func()
15688 {
15689         return ENOTSOCK;
15690 }
15691 EOM
15692         if $cc $ccflags -c try.c >/dev/null 2>&1; then
15693                 echo "We'll be including <net/errno.h>." >&4
15694         else
15695                 echo "We won't be including <net/errno.h>." >&4
15696                 val="$undef"
15697         fi
15698         $rm -f try.* try
15699         ;;
15700 esac
15701 set i_neterrno
15702 eval $setvar
15703
15704 : see if netinet/tcp.h is available
15705 set netinet/tcp.h i_netinettcp
15706 eval $inhdr
15707
15708 : see if this is a poll.h system
15709 set poll.h i_poll
15710 eval $inhdr
15711
15712 : see if this is a prot.h system
15713 set prot.h i_prot
15714 eval $inhdr
15715
15716 echo " "
15717 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
15718 $cat <<'EOSH' > Cppsym.know
15719 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15720 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15721 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15722 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15723 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15724 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15725 bull c cadmus clipper CMU COFF COMPILER_VERSION
15726 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15727 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15728 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15729 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15730 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15731 H3050R H3050RX hbullx20 hcx host_mips
15732 hp200 hp300 hp700 HP700 hp800 hp9000
15733 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15734 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15735 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15736 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15737 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15738 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15739 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15740 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15741 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15742 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15743 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15744 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15745 MATH_HAS_NO_SIDE_EFFECTS
15746 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15747 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15748 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15749 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15750 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15751 NetBSD news1500 news1700 news1800 news1900 news3700
15752 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15753 ns32016 ns32332 ns32k nsc32000
15754 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15755 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15756 pc532 pdp11 PGC PIC plexus PORTAR posix
15757 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15758 POSIX_C_SOURCE POSIX_SOURCE POWER
15759 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15760 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15761 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15762 sony sony_news sonyrisc sparc sparclite spectrum
15763 stardent stdc STDC_EXT stratos sun sun3 sun386
15764 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15765 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15766 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15767 sysV68 sysV88 Tek4132 Tek4300 titan
15768 TM3200 TM5400 TM5600
15769 tower tower32 tower32_200 tower32_600 tower32_700
15770 tower32_800 tower32_850 tss
15771 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15772 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15773 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15774 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15775 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15776 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15777 z8000
15778 EOSH
15779 # Maybe put other stuff here too.
15780 cat <<EOSH >>Cppsym.know
15781 $osname
15782 EOSH
15783 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15784 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15785 $cat Cppsym.know > Cppsym.c
15786 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15787 $rm -f Cppsym.a Cppsym.b Cppsym.c
15788 cat <<EOSH > Cppsym
15789 $startsh
15790 if $test \$# -gt 0; then
15791     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15792     if $test -s Cppsym.got; then
15793         $rm -f Cppsym.got
15794         exit 0
15795     fi
15796     $rm -f Cppsym.got
15797     exit 1
15798 else
15799     $tr " " "$trnl" | ./Cppsym.try
15800     exit 0
15801 fi
15802 EOSH
15803 chmod +x Cppsym
15804 $eunicefix Cppsym
15805 cat <<EOSH > Cppsym.try
15806 $startsh
15807 cat <<'EOCP' > try.c
15808 #include <stdio.h>
15809 int main() {
15810 EOCP
15811 $awk \\
15812 EOSH
15813 cat <<'EOSH' >> Cppsym.try
15814 'length($1) > 0 {
15815     printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", (long)%s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15816     printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", (long)_%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15817     printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", (long)__%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15818     printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", (long)__%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15819 }'       >> try.c
15820 echo 'return 0;}' >> try.c
15821 EOSH
15822 cat <<EOSH >> Cppsym.try
15823 ccflags="$ccflags"
15824 case "$osname-$gccversion" in
15825 irix-) ccflags="\$ccflags -woff 1178" ;;
15826 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15827 esac
15828 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
15829 EOSH
15830 chmod +x Cppsym.try
15831 $eunicefix Cppsym.try
15832 ./Cppsym < Cppsym.know > Cppsym.true
15833 : now check the C compiler for additional symbols
15834 postprocess_cc_v=''
15835 case "$osname" in
15836 aix) postprocess_cc_v="|$tr , ' '" ;;
15837 esac
15838 $cat >ccsym <<EOS
15839 $startsh
15840 $cat >tmp.c <<EOF
15841 extern int foo;
15842 EOF
15843 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15844 do
15845         case "\$i" in
15846         -D*) echo "\$i" | $sed 's/^-D//';;
15847         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15848         esac
15849 done
15850 $rm -f try.c
15851 EOS
15852 postprocess_cc_v=''
15853 chmod +x ccsym
15854 $eunicefix ccsym
15855 ./ccsym > ccsym1.raw
15856 if $test -s ccsym1.raw; then
15857        $sort ccsym1.raw | $uniq >ccsym.raw
15858 else
15859        mv ccsym1.raw ccsym.raw
15860 fi
15861
15862 $awk '/\=/ { print $0; next }
15863         { print $0"=1" }' ccsym.raw >ccsym.list
15864 $awk '/\=/ { print $0; next }
15865         { print $0"=1" }' Cppsym.true >ccsym.true
15866 $comm -13 ccsym.true ccsym.list >ccsym.own
15867 $comm -12 ccsym.true ccsym.list >ccsym.com
15868 $comm -23 ccsym.true ccsym.list >ccsym.cpp
15869 also=''
15870 if $test -z ccsym.raw; then
15871         echo "Your C compiler doesn't seem to define any symbols!" >&4
15872         echo " "
15873         echo "However, your C preprocessor defines the following symbols:"
15874         $cat Cppsym.true
15875         ccsymbols=''
15876         cppsymbols=`$cat Cppsym.true`
15877         cppsymbols=`echo $cppsymbols`
15878         cppccsymbols="$cppsymbols"
15879 else
15880         if $test -s ccsym.com; then
15881                 echo "Your C compiler and pre-processor define these symbols:"
15882                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15883                 also='also '
15884                 symbols='ones'
15885                 cppccsymbols=`$cat ccsym.com`
15886                 cppccsymbols=`echo $cppccsymbols`
15887                 $test "$silent" || sleep 1
15888         fi
15889         if $test -s ccsym.cpp; then
15890                 $test "$also" && echo " "
15891                 echo "Your C pre-processor ${also}defines the following symbols:"
15892                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15893                 also='further '
15894                 cppsymbols=`$cat ccsym.cpp`
15895                 cppsymbols=`echo $cppsymbols`
15896                 $test "$silent" || sleep 1
15897         fi
15898         if $test -s ccsym.own; then
15899                 $test "$also" && echo " "
15900                 echo "Your C compiler ${also}defines the following cpp symbols:"
15901                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
15902                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
15903                 ccsymbols=`$cat ccsym.own`
15904                 ccsymbols=`echo $ccsymbols`
15905                 $test "$silent" || sleep 1
15906         fi
15907 fi
15908 $rm -f ccsym* Cppsym.*
15909
15910 : see if this is a termio system
15911 val="$undef"
15912 val2="$undef"
15913 val3="$undef"
15914 if $test `./findhdr termios.h`; then
15915         set tcsetattr i_termios
15916         eval $inlibc
15917         val3="$i_termios"
15918 fi
15919 echo " "
15920 case "$val3" in
15921 "$define") echo "You have POSIX termios.h... good!" >&4;;
15922 *) if ./Cppsym pyr; then
15923                 case "`/bin/universe`" in
15924                 ucb) if $test `./findhdr sgtty.h`; then
15925                                 val2="$define"
15926                                 echo "<sgtty.h> found." >&4
15927                         else
15928                                 echo "System is pyramid with BSD universe."
15929                                 echo "<sgtty.h> not found--you could have problems." >&4
15930                         fi;;
15931                 *) if $test `./findhdr termio.h`; then
15932                                 val="$define"
15933                                 echo "<termio.h> found." >&4
15934                         else
15935                                 echo "System is pyramid with USG universe."
15936                                 echo "<termio.h> not found--you could have problems." >&4
15937                         fi;;
15938                 esac
15939         elif ./usg; then
15940                 if $test `./findhdr termio.h`; then
15941                         echo "<termio.h> found." >&4
15942                         val="$define"
15943                 elif $test `./findhdr sgtty.h`; then
15944                         echo "<sgtty.h> found." >&4
15945                         val2="$define"
15946                 else
15947 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
15948                 fi
15949         else
15950                 if $test `./findhdr sgtty.h`; then
15951                         echo "<sgtty.h> found." >&4
15952                         val2="$define"
15953                 elif $test `./findhdr termio.h`; then
15954                         echo "<termio.h> found." >&4
15955                         val="$define"
15956                 else
15957 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
15958                 fi
15959         fi;;
15960 esac
15961 set i_termio; eval $setvar
15962 val=$val2; set i_sgtty; eval $setvar
15963 val=$val3; set i_termios; eval $setvar
15964
15965 : see if this is a shadow.h system
15966 set shadow.h i_shadow
15967 eval $inhdr
15968
15969 : see if stddef is available
15970 set stddef.h i_stddef
15971 eval $inhdr
15972
15973 : see if this is a sunmath.h system
15974 set sunmath.h i_sunmath
15975 eval $inhdr
15976
15977 : see if sys/access.h is available
15978 set sys/access.h i_sysaccess
15979 eval $inhdr
15980
15981 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
15982 set sys/filio.h i_sysfilio
15983 eval $inhdr
15984 echo " "
15985 if $test `./findhdr sys/ioctl.h`; then
15986         val="$define"
15987         echo '<sys/ioctl.h> found.' >&4
15988 else
15989         val="$undef"
15990         if $test $i_sysfilio = "$define"; then
15991             echo '<sys/ioctl.h> NOT found.' >&4
15992         else
15993                 $test $i_sgtty = "$define" && xxx="sgtty.h"
15994                 $test $i_termio = "$define" && xxx="termio.h"
15995                 $test $i_termios = "$define" && xxx="termios.h"
15996 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
15997         fi
15998 fi
15999 set i_sysioctl
16000 eval $setvar
16001
16002 : see if socket ioctl defs are in sys/sockio.h
16003 echo " "
16004 xxx=`./findhdr sys/sockio.h`
16005 if $test "$xxx"; then
16006         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16007                 val="$define"
16008                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16009         else
16010                 val="$undef"
16011                 echo "No socket ioctls found in <sys/sockio.h>." >&4
16012         fi
16013 else
16014         val="$undef"
16015         $cat <<EOM
16016 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16017 EOM
16018 fi
16019 set i_syssockio
16020 eval $setvar
16021
16022
16023 : see if this is a syslog.h system
16024 set syslog.h i_syslog
16025 eval $inhdr
16026
16027
16028 : see if this is a sys/mode.h system
16029 set sys/mode.h i_sysmode
16030 eval $inhdr
16031
16032 : see if sys/resource.h has to be included
16033 set sys/resource.h i_sysresrc
16034 eval $inhdr
16035
16036 : see if sys/security.h is available
16037 set sys/security.h i_syssecrt
16038 eval $inhdr
16039
16040 : see if this is a sys/statvfs.h system
16041 set sys/statvfs.h i_sysstatvfs
16042 eval $inhdr
16043
16044 : see if this is a sys/un.h system
16045 set sys/un.h i_sysun
16046 eval $inhdr
16047
16048
16049 : see if this is a sys/utsname.h system
16050 set sys/utsname.h i_sysutsname
16051 eval $inhdr
16052
16053 : see if this is a syswait system
16054 set sys/wait.h i_syswait
16055 eval $inhdr
16056
16057 : see if this is a ustat.h system
16058 set ustat.h i_ustat
16059 eval $inhdr
16060
16061 : see if this is an utime system
16062 set utime.h i_utime
16063 eval $inhdr
16064
16065 : see if this is a values.h system
16066 set values.h i_values
16067 eval $inhdr
16068
16069 : see if this is a vfork system
16070 case "$d_vfork" in
16071 "$define")
16072         set vfork.h i_vfork
16073         eval $inhdr
16074         ;;
16075 *)
16076         i_vfork="$undef"
16077         ;;
16078 esac
16079
16080 : see if gdbm.h is available
16081 set gdbm.h t_gdbm
16082 eval $inhdr
16083 case "$t_gdbm" in
16084 $define)
16085         : see if gdbm_open exists
16086         set gdbm_open d_gdbm_open
16087         eval $inlibc
16088         case "$d_gdbm_open" in
16089         $undef)
16090                 t_gdbm="$undef"
16091                 echo "We won't be including <gdbm.h>"
16092                 ;;
16093         esac
16094         ;;
16095 esac
16096 val="$t_gdbm"
16097 set i_gdbm
16098 eval $setvar
16099
16100 echo " "
16101 echo "Looking for extensions..." >&4
16102 : If we are using the old config.sh, known_extensions may contain
16103 : old or inaccurate or duplicate values.
16104 known_extensions=''
16105 nonxs_extensions=''
16106 : We do not use find because it might not be available.
16107 : We do not just use MANIFEST because the user may have dropped
16108 : some additional extensions into the source tree and expect them
16109 : to be built.
16110
16111 : Function to recursively find available extensions, ignoring DynaLoader
16112 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16113 find_extensions='
16114     for xxx in *; do
16115        case "$xxx" in
16116            DynaLoader|dynaload) ;;
16117            *)
16118            if $test -f $xxx/$xxx.xs; then
16119                known_extensions="$known_extensions $1$xxx";
16120            elif $test -f $xxx/Makefile.PL; then
16121                nonxs_extensions="$nonxs_extensions $1$xxx";
16122            else
16123                if $test -d $xxx -a $# -lt 10; then
16124                    set $1$xxx/ $*;
16125                    cd $xxx;
16126                    eval $find_extensions;
16127                    cd ..;
16128                    shift;
16129                fi;
16130            fi
16131            ;;
16132        esac;
16133     done'
16134 tdir=`pwd`
16135 cd $rsrc/ext
16136 set X
16137 shift
16138 eval $find_extensions
16139 set X $nonxs_extensions
16140 shift
16141 nonxs_extensions="$*"
16142 set X $known_extensions
16143 shift
16144 known_extensions="$*"
16145 cd $tdir
16146
16147 : Now see which are supported on this system.
16148 avail_ext=''
16149 for xxx in $known_extensions ; do
16150         case "$xxx" in
16151         DB_File|db_file)
16152                 case "$i_db" in
16153                 $define) avail_ext="$avail_ext $xxx" ;;
16154                 esac
16155                 ;;
16156         GDBM_File|gdbm_fil)
16157                 case "$i_gdbm" in 
16158                 $define) avail_ext="$avail_ext $xxx" ;;
16159                 esac
16160                 ;;
16161         NDBM_File|ndbm_fil)
16162                 case "$i_ndbm" in
16163                 $define)
16164                     case "$osname-$use64bitint" in
16165                     hpux-define)
16166                         case "$libs" in
16167                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16168                         esac
16169                         ;;
16170                     *) avail_ext="$avail_ext $xxx" ;;
16171                     esac
16172                     ;;
16173                 esac
16174                 ;;
16175         ODBM_File|odbm_fil) 
16176                 case "${i_dbm}${i_rpcsvcdbm}" in
16177                 *"${define}"*)
16178                     case "$osname-$use64bitint" in
16179                     hpux-define)
16180                         case "$libs" in
16181                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16182                         esac
16183                         ;;
16184                     *) avail_ext="$avail_ext $xxx" ;;
16185                     esac
16186                     ;;
16187                 esac
16188                 ;;
16189         POSIX|posix)
16190                 case "$useposix" in
16191                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16192                 esac
16193                 ;;
16194         Opcode|opcode)
16195                 case "$useopcode" in
16196                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16197                 esac
16198                 ;;
16199         Socket|socket)
16200                 case "$d_socket" in 
16201                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16202                 esac
16203                 ;;
16204         Sys/Syslog|sys/syslog)
16205                 : XXX syslog requires socket
16206                 case "$d_socket" in 
16207                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16208                 esac
16209                 ;;
16210         Thread|thread)
16211                 case "$usethreads" in
16212                 true|$define|y)
16213                         case "$useithreads" in
16214                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16215                         esac
16216                 esac
16217                 ;;
16218         IPC/SysV|ipc/sysv)
16219                 : XXX Do we need a useipcsysv variable here
16220                 case "${d_msg}${d_sem}${d_shm}" in 
16221                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16222                 esac
16223                 ;;
16224         *)      avail_ext="$avail_ext $xxx"
16225                 ;;
16226         esac
16227 done
16228
16229 set X $avail_ext
16230 shift
16231 avail_ext="$*"
16232
16233 : Now see which nonxs extensions are supported on this system.
16234 : For now assume all are.
16235 nonxs_ext=''
16236 for xxx in $nonxs_extensions ; do
16237         case "$xxx" in
16238         *)      nonxs_ext="$nonxs_ext $xxx"
16239                 ;;
16240         esac
16241 done
16242
16243 set X $nonxs_ext
16244 shift
16245 nonxs_ext="$*"
16246
16247 case $usedl in
16248 $define)
16249         $cat <<EOM
16250 A number of extensions are supplied with $package.  You may choose to
16251 compile these extensions for dynamic loading (the default), compile
16252 them into the $package executable (static loading), or not include
16253 them at all.  Answer "none" to include no extensions.
16254 Note that DynaLoader is always built and need not be mentioned here.
16255
16256 EOM
16257         case "$dynamic_ext" in
16258         '') dflt="$avail_ext" ;;
16259         *)      dflt="$dynamic_ext"
16260                 # Perhaps we are reusing an old out-of-date config.sh.
16261                 case "$hint" in
16262                 previous)
16263                         if test X"$dynamic_ext" != X"$avail_ext"; then
16264                                 $cat <<EOM
16265 NOTICE:  Your previous config.sh list may be incorrect. 
16266 The extensions now available to you are 
16267         ${avail_ext}
16268 but the default list from your previous config.sh is
16269         ${dynamic_ext} 
16270
16271 EOM
16272                         fi
16273                         ;;
16274                 esac
16275                 ;;
16276         esac
16277         case "$dflt" in
16278         '')     dflt=none;;
16279         esac
16280         rp="What extensions do you wish to load dynamically?"
16281         . ./myread
16282         case "$ans" in
16283         none) dynamic_ext=' ' ;;
16284         *) dynamic_ext="$ans" ;;
16285         esac
16286
16287         case "$static_ext" in
16288         '')
16289                 : Exclude those already listed in dynamic linking
16290                 dflt=''
16291                 for xxx in $avail_ext; do
16292                         case " $dynamic_ext " in
16293                         *" $xxx "*) ;;
16294                         *) dflt="$dflt $xxx" ;;
16295                         esac
16296                 done
16297                 set X $dflt
16298                 shift
16299                 dflt="$*"
16300                 ;;
16301         *)  dflt="$static_ext" 
16302                 ;;
16303         esac
16304
16305         case "$dflt" in
16306         '')     dflt=none;;
16307         esac
16308         rp="What extensions do you wish to load statically?"
16309         . ./myread
16310         case "$ans" in
16311         none) static_ext=' ' ;;
16312         *) static_ext="$ans" ;;
16313         esac
16314         ;;
16315 *)
16316         $cat <<EOM
16317 A number of extensions are supplied with $package.  Answer "none" 
16318 to include no extensions. 
16319 Note that DynaLoader is always built and need not be mentioned here.
16320
16321 EOM
16322         case "$static_ext" in
16323         '') dflt="$avail_ext" ;;
16324         *)      dflt="$static_ext"
16325                 # Perhaps we are reusing an old out-of-date config.sh.
16326                 case "$hint" in
16327                 previous)
16328                         if test X"$static_ext" != X"$avail_ext"; then
16329                                 $cat <<EOM
16330 NOTICE:  Your previous config.sh list may be incorrect. 
16331 The extensions now available to you are 
16332         ${avail_ext}
16333 but the default list from your previous config.sh is
16334         ${static_ext} 
16335
16336 EOM
16337                         fi
16338                         ;;
16339                 esac
16340                 ;;
16341         esac
16342         : Exclude those that are not xs extensions
16343         case "$dflt" in
16344         '')     dflt=none;;
16345         esac
16346         rp="What extensions do you wish to include?"
16347         . ./myread
16348         case "$ans" in
16349         none) static_ext=' ' ;;
16350         *) static_ext="$ans" ;;
16351         esac
16352         ;;
16353 esac
16354
16355 set X $dynamic_ext $static_ext $nonxs_ext
16356 shift
16357 extensions="$*"
16358
16359 : Remove libraries needed only for extensions
16360 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16361 : The exception is SunOS 4.x, which needs them.
16362 case "${osname}X${osvers}" in
16363 sunos*X4*)
16364     perllibs="$libs"
16365     ;;
16366 *) case "$usedl" in
16367     $define|true|[yY]*)
16368             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
16369             shift
16370             perllibs="$*"
16371             ;;
16372     *)  perllibs="$libs"
16373             ;;
16374     esac
16375     ;;
16376 esac
16377
16378 : Remove build directory name from cppstdin so it can be used from
16379 : either the present location or the final installed location.
16380 echo " "
16381 : Get out of the UU directory to get correct path name.
16382 cd ..
16383 case "$cppstdin" in
16384 `pwd`/cppstdin)
16385         echo "Stripping down cppstdin path name"
16386         cppstdin=cppstdin
16387         ;;
16388 esac
16389 cd UU
16390
16391 : end of configuration questions
16392 echo " "
16393 echo "End of configuration questions."
16394 echo " "
16395
16396 : back to where it started
16397 if test -d ../UU; then
16398         cd ..
16399 fi
16400
16401 : configuration may be patched via a 'config.over' file
16402 if $test -f config.over; then
16403         echo " "
16404         dflt=y
16405         rp='I see a config.over file.  Do you wish to load it?'
16406         . UU/myread
16407         case "$ans" in
16408         n*) echo "OK, I'll ignore it.";;
16409         *)      . ./config.over
16410                 echo "Configuration override changes have been loaded."
16411                 ;;
16412         esac
16413 fi
16414
16415 : in case they want portability, strip down executable paths
16416 case "$d_portable" in
16417 "$define")
16418         echo " "
16419         echo "Stripping down executable paths..." >&4
16420         for file in $loclist $trylist; do
16421                 eval temp=\$$file
16422                 eval $file=`basename $temp`
16423         done
16424         ;;
16425 esac
16426
16427 : create config.sh file
16428 echo " "
16429 echo "Creating config.sh..." >&4
16430 $spitshell <<EOT >config.sh
16431 $startsh
16432 #
16433 # This file was produced by running the Configure script. It holds all the
16434 # definitions figured out by Configure. Should you modify one of these values,
16435 # do not forget to propagate your changes by running "Configure -der". You may
16436 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16437 #
16438
16439 # Package name      : $package
16440 # Source directory  : $src
16441 # Configuration time: $cf_time
16442 # Configured by     : $cf_by
16443 # Target system     : $myuname
16444
16445 Author='$Author'
16446 Date='$Date'
16447 Header='$Header'
16448 Id='$Id'
16449 Locker='$Locker'
16450 Log='$Log'
16451 Mcc='$Mcc'
16452 RCSfile='$RCSfile'
16453 Revision='$Revision'
16454 Source='$Source'
16455 State='$State'
16456 _a='$_a'
16457 _exe='$_exe'
16458 _o='$_o'
16459 afs='$afs'
16460 afsroot='$afsroot'
16461 alignbytes='$alignbytes'
16462 ansi2knr='$ansi2knr'
16463 aphostname='$aphostname'
16464 api_revision='$api_revision'
16465 api_subversion='$api_subversion'
16466 api_version='$api_version'
16467 api_versionstring='$api_versionstring'
16468 ar='$ar'
16469 archlib='$archlib'
16470 archlibexp='$archlibexp'
16471 archname64='$archname64'
16472 archname='$archname'
16473 archobjs='$archobjs'
16474 awk='$awk'
16475 baserev='$baserev'
16476 bash='$bash'
16477 bin='$bin'
16478 bincompat5005='$bincompat5005'
16479 binexp='$binexp'
16480 bison='$bison'
16481 byacc='$byacc'
16482 byteorder='$byteorder'
16483 c='$c'
16484 castflags='$castflags'
16485 cat='$cat'
16486 cc='$cc'
16487 cccdlflags='$cccdlflags'
16488 ccdlflags='$ccdlflags'
16489 ccflags='$ccflags'
16490 ccflags_uselargefiles='$ccflags_uselargefiles'
16491 ccname='$ccname'
16492 ccsymbols='$ccsymbols'
16493 ccversion='$ccversion'
16494 cf_by='$cf_by'
16495 cf_email='$cf_email'
16496 cf_time='$cf_time'
16497 charsize='$charsize'
16498 chgrp='$chgrp'
16499 chmod='$chmod'
16500 chown='$chown'
16501 clocktype='$clocktype'
16502 comm='$comm'
16503 compress='$compress'
16504 contains='$contains'
16505 cp='$cp'
16506 cpio='$cpio'
16507 cpp='$cpp'
16508 cpp_stuff='$cpp_stuff'
16509 cppccsymbols='$cppccsymbols'
16510 cppflags='$cppflags'
16511 cpplast='$cpplast'
16512 cppminus='$cppminus'
16513 cpprun='$cpprun'
16514 cppstdin='$cppstdin'
16515 cppsymbols='$cppsymbols'
16516 cryptlib='$cryptlib'
16517 csh='$csh'
16518 d_Gconvert='$d_Gconvert'
16519 d_PRIEUldbl='$d_PRIEUldbl'
16520 d_PRIFUldbl='$d_PRIFUldbl'
16521 d_PRIGUldbl='$d_PRIGUldbl'
16522 d_PRIXU64='$d_PRIXU64'
16523 d_PRId64='$d_PRId64'
16524 d_PRIeldbl='$d_PRIeldbl'
16525 d_PRIfldbl='$d_PRIfldbl'
16526 d_PRIgldbl='$d_PRIgldbl'
16527 d_PRIi64='$d_PRIi64'
16528 d_PRIo64='$d_PRIo64'
16529 d_PRIu64='$d_PRIu64'
16530 d_PRIx64='$d_PRIx64'
16531 d_SCNfldbl='$d_SCNfldbl'
16532 d__fwalk='$d__fwalk'
16533 d_access='$d_access'
16534 d_accessx='$d_accessx'
16535 d_alarm='$d_alarm'
16536 d_archlib='$d_archlib'
16537 d_atolf='$d_atolf'
16538 d_atoll='$d_atoll'
16539 d_attribut='$d_attribut'
16540 d_bcmp='$d_bcmp'
16541 d_bcopy='$d_bcopy'
16542 d_bincompat5005='$d_bincompat5005'
16543 d_bsd='$d_bsd'
16544 d_bsdgetpgrp='$d_bsdgetpgrp'
16545 d_bsdsetpgrp='$d_bsdsetpgrp'
16546 d_bzero='$d_bzero'
16547 d_casti32='$d_casti32'
16548 d_castneg='$d_castneg'
16549 d_charvspr='$d_charvspr'
16550 d_chown='$d_chown'
16551 d_chroot='$d_chroot'
16552 d_chsize='$d_chsize'
16553 d_closedir='$d_closedir'
16554 d_cmsghdr_s='$d_cmsghdr_s'
16555 d_const='$d_const'
16556 d_crypt='$d_crypt'
16557 d_csh='$d_csh'
16558 d_cuserid='$d_cuserid'
16559 d_dbl_dig='$d_dbl_dig'
16560 d_dbminitproto='$d_dbminitproto'
16561 d_difftime='$d_difftime'
16562 d_dirnamlen='$d_dirnamlen'
16563 d_dlerror='$d_dlerror'
16564 d_dlopen='$d_dlopen'
16565 d_dlsymun='$d_dlsymun'
16566 d_dosuid='$d_dosuid'
16567 d_drand48proto='$d_drand48proto'
16568 d_dup2='$d_dup2'
16569 d_eaccess='$d_eaccess'
16570 d_endgrent='$d_endgrent'
16571 d_endhent='$d_endhent'
16572 d_endnent='$d_endnent'
16573 d_endpent='$d_endpent'
16574 d_endpwent='$d_endpwent'
16575 d_endsent='$d_endsent'
16576 d_eofnblk='$d_eofnblk'
16577 d_eunice='$d_eunice'
16578 d_fchmod='$d_fchmod'
16579 d_fchown='$d_fchown'
16580 d_fcntl='$d_fcntl'
16581 d_fcntl_can_lock='$d_fcntl_can_lock'
16582 d_fd_macros='$d_fd_macros'
16583 d_fd_set='$d_fd_set'
16584 d_fds_bits='$d_fds_bits'
16585 d_fgetpos='$d_fgetpos'
16586 d_flexfnam='$d_flexfnam'
16587 d_flock='$d_flock'
16588 d_flockproto='$d_flockproto'
16589 d_fork='$d_fork'
16590 d_fpathconf='$d_fpathconf'
16591 d_fpos64_t='$d_fpos64_t'
16592 d_frexpl='$d_frexpl'
16593 d_fs_data_s='$d_fs_data_s'
16594 d_fseeko='$d_fseeko'
16595 d_fsetpos='$d_fsetpos'
16596 d_fstatfs='$d_fstatfs'
16597 d_fstatvfs='$d_fstatvfs'
16598 d_fsync='$d_fsync'
16599 d_ftello='$d_ftello'
16600 d_ftime='$d_ftime'
16601 d_getcwd='$d_getcwd'
16602 d_getespwnam='$d_getespwnam'
16603 d_getfsstat='$d_getfsstat'
16604 d_getgrent='$d_getgrent'
16605 d_getgrps='$d_getgrps'
16606 d_gethbyaddr='$d_gethbyaddr'
16607 d_gethbyname='$d_gethbyname'
16608 d_gethent='$d_gethent'
16609 d_gethname='$d_gethname'
16610 d_gethostprotos='$d_gethostprotos'
16611 d_getitimer='$d_getitimer'
16612 d_getlogin='$d_getlogin'
16613 d_getmnt='$d_getmnt'
16614 d_getmntent='$d_getmntent'
16615 d_getnbyaddr='$d_getnbyaddr'
16616 d_getnbyname='$d_getnbyname'
16617 d_getnent='$d_getnent'
16618 d_getnetprotos='$d_getnetprotos'
16619 d_getpagsz='$d_getpagsz'
16620 d_getpbyname='$d_getpbyname'
16621 d_getpbynumber='$d_getpbynumber'
16622 d_getpent='$d_getpent'
16623 d_getpgid='$d_getpgid'
16624 d_getpgrp2='$d_getpgrp2'
16625 d_getpgrp='$d_getpgrp'
16626 d_getppid='$d_getppid'
16627 d_getprior='$d_getprior'
16628 d_getprotoprotos='$d_getprotoprotos'
16629 d_getprpwnam='$d_getprpwnam'
16630 d_getpwent='$d_getpwent'
16631 d_getsbyname='$d_getsbyname'
16632 d_getsbyport='$d_getsbyport'
16633 d_getsent='$d_getsent'
16634 d_getservprotos='$d_getservprotos'
16635 d_getspnam='$d_getspnam'
16636 d_gettimeod='$d_gettimeod'
16637 d_gnulibc='$d_gnulibc'
16638 d_grpasswd='$d_grpasswd'
16639 d_hasmntopt='$d_hasmntopt'
16640 d_htonl='$d_htonl'
16641 d_iconv='$d_iconv'
16642 d_index='$d_index'
16643 d_inetaton='$d_inetaton'
16644 d_int64_t='$d_int64_t'
16645 d_isascii='$d_isascii'
16646 d_isnan='$d_isnan'
16647 d_isnanl='$d_isnanl'
16648 d_killpg='$d_killpg'
16649 d_lchown='$d_lchown'
16650 d_ldbl_dig='$d_ldbl_dig'
16651 d_link='$d_link'
16652 d_locconv='$d_locconv'
16653 d_lockf='$d_lockf'
16654 d_longdbl='$d_longdbl'
16655 d_longlong='$d_longlong'
16656 d_lseekproto='$d_lseekproto'
16657 d_lstat='$d_lstat'
16658 d_madvise='$d_madvise'
16659 d_mblen='$d_mblen'
16660 d_mbstowcs='$d_mbstowcs'
16661 d_mbtowc='$d_mbtowc'
16662 d_memchr='$d_memchr'
16663 d_memcmp='$d_memcmp'
16664 d_memcpy='$d_memcpy'
16665 d_memmove='$d_memmove'
16666 d_memset='$d_memset'
16667 d_mkdir='$d_mkdir'
16668 d_mkdtemp='$d_mkdtemp'
16669 d_mkfifo='$d_mkfifo'
16670 d_mkstemp='$d_mkstemp'
16671 d_mkstemps='$d_mkstemps'
16672 d_mktime='$d_mktime'
16673 d_mmap='$d_mmap'
16674 d_modfl='$d_modfl'
16675 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16676 d_mprotect='$d_mprotect'
16677 d_msg='$d_msg'
16678 d_msg_ctrunc='$d_msg_ctrunc'
16679 d_msg_dontroute='$d_msg_dontroute'
16680 d_msg_oob='$d_msg_oob'
16681 d_msg_peek='$d_msg_peek'
16682 d_msg_proxy='$d_msg_proxy'
16683 d_msgctl='$d_msgctl'
16684 d_msgget='$d_msgget'
16685 d_msghdr_s='$d_msghdr_s'
16686 d_msgrcv='$d_msgrcv'
16687 d_msgsnd='$d_msgsnd'
16688 d_msync='$d_msync'
16689 d_munmap='$d_munmap'
16690 d_mymalloc='$d_mymalloc'
16691 d_nice='$d_nice'
16692 d_nv_preserves_uv='$d_nv_preserves_uv'
16693 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16694 d_off64_t='$d_off64_t'
16695 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16696 d_oldpthreads='$d_oldpthreads'
16697 d_oldsock='$d_oldsock'
16698 d_open3='$d_open3'
16699 d_pathconf='$d_pathconf'
16700 d_pause='$d_pause'
16701 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16702 d_phostname='$d_phostname'
16703 d_pipe='$d_pipe'
16704 d_poll='$d_poll'
16705 d_portable='$d_portable'
16706 d_pthread_yield='$d_pthread_yield'
16707 d_pwage='$d_pwage'
16708 d_pwchange='$d_pwchange'
16709 d_pwclass='$d_pwclass'
16710 d_pwcomment='$d_pwcomment'
16711 d_pwexpire='$d_pwexpire'
16712 d_pwgecos='$d_pwgecos'
16713 d_pwpasswd='$d_pwpasswd'
16714 d_pwquota='$d_pwquota'
16715 d_qgcvt='$d_qgcvt'
16716 d_quad='$d_quad'
16717 d_readdir='$d_readdir'
16718 d_readlink='$d_readlink'
16719 d_readv='$d_readv'
16720 d_realpath='$d_realpath'
16721 d_recvmsg='$d_recvmsg'
16722 d_rename='$d_rename'
16723 d_rewinddir='$d_rewinddir'
16724 d_rmdir='$d_rmdir'
16725 d_safebcpy='$d_safebcpy'
16726 d_safemcpy='$d_safemcpy'
16727 d_sanemcmp='$d_sanemcmp'
16728 d_sbrkproto='$d_sbrkproto'
16729 d_sched_yield='$d_sched_yield'
16730 d_scm_rights='$d_scm_rights'
16731 d_seekdir='$d_seekdir'
16732 d_select='$d_select'
16733 d_sem='$d_sem'
16734 d_semctl='$d_semctl'
16735 d_semctl_semid_ds='$d_semctl_semid_ds'
16736 d_semctl_semun='$d_semctl_semun'
16737 d_semget='$d_semget'
16738 d_semop='$d_semop'
16739 d_sendmsg='$d_sendmsg'
16740 d_setegid='$d_setegid'
16741 d_seteuid='$d_seteuid'
16742 d_setgrent='$d_setgrent'
16743 d_setgrps='$d_setgrps'
16744 d_sethent='$d_sethent'
16745 d_setitimer='$d_setitimer'
16746 d_setlinebuf='$d_setlinebuf'
16747 d_setlocale='$d_setlocale'
16748 d_setnent='$d_setnent'
16749 d_setpent='$d_setpent'
16750 d_setpgid='$d_setpgid'
16751 d_setpgrp2='$d_setpgrp2'
16752 d_setpgrp='$d_setpgrp'
16753 d_setprior='$d_setprior'
16754 d_setproctitle='$d_setproctitle'
16755 d_setpwent='$d_setpwent'
16756 d_setregid='$d_setregid'
16757 d_setresgid='$d_setresgid'
16758 d_setresuid='$d_setresuid'
16759 d_setreuid='$d_setreuid'
16760 d_setrgid='$d_setrgid'
16761 d_setruid='$d_setruid'
16762 d_setsent='$d_setsent'
16763 d_setsid='$d_setsid'
16764 d_setvbuf='$d_setvbuf'
16765 d_sfio='$d_sfio'
16766 d_shm='$d_shm'
16767 d_shmat='$d_shmat'
16768 d_shmatprototype='$d_shmatprototype'
16769 d_shmctl='$d_shmctl'
16770 d_shmdt='$d_shmdt'
16771 d_shmget='$d_shmget'
16772 d_sigaction='$d_sigaction'
16773 d_sigprocmask='$d_sigprocmask'
16774 d_sigsetjmp='$d_sigsetjmp'
16775 d_sockatmark='$d_sockatmark'
16776 d_sockatmarkproto='$d_sockatmarkproto'
16777 d_socket='$d_socket'
16778 d_socklen_t='$d_socklen_t'
16779 d_sockpair='$d_sockpair'
16780 d_socks5_init='$d_socks5_init'
16781 d_sqrtl='$d_sqrtl'
16782 d_sresgproto='$d_sresgproto'
16783 d_sresuproto='$d_sresuproto'
16784 d_statblks='$d_statblks'
16785 d_statfs_f_flags='$d_statfs_f_flags'
16786 d_statfs_s='$d_statfs_s'
16787 d_statvfs='$d_statvfs'
16788 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16789 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16790 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16791 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16792 d_stdio_stream_array='$d_stdio_stream_array'
16793 d_stdiobase='$d_stdiobase'
16794 d_stdstdio='$d_stdstdio'
16795 d_strchr='$d_strchr'
16796 d_strcoll='$d_strcoll'
16797 d_strctcpy='$d_strctcpy'
16798 d_strerrm='$d_strerrm'
16799 d_strerror='$d_strerror'
16800 d_strftime='$d_strftime'
16801 d_strtod='$d_strtod'
16802 d_strtol='$d_strtol'
16803 d_strtold='$d_strtold'
16804 d_strtoll='$d_strtoll'
16805 d_strtoq='$d_strtoq'
16806 d_strtoul='$d_strtoul'
16807 d_strtoull='$d_strtoull'
16808 d_strtouq='$d_strtouq'
16809 d_strxfrm='$d_strxfrm'
16810 d_suidsafe='$d_suidsafe'
16811 d_symlink='$d_symlink'
16812 d_syscall='$d_syscall'
16813 d_syscallproto='$d_syscallproto'
16814 d_sysconf='$d_sysconf'
16815 d_sysernlst='$d_sysernlst'
16816 d_syserrlst='$d_syserrlst'
16817 d_system='$d_system'
16818 d_tcgetpgrp='$d_tcgetpgrp'
16819 d_tcsetpgrp='$d_tcsetpgrp'
16820 d_telldir='$d_telldir'
16821 d_telldirproto='$d_telldirproto'
16822 d_time='$d_time'
16823 d_times='$d_times'
16824 d_truncate='$d_truncate'
16825 d_tzname='$d_tzname'
16826 d_u32align='$d_u32align'
16827 d_ualarm='$d_ualarm'
16828 d_umask='$d_umask'
16829 d_uname='$d_uname'
16830 d_union_semun='$d_union_semun'
16831 d_usleep='$d_usleep'
16832 d_usleepproto='$d_usleepproto'
16833 d_ustat='$d_ustat'
16834 d_vendorarch='$d_vendorarch'
16835 d_vendorbin='$d_vendorbin'
16836 d_vendorlib='$d_vendorlib'
16837 d_vfork='$d_vfork'
16838 d_void_closedir='$d_void_closedir'
16839 d_voidsig='$d_voidsig'
16840 d_voidtty='$d_voidtty'
16841 d_volatile='$d_volatile'
16842 d_vprintf='$d_vprintf'
16843 d_wait4='$d_wait4'
16844 d_waitpid='$d_waitpid'
16845 d_wcstombs='$d_wcstombs'
16846 d_wctomb='$d_wctomb'
16847 d_writev='$d_writev'
16848 d_xenix='$d_xenix'
16849 date='$date'
16850 db_hashtype='$db_hashtype'
16851 db_prefixtype='$db_prefixtype'
16852 db_version_major='$db_version_major'
16853 db_version_minor='$db_version_minor'
16854 db_version_patch='$db_version_patch'
16855 defvoidused='$defvoidused'
16856 direntrytype='$direntrytype'
16857 dlext='$dlext'
16858 dlsrc='$dlsrc'
16859 doublesize='$doublesize'
16860 drand01='$drand01'
16861 dynamic_ext='$dynamic_ext'
16862 eagain='$eagain'
16863 ebcdic='$ebcdic'
16864 echo='$echo'
16865 egrep='$egrep'
16866 emacs='$emacs'
16867 eunicefix='$eunicefix'
16868 exe_ext='$exe_ext'
16869 expr='$expr'
16870 extensions='$extensions'
16871 fflushNULL='$fflushNULL'
16872 fflushall='$fflushall'
16873 find='$find'
16874 firstmakefile='$firstmakefile'
16875 flex='$flex'
16876 fpossize='$fpossize'
16877 fpostype='$fpostype'
16878 freetype='$freetype'
16879 from='$from'
16880 full_ar='$full_ar'
16881 full_csh='$full_csh'
16882 full_sed='$full_sed'
16883 gccosandvers='$gccosandvers'
16884 gccversion='$gccversion'
16885 gidformat='$gidformat'
16886 gidsign='$gidsign'
16887 gidsize='$gidsize'
16888 gidtype='$gidtype'
16889 glibpth='$glibpth'
16890 grep='$grep'
16891 groupcat='$groupcat'
16892 groupstype='$groupstype'
16893 gzip='$gzip'
16894 h_fcntl='$h_fcntl'
16895 h_sysfile='$h_sysfile'
16896 hint='$hint'
16897 hostcat='$hostcat'
16898 i16size='$i16size'
16899 i16type='$i16type'
16900 i32size='$i32size'
16901 i32type='$i32type'
16902 i64size='$i64size'
16903 i64type='$i64type'
16904 i8size='$i8size'
16905 i8type='$i8type'
16906 i_arpainet='$i_arpainet'
16907 i_bsdioctl='$i_bsdioctl'
16908 i_db='$i_db'
16909 i_dbm='$i_dbm'
16910 i_dirent='$i_dirent'
16911 i_dld='$i_dld'
16912 i_dlfcn='$i_dlfcn'
16913 i_fcntl='$i_fcntl'
16914 i_float='$i_float'
16915 i_gdbm='$i_gdbm'
16916 i_grp='$i_grp'
16917 i_iconv='$i_iconv'
16918 i_ieeefp='$i_ieeefp'
16919 i_inttypes='$i_inttypes'
16920 i_libutil='$i_libutil'
16921 i_limits='$i_limits'
16922 i_locale='$i_locale'
16923 i_machcthr='$i_machcthr'
16924 i_malloc='$i_malloc'
16925 i_math='$i_math'
16926 i_memory='$i_memory'
16927 i_mntent='$i_mntent'
16928 i_ndbm='$i_ndbm'
16929 i_netdb='$i_netdb'
16930 i_neterrno='$i_neterrno'
16931 i_netinettcp='$i_netinettcp'
16932 i_niin='$i_niin'
16933 i_poll='$i_poll'
16934 i_prot='$i_prot'
16935 i_pthread='$i_pthread'
16936 i_pwd='$i_pwd'
16937 i_rpcsvcdbm='$i_rpcsvcdbm'
16938 i_sfio='$i_sfio'
16939 i_sgtty='$i_sgtty'
16940 i_shadow='$i_shadow'
16941 i_socks='$i_socks'
16942 i_stdarg='$i_stdarg'
16943 i_stddef='$i_stddef'
16944 i_stdlib='$i_stdlib'
16945 i_string='$i_string'
16946 i_sunmath='$i_sunmath'
16947 i_sysaccess='$i_sysaccess'
16948 i_sysdir='$i_sysdir'
16949 i_sysfile='$i_sysfile'
16950 i_sysfilio='$i_sysfilio'
16951 i_sysin='$i_sysin'
16952 i_sysioctl='$i_sysioctl'
16953 i_syslog='$i_syslog'
16954 i_sysmman='$i_sysmman'
16955 i_sysmode='$i_sysmode'
16956 i_sysmount='$i_sysmount'
16957 i_sysndir='$i_sysndir'
16958 i_sysparam='$i_sysparam'
16959 i_sysresrc='$i_sysresrc'
16960 i_syssecrt='$i_syssecrt'
16961 i_sysselct='$i_sysselct'
16962 i_syssockio='$i_syssockio'
16963 i_sysstat='$i_sysstat'
16964 i_sysstatfs='$i_sysstatfs'
16965 i_sysstatvfs='$i_sysstatvfs'
16966 i_systime='$i_systime'
16967 i_systimek='$i_systimek'
16968 i_systimes='$i_systimes'
16969 i_systypes='$i_systypes'
16970 i_sysuio='$i_sysuio'
16971 i_sysun='$i_sysun'
16972 i_sysutsname='$i_sysutsname'
16973 i_sysvfs='$i_sysvfs'
16974 i_syswait='$i_syswait'
16975 i_termio='$i_termio'
16976 i_termios='$i_termios'
16977 i_time='$i_time'
16978 i_unistd='$i_unistd'
16979 i_ustat='$i_ustat'
16980 i_utime='$i_utime'
16981 i_values='$i_values'
16982 i_varargs='$i_varargs'
16983 i_varhdr='$i_varhdr'
16984 i_vfork='$i_vfork'
16985 ignore_versioned_solibs='$ignore_versioned_solibs'
16986 inc_version_list='$inc_version_list'
16987 inc_version_list_init='$inc_version_list_init'
16988 incpath='$incpath'
16989 inews='$inews'
16990 installarchlib='$installarchlib'
16991 installbin='$installbin'
16992 installman1dir='$installman1dir'
16993 installman3dir='$installman3dir'
16994 installprefix='$installprefix'
16995 installprefixexp='$installprefixexp'
16996 installprivlib='$installprivlib'
16997 installscript='$installscript'
16998 installsitearch='$installsitearch'
16999 installsitebin='$installsitebin'
17000 installsitelib='$installsitelib'
17001 installstyle='$installstyle'
17002 installusrbinperl='$installusrbinperl'
17003 installvendorarch='$installvendorarch'
17004 installvendorbin='$installvendorbin'
17005 installvendorlib='$installvendorlib'
17006 intsize='$intsize'
17007 issymlink='$issymlink'
17008 ivdformat='$ivdformat'
17009 ivsize='$ivsize'
17010 ivtype='$ivtype'
17011 known_extensions='$known_extensions'
17012 ksh='$ksh'
17013 ld='$ld'
17014 lddlflags='$lddlflags'
17015 ldflags='$ldflags'
17016 ldflags_uselargefiles='$ldflags_uselargefiles'
17017 ldlibpthname='$ldlibpthname'
17018 less='$less'
17019 lib_ext='$lib_ext'
17020 libc='$libc'
17021 libperl='$libperl'
17022 libpth='$libpth'
17023 libs='$libs'
17024 libsdirs='$libsdirs'
17025 libsfiles='$libsfiles'
17026 libsfound='$libsfound'
17027 libspath='$libspath'
17028 libswanted='$libswanted'
17029 libswanted_uselargefiles='$libswanted_uselargefiles'
17030 line='$line'
17031 lint='$lint'
17032 lkflags='$lkflags'
17033 ln='$ln'
17034 lns='$lns'
17035 locincpth='$locincpth'
17036 loclibpth='$loclibpth'
17037 longdblsize='$longdblsize'
17038 longlongsize='$longlongsize'
17039 longsize='$longsize'
17040 lp='$lp'
17041 lpr='$lpr'
17042 ls='$ls'
17043 lseeksize='$lseeksize'
17044 lseektype='$lseektype'
17045 mail='$mail'
17046 mailx='$mailx'
17047 make='$make'
17048 make_set_make='$make_set_make'
17049 mallocobj='$mallocobj'
17050 mallocsrc='$mallocsrc'
17051 malloctype='$malloctype'
17052 man1dir='$man1dir'
17053 man1direxp='$man1direxp'
17054 man1ext='$man1ext'
17055 man3dir='$man3dir'
17056 man3direxp='$man3direxp'
17057 man3ext='$man3ext'
17058 mips_type='$mips_type'
17059 mkdir='$mkdir'
17060 mmaptype='$mmaptype'
17061 modetype='$modetype'
17062 more='$more'
17063 multiarch='$multiarch'
17064 mv='$mv'
17065 myarchname='$myarchname'
17066 mydomain='$mydomain'
17067 myhostname='$myhostname'
17068 myuname='$myuname'
17069 n='$n'
17070 need_va_copy='$need_va_copy'
17071 netdb_hlen_type='$netdb_hlen_type'
17072 netdb_host_type='$netdb_host_type'
17073 netdb_name_type='$netdb_name_type'
17074 netdb_net_type='$netdb_net_type'
17075 nm='$nm'
17076 nm_opt='$nm_opt'
17077 nm_so_opt='$nm_so_opt'
17078 nonxs_ext='$nonxs_ext'
17079 nroff='$nroff'
17080 nvEUformat='$nvEUformat'
17081 nvFUformat='$nvFUformat'
17082 nvGUformat='$nvGUformat'
17083 nveformat='$nveformat'
17084 nvfformat='$nvfformat'
17085 nvgformat='$nvgformat'
17086 nvsize='$nvsize'
17087 nvtype='$nvtype'
17088 o_nonblock='$o_nonblock'
17089 obj_ext='$obj_ext'
17090 old_pthread_create_joinable='$old_pthread_create_joinable'
17091 optimize='$optimize'
17092 orderlib='$orderlib'
17093 osname='$osname'
17094 osvers='$osvers'
17095 otherlibdirs='$otherlibdirs'
17096 package='$package'
17097 pager='$pager'
17098 passcat='$passcat'
17099 patchlevel='$patchlevel'
17100 path_sep='$path_sep'
17101 perl5='$perl5'
17102 perl='$perl'
17103 perl_patchlevel='$perl_patchlevel'
17104 perladmin='$perladmin'
17105 perllibs='$perllibs'
17106 perlpath='$perlpath'
17107 pg='$pg'
17108 phostname='$phostname'
17109 pidtype='$pidtype'
17110 plibpth='$plibpth'
17111 pm_apiversion='$pm_apiversion'
17112 pmake='$pmake'
17113 pr='$pr'
17114 prefix='$prefix'
17115 prefixexp='$prefixexp'
17116 privlib='$privlib'
17117 privlibexp='$privlibexp'
17118 prototype='$prototype'
17119 ptrsize='$ptrsize'
17120 quadkind='$quadkind'
17121 quadtype='$quadtype'
17122 randbits='$randbits'
17123 randfunc='$randfunc'
17124 randseedtype='$randseedtype'
17125 ranlib='$ranlib'
17126 rd_nodata='$rd_nodata'
17127 revision='$revision'
17128 rm='$rm'
17129 rmail='$rmail'
17130 run='$run'
17131 runnm='$runnm'
17132 sPRIEUldbl='$sPRIEUldbl'
17133 sPRIFUldbl='$sPRIFUldbl'
17134 sPRIGUldbl='$sPRIGUldbl'
17135 sPRIXU64='$sPRIXU64'
17136 sPRId64='$sPRId64'
17137 sPRIeldbl='$sPRIeldbl'
17138 sPRIfldbl='$sPRIfldbl'
17139 sPRIgldbl='$sPRIgldbl'
17140 sPRIi64='$sPRIi64'
17141 sPRIo64='$sPRIo64'
17142 sPRIu64='$sPRIu64'
17143 sPRIx64='$sPRIx64'
17144 sSCNfldbl='$sSCNfldbl'
17145 sched_yield='$sched_yield'
17146 scriptdir='$scriptdir'
17147 scriptdirexp='$scriptdirexp'
17148 sed='$sed'
17149 seedfunc='$seedfunc'
17150 selectminbits='$selectminbits'
17151 selecttype='$selecttype'
17152 sendmail='$sendmail'
17153 sh='$sh'
17154 shar='$shar'
17155 sharpbang='$sharpbang'
17156 shmattype='$shmattype'
17157 shortsize='$shortsize'
17158 shrpenv='$shrpenv'
17159 shsharp='$shsharp'
17160 sig_count='$sig_count'
17161 sig_name='$sig_name'
17162 sig_name_init='$sig_name_init'
17163 sig_num='$sig_num'
17164 sig_num_init='$sig_num_init'
17165 sig_size='$sig_size'
17166 signal_t='$signal_t'
17167 sitearch='$sitearch'
17168 sitearchexp='$sitearchexp'
17169 sitebin='$sitebin'
17170 sitebinexp='$sitebinexp'
17171 sitelib='$sitelib'
17172 sitelib_stem='$sitelib_stem'
17173 sitelibexp='$sitelibexp'
17174 siteprefix='$siteprefix'
17175 siteprefixexp='$siteprefixexp'
17176 sizesize='$sizesize'
17177 sizetype='$sizetype'
17178 sleep='$sleep'
17179 smail='$smail'
17180 so='$so'
17181 sockethdr='$sockethdr'
17182 socketlib='$socketlib'
17183 socksizetype='$socksizetype'
17184 sort='$sort'
17185 spackage='$spackage'
17186 spitshell='$spitshell'
17187 src='$src'
17188 ssizetype='$ssizetype'
17189 startperl='$startperl'
17190 startsh='$startsh'
17191 static_ext='$static_ext'
17192 stdchar='$stdchar'
17193 stdio_base='$stdio_base'
17194 stdio_bufsiz='$stdio_bufsiz'
17195 stdio_cnt='$stdio_cnt'
17196 stdio_filbuf='$stdio_filbuf'
17197 stdio_ptr='$stdio_ptr'
17198 stdio_stream_array='$stdio_stream_array'
17199 strings='$strings'
17200 submit='$submit'
17201 subversion='$subversion'
17202 sysman='$sysman'
17203 tail='$tail'
17204 tar='$tar'
17205 targetarch='$targetarch'
17206 tbl='$tbl'
17207 tee='$tee'
17208 test='$test'
17209 timeincl='$timeincl'
17210 timetype='$timetype'
17211 to='$to'
17212 touch='$touch'
17213 tr='$tr'
17214 trnl='$trnl'
17215 troff='$troff'
17216 u16size='$u16size'
17217 u16type='$u16type'
17218 u32size='$u32size'
17219 u32type='$u32type'
17220 u64size='$u64size'
17221 u64type='$u64type'
17222 u8size='$u8size'
17223 u8type='$u8type'
17224 uidformat='$uidformat'
17225 uidsign='$uidsign'
17226 uidsize='$uidsize'
17227 uidtype='$uidtype'
17228 uname='$uname'
17229 uniq='$uniq'
17230 uquadtype='$uquadtype'
17231 use5005threads='$use5005threads'
17232 use64bitall='$use64bitall'
17233 use64bitint='$use64bitint'
17234 usecrosscompile='$usecrosscompile'
17235 usedl='$usedl'
17236 useithreads='$useithreads'
17237 uselargefiles='$uselargefiles'
17238 uselongdouble='$uselongdouble'
17239 usemorebits='$usemorebits'
17240 usemultiplicity='$usemultiplicity'
17241 usemymalloc='$usemymalloc'
17242 usenm='$usenm'
17243 useopcode='$useopcode'
17244 useperlio='$useperlio'
17245 useposix='$useposix'
17246 usereentrant='$usereentrant'
17247 usesfio='$usesfio'
17248 useshrplib='$useshrplib'
17249 usesocks='$usesocks'
17250 usethreads='$usethreads'
17251 usevendorprefix='$usevendorprefix'
17252 usevfork='$usevfork'
17253 usrinc='$usrinc'
17254 uuname='$uuname'
17255 uvXUformat='$uvXUformat'
17256 uvoformat='$uvoformat'
17257 uvsize='$uvsize'
17258 uvtype='$uvtype'
17259 uvuformat='$uvuformat'
17260 uvxformat='$uvxformat'
17261 vendorarch='$vendorarch'
17262 vendorarchexp='$vendorarchexp'
17263 vendorbin='$vendorbin'
17264 vendorbinexp='$vendorbinexp'
17265 vendorlib='$vendorlib'
17266 vendorlib_stem='$vendorlib_stem'
17267 vendorlibexp='$vendorlibexp'
17268 vendorprefix='$vendorprefix'
17269 vendorprefixexp='$vendorprefixexp'
17270 version='$version'
17271 versiononly='$versiononly'
17272 vi='$vi'
17273 voidflags='$voidflags'
17274 xlibpth='$xlibpth'
17275 xs_apiversion='$xs_apiversion'
17276 yacc='$yacc'
17277 yaccflags='$yaccflags'
17278 zcat='$zcat'
17279 zip='$zip'
17280 EOT
17281
17282 : Add in command line options if available
17283 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17284
17285 : add special variables
17286 $test -f $src/patchlevel.h && \
17287 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17288 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17289 echo "PERL_CONFIG_SH=true" >>config.sh
17290
17291 : propagate old symbols
17292 if $test -f UU/config.sh; then
17293         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17294         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17295         $sort | $uniq -u >UU/oldsyms
17296         set X `cat UU/oldsyms`
17297         shift
17298         case $# in
17299         0) ;;
17300         *)
17301                 cat <<EOM
17302 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17303 EOM
17304                 echo "# Variables propagated from previous config.sh file." >>config.sh
17305                 for sym in `cat UU/oldsyms`; do
17306                         echo "    Propagating $hint variable "'$'"$sym..."
17307                         eval 'tmp="$'"${sym}"'"'
17308                         echo "$tmp" | \
17309                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17310                 done
17311                 ;;
17312         esac
17313 fi
17314
17315 : Finish up by extracting the .SH files
17316 case "$alldone" in
17317 exit)
17318         $rm -rf UU
17319         echo "Extraction done."
17320         exit 0
17321         ;;
17322 cont)
17323         ;;
17324 '')
17325         dflt=''
17326         nostick=true
17327         $cat <<EOM
17328
17329 If you'd like to make any changes to the config.sh file before I begin
17330 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17331
17332 EOM
17333         rp="Press return or use a shell escape to edit config.sh:"
17334         . UU/myread
17335         nostick=''
17336         case "$ans" in
17337         '') ;;
17338         *) : in case they cannot read
17339                 sh 1>&4 -c "$ans";;
17340         esac
17341         ;;
17342 esac
17343
17344 : if this fails, just run all the .SH files by hand
17345 . ./config.sh
17346
17347 echo " "
17348 exec 1>&4
17349 pwd=`pwd`
17350 . ./UU/extract
17351 cd $pwd
17352
17353 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17354         dflt=y
17355         case "$silent" in
17356         true) ;;
17357         *)
17358                 $cat <<EOM
17359
17360 Now you need to generate make dependencies by running "$make depend".
17361 You might prefer to run it in background: "$make depend > makedepend.out &"
17362 It can take a while, so you might not want to run it right now.
17363
17364 EOM
17365                 ;;
17366         esac
17367         rp="Run $make depend now?"
17368         . UU/myread
17369         case "$ans" in
17370         y*)
17371                 $make depend && echo "Now you must run '$make'."
17372                 ;;
17373         *)
17374                 echo "You must run '$make depend' then '$make'."
17375                 ;;
17376         esac
17377 elif test -f [Mm]akefile; then
17378         echo " "
17379         echo "Now you must run a $make."
17380 else
17381         echo "Configure done."
17382 fi
17383
17384 if $test -f Policy.sh; then
17385     $cat <<EOM
17386
17387 If you compile $package on a different machine or from a different object
17388 directory, copy the Policy.sh file from this object directory to the
17389 new one before you run Configure -- this will help you with most of
17390 the policy defaults.
17391
17392 EOM
17393 fi
17394 if $test -f config.msg; then
17395     echo "Hmm.  I also noted the following information while running:"
17396     echo " "
17397     $cat config.msg >&4
17398     $rm -f config.msg
17399 fi
17400 $rm -f kit*isdone ark*isdone
17401 $rm -rf UU
17402
17403 : End of Configure
17404